Déploiement Prometheus grafana dans Kubernetes

Oct 29, 2024 min read

Cet article fait partie d’une série d’articles :

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 :


Maintenant, nous pouvons déployer notre première application !

-|