Monitorez vos serveurs avec Grafana! Choix des outils
2018-10-23 | Loïc BOURG
Cet article est le premier d'une série de trois articles à propos du monitoring avec grafana.
Les liens vers les articles suivants se trouveront ici lorsqu'ils seront publiés.
Notre besoin
Une fois nos applications en production, il est important de nous assurer que les serveurs qui les hébergent n'ont pas de problèmes critiques (disque dur bientôt plein, utilisation critique de la mémoire RAM, ...)
Il y a un an, nous utilisions la partie gratuite de new relic server, mais celle ci a été remplacée par le service payant new relic alerts
Le soucis n'était pas que la solution devienne payante, nous étions prêt à payer pour ce service, mais le prix du monitoring était devenu vraiment élevé:
Nous avons actuellement une trentaine de machines chez OVH, ce qui nous aurait fait payer 216 $ par mois pour uniquement utiliser la fonctionnalité d'alerting du produit.
Nous avons donc décidé de changer le système de monitoring avec ces objectifs en tête:
- Technologie open source
- Solution SaaS (pour de ne pas avoir à monitorer le système de monitoring)
- Ne pas avoir de prix par machine
- Recevoir les notifications d'alertes sur un channel Slack
- Création des alertes automatisables
Choix des outils
Nous avions le choix entre deux outils: Nagios et Grafana
Les deux outils sont assez différents mais fournissent tous les deux une possibilité d'alerting, ce qui nous intéresse dans notre cas.
Après quelques recherches nous n'avons pas trouvé de solution en SaaS de Nagios nous paraissant satisfaisante, nous nous sommes donc tournés vers Grafana.
Pour avoir un Grafana fonctionnel, il nous a fallu choisir trois éléments:
- L'hébergeur SaaS pour Grafana
- Une base de données time series en SaaS à laquelle se connectera le Grafana pour lancer les alertes et afficher les graphiques
- Un agent de collecte de données à installer sur les serveurs pour envoyer les métriques à la base de données time series
Grafana
Grafana est un outil d'analyse et de surveillance de métriques. Il permet d'afficher des graphiques avec les données d'une ou plusieurs bases de données et d'alerter en cas de métriques critiques.
Un des avantages de cet outil est qu'il peut se brancher à de nombreuses sources de données différentes.
Choix de l'hébergement
Pour le hosting de grafana nous avions trois choix:
Pour rappel nous avons une trentaine de serveurs, si nous voulons alerter sur 3 métriques (utilisation disque, utilisation RAM, utilisation processeur)
sur chaque serveur, il nous faut 90 alertes au total.
Cela nous donne les prix suivants:
- hosted Graphite: 255 $ par mois, mais peut très vite monter à 1050 $ par mois en ajoutant quelques serveurs
- Grafana Cloud: 40 $ par mois
- Ovh Metrics Data Platorm: pas d'alerte via grafana (désactivé sur l'interface)
Vu la différence de prix, nous avons décidé de partir sur Grafana cloud, qui a également l'avantage d'être géré par la même entreprise qui maintient Grafana.
Base de données time series
Son but est de stocker des séries temporelles.
Par exemple dans notre cas d'usage, une des séries temporelles à stocker est le pourcentage d'utilisation du disque à une date donnée.
Choix de la base de données time series et de l'hébergement
Il existe de nombreuses base de données time series, les plus populaires étant Graphite et InfluxDB.
Le pricing des bases de données time series en SaaS se fait principalement par le nombre de métriques différentes envoyées par mois et la durée de rétention. Nous avons calculé que nous enverrions environ 15 métriques par serveur donc 450 métriques différentes par mois.
Pour InfluxDB: le fournisseur SaaS que nous avons trouvé est Influx cloud
Le pricing qui nous intéresse est à 150 $ par mois
Il existe également Hosted Metrics
Le pricing qui nous intéresse n'est pas indiqué, mais le prix indiqué par mail était d'environ 90 $ par mois pour notre usage
Pour Graphite: le fournisseur SaaS que nous avons trouvé est hosted Graphite
Le pricing qui nous intéresse est à 25 $ par mois
Pour OpenTSDB: Ovh Metrics Data Platorm
le pricing qui nous intéresse est à 5 € par mois
à noter qu'il est également possible d'utiliser d'autres base de données time series sur Ovh, mais toutes les fonctionnalités ne sont pas implémentées.
Nous avons choisi OVH pour cette partie étant donné son faible prix, et également car nous sommes déja
utilisateur d'OVH pour la partie serveur.
Le fait que ce soit une entreprise française est également un plus !
Agent de collecte de données
Son role est de récupérer des métriques sur une machine et de les envoyer à une base de données.
Choix de l'agent
Telegraf est un agent de collecte de données écrit en Go.
Le fait qu'il soit écrit en Go est un gros avantage par rapport aux autres outils de ce type (collectd par exemple).
Il suffit de télécharger le binaire et de le lancer en démon sans se soucier des dépendances puisque celles ci sont toutes contenues dans le binaire.
La grande quantité de métriques différentes que l'agent est capable d'observer nous a également conforté dans ce choix.
Conclusion
Nous avons maintenant choisi tous les outils nécessaires à la mise en place du monitoring, nous verrons dans la deuxième partie comment les configurer !