Comparaison de Prometheus et TICK pour le monitoring d'une petite structure
Stagiaire chez Koumoul, j'ai travaillé sur la cherche d'une solution alternative de monitoring à celle déjà mise en place. Je me suis concentré sur deux solutions de monitoring en utilisant Docker.
L'une fonctionne en push et se base sur InfluxDB et d'autres services (stack TICK), l'autre en pull s'appelle Prométheus.
TICK
- T elegraf 1.2.1 : Collecte les métriques
- I nfluxDB 1.2.4 : Base de données des métriques
- C hronograf 1.3 : Visualisation des métriques
- K apacitor 1.2.1 : Managements des alertes
Prometheus
- NodeExporter 0.14.0 : Collecte les métriques
- Prometheus 1.6.1 : Base de données des métriques
- Grafana 4.2.0 : Visualisation des métriques
- AlertManager 0.6.2 : Managements des alertes
Il est possible de rajouter cAdvisor 0.24.1 pour la collecte des métriques des containers.
Grafana peut être aussi utilisé, à la place de Chronograf, pour visualiser le rendu graphique des métriques collectées dans InfluxDB.
Avant tout, il faut chercher de la documentations sur les deux solutions de monitoring.
Pour TICK, le site Influxdata est très bien fait, il y a une documentation complète, claire, structurée et par version.
Pour Prometheus, le site a une approche moins ludique. Le site est tout de même compréhensible, il y a même une comparaison entre Prometheus et ses concurrents.
En dehors des sites officiels, nous avons trouvés plus de documentations sur Prometheus que sur TICK. La communauté des deux solutions est réactive sur GitHub.
Collecte
Pour la collecte des metriques InfluxDB et Prometheus utilisent deux méthodes différentes Push (Pousser) et Pull (Tirer).
Dans InfluxDB, c'est la machine monitorée qui va envoyer les métriques vers la base de données. Dans Prometeus c'est le serveur qu'il faudra configurer pour aller tirer les données.
Dans les deux cas, il faudra configurer la machine monitorée soit pour donner le chemin de destination des données, soit pour ouvrir l’accès à Prometheus. Pour la méthode pull, toute personne, ayant les droits d’accès, peut aller chercher les données.
Base de données
C'est un aspect que nous n'avons pas vraiment exploré. Si on décide de réutiliser les données, InfluxDB semble être meilleure, pour le monitoring sur une petite structure, les deux bases de données semblent équivalentes.
InfluxDB supporte plusieurs types de data : int64, float64, bool, string data. Prometheus ne supporte que les float64.
Dans les versions plus récentes, InfluxDB à fait des améliorations dans son algorithme de compression des données, cependant les données d'InfluxDB prennent toujours plus d'espace.
Alertes
Il y a plusieurs choix pour recevoir les alertes pour chaque méthode de monitoring. Nous avons choisi de recevoir les alertes sur Slack et par e-mail.
Nous avons réalisé des docker-compose basé sur les différentes documentations trouvées, il a fallu aussi changer les différents .conf et .yml pour chaque solution.
La configuration de Prometheus nous a semblé plus facile. Les lignes à configurer et l'ajout d'alertes sont simples à trouver dans les différents fichiers .yml.
En ce qui concerne TICK,nous avons testé deux méthode, la méthode par commandes et la méthode graphique
Avec la méthode par commandes nous n'avons pas réussi à configurer les alertes, c'est un peu plus compliqué, il faut configurer un client Kapacitor. Ce client nous permet de configurer les taches qui correspondent à des alertes. Une fois le client configuré, il faut d'abord définir la tache (Kapacitor define) puis l'activer (kapacitor enable). Cette solution de configuration est plus lourde.
Avec la méthode graphique, il faut passer par le site de service de Chronograf (par defaut http://localhost:8888), puis il faut lier Kapacitor à Chronograf. Vous choisissez le type d'endpoint de l'alerte, votre host, vos variables, le message puis il faut activer l'alerte.
Rendus graphiques
Nous avons opté pour Grafana, Chronograf est tout de même en recul par rapport à Grafana. Chronograf est moins intuitif à configurer et les rendus sont moins clairs.
Pour Grafana, il existe différents templates (sous forme de .json) que l'on peut télecharger sur le site officiel et qui peuvent nous servir de base de travail pour nos rendus graphiques.
Les templates pour Prometheus sont plus clairs que pour InfluxDB.
Conclusion
En résumé, les deux solutions sont assez comparables pour une petite structure. Votre choix va surtout dépendre du feeling que vous avez en configurant les deux solutions.
InfluxDB et Prometheus peuvent tourner parallèlement et peuvent aussi interagir l'une avec l'autre. Dans les prochaines versions leur compatibilité sera encore ameliorée.
Nous avons trouvé Prometheus simple à configurer en passant par les fichiers de configuration, toute la configuration de Prometheus et des alertes peuvent être faite avec les fichiers YAML.
La configuration d'alertes de TICK est plus simple en passant par l'interface graphique que par les fichiers de commande.
Les rendus graphiques avec Grafana sont meilleurs et les templates téléchargeables sont plus complets avec Prometheus qu'avec InfluxDB.