
Cet article fait partie d’une série d’articles :
- Forger un cluster kubernetes dans son garage
- Préparation du déploiement des applications
- Déploiement Prometheus grafana dans Kubernetes
- Déploiement de notre première application
Nous allons nous baser sur kube-prometheus qui package le déploiement et la configuration automatique d’une stack Prometheus + Grafana qui est une stack standard dans l’industrie aujourd’hui.
1. La stack Prometheus + Grafana
a. Importance du monitoring
“Il n’y a pas de délégation sans contrôle”
Ce qui est souvent vrai pour les humains l’est encore plus pour les machines. Lorsqu’on fait tourner une application, Il est difficile de savoir ce qui s’y passe.
La première façon pour comprendre leur fonctionnement, ce sont les logs. A mon sens, l’immense problème des logs est leur volume. Si l’on n’y prend pas garde, le flux de logs peut devenir le flux le plus important d’une infrastructure et donc monopoliser une part trop importante des ressources d’une infrastructure de production.
La seconde méthode, qui selon moi est suffisante dans 95% des cas, ce sont les métriques. On stocke des valeurs numériques dans une base de données time series, ce qui prend beaucoup moins de place et offre de bien milleures capacités de recherche / traitement / correlation.
Les données sont stockées sous le format :
<timestamp> <tag> ... <tag> <valeur>
À un moment précis, une valeur, identifiée/triée avec des tags (pour reconnaître une ou plusieurs série de valeurs en filtrant sur ces tags)
Une fois stockées, ces données sont mises à disposition de toute application à même de les requêter.
b. Prometheus
Prometheus est, à la fois, une base de données de stockage de métriques, et un outil de collecte de ces données.
Ce n’est pas seulement une base de données, comme peut l’être influxdb par exemple. Prometheus va venir récupérer les données de n’importe quelle application capable d’exposer au format web un fichier texte de ce format :

Prometheus peut se connecter à diverses sources d’info (comme kubernetes par exemple) pour faire du discovery pour automatiquement trouver les applications exposant des métriques.
c. Grafana
Grafana est un outil de visualisation de ces métriques, offrant une interface simple pour créer des dashboards avec différents types de graphiques, tableaux, compteurs, qui permettent de visualiser efficacement toutes les métriques stockées en amont.
Grafana est compatible avec un grand nombre de sources, dont prometheus, et reste un standard pour créer des visualisations.
d. Architecture de notre monitoring

Comparativement au schéma ci-dessus, nous nous limiterons à Prometheus et Grafana, alertmanager et les différents canaux d’alerting pouvant être rajoutés par la suite.
kube-prometheus contient un certain nombre de dashboards utiles pour la gestion de notre cluster kubernetes.

Un exemple de dashboard grafana déployé automatiquement par kube-prometheus:

2. Installation
Nous allons de nouveau nous connecter à la machine principale, histoire de centraliser nos commandes.
Nous allons cloner le dépôt kube-prometheus :
git clone https://github.com/prometheus-operator/kube-prometheus
Nous rentrons dans le dossier récupéré
cd kube-prometheus
puis nous allons créer des ressources nécessaires au déploiement
microk8s kubectl apply --server-side -f manifests/setup
et enfin nous installons la stack de monitoring
microk8s kubectl apply -f manifests/
la doc d’installation complète est ici
Et voilà tout est installé !
Un petit tour dans le namespace monitoring nous confirme la présence des pods :
