For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/public-cloud/containers-orchestration/managed-kubernetes/monitoring-apps-prometheus-grafana.md.

Monitorer des applications avec Prometheus et Grafana sur un Managed Kubernetes Service OVHcloud

Voir en Markdown

Découvrez comment monitorer et visualiser des métriques avec Prometheus et Grafana sur un Managed Kubernetes Service OVHcloud

Objectif

Ce tutoriel vous montre comment monitorer vos applications/workloads sur un cluster Managed Kubernetes OVHcloud.

Avant de commencer

Ce tutoriel suppose que vous disposez déjà d'un cluster Managed Kubernetes OVHcloud fonctionnel, ainsi que de connaissances de base sur son fonctionnement. Pour en savoir plus sur ces sujets, consultez le guide de démarrage rapide du Managed Kubernetes Service OVHcloud.

Vous devez également avoir Helm installé sur votre poste de travail et sur votre cluster. Consultez le tutoriel Comment installer Helm sur un Managed Kubernetes Service OVHcloud.

En pratique

Dans ce guide, vous allez :

  • installer l'opérateur Prometheus (qui installera Prometheus et Grafana)
  • interroger Prometheus
  • visualiser les métriques dans Grafana

Opérateur Prometheus

L'opérateur Prometheus permet un déploiement et une gestion natifs Kubernetes de Prometheus et des composants de monitoring associés.

Architecture Prometheus

L'objectif de ce projet est de simplifier et d'automatiser la configuration d'une stack de monitoring basée sur Prometheus pour les clusters Kubernetes. L'opérateur Prometheus déploie également Grafana et ses tableaux de bord, afin de visualiser vos métriques de manière conviviale.

Si l'opérateur vous intéresse, n'hésitez pas à consulter la documentation officielle de l'opérateur Prometheus.

Installer l'opérateur Prometheus

Pour ce tutoriel, nous utilisons le chart Helm de l'opérateur Prometheus disponible dans le dépôt de la communauté Prometheus.

Ajoutez le dépôt Helm de Prometheus :

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

Cette commande ajoute le dépôt Prometheus et met à jour l'ensemble de vos dépôts :

$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
"prometheus-community" has been added to your repositories

$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...
...Successfully got an update from the "prometheus-community" chart repository
...
Update Complete. ⎈Happy Helming!⎈

Pour installer le chart Helm de l'opérateur Prometheus sur votre cluster Managed Kubernetes OVHcloud, vous devez personnaliser certaines valeurs. Pour cela, vous pouvez définir des paramètres sur la ligne de commande (--set param.name=value) ou créer un fichier local à partir des valeurs du chart et le transmettre en ligne de commande (--values /tmp/kube-prometheus-stack.values).

Pour ce tutoriel, nous choisissons la première méthode.

Pour installer Prometheus et Grafana :

helm install prometheus-community/kube-prometheus-stack \
--create-namespace --namespace prometheus \
--generate-name \
--set prometheus.service.type=LoadBalancer \
--set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false \
--set grafana.service.type=LoadBalancer \
--set grafana.adminPassword=<my cool password>
Info

Vous pouvez installer uniquement Prometheus sans Grafana en définissant la propriété suivante sur false : --set grafana.enabled=false

Comme vous pouvez le constater, un nouveau namespace prometheus sera créé, et nous avons précisé que nous souhaitons déployer un LoadBalancer afin d'accéder facilement à Prometheus et Grafana depuis l'extérieur.

Vous devriez obtenir un résultat de ce type :

$ helm install prometheus-community/kube-prometheus-stack \
--create-namespace --namespace prometheus \
--generate-name \
--set prometheus.service.type=LoadBalancer \
--set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false \
--set grafana.service.type=LoadBalancer \
--set grafana.adminPassword=myawesomepassword

NAME: kube-prometheus-stack-1710230650
LAST DEPLOYED: Tue Mar 12 09:04:30 2024
NAMESPACE: prometheus
STATUS: deployed
REVISION: 1
NOTES:
kube-prometheus-stack has been installed. Check its status by running:
  kubectl --namespace prometheus get pods -l "release=kube-prometheus-stack-1710230650"

Visit https://github.com/prometheus-operator/kube-prometheus for instructions on how to create & configure Alertmanager and Prometheus instances using the Operator.

Vous pouvez également vérifier en consultant les pods du nouveau namespace prometheus :

$ kubectl get pods -n prometheus
NAME                                                              READY   STATUS    RESTARTS   AGE
alertmanager-kube-prometheus-stack-1710-alertmanager-0            2/2     Running   0          35s
kube-prometheus-stack-1710-operator-ff9695486-72xxd               1/1     Running   0          43s
kube-prometheus-stack-1710230650-grafana-55c874ccc7-gnkr4         2/3     Running   0          43s
kube-prometheus-stack-1710230650-kube-state-metrics-7f79dfct894   1/1     Running   0          43s
kube-prometheus-stack-1710230650-prometheus-node-exporter-8xt87   1/1     Running   0          44s
prometheus-kube-prometheus-stack-1710-prometheus-0                1/2     Running   0          35s

Vous pouvez également vérifier que Prometheus et Grafana disposent bien d'une IP externe :

$ kubectl get svc -n prometheus
NAME                                                        TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)                         AGE
alertmanager-operated                                       ClusterIP      None           <none>           9093/TCP,9094/TCP,9094/UDP      118s
kube-prometheus-stack-1710-alertmanager                     ClusterIP      XX.XX.XXX.XXX   <none>           9093/TCP,8080/TCP               2m6s
kube-prometheus-stack-1710-operator                         ClusterIP      XX.XX.XXX.XXX    <none>           443/TCP                         2m6s
kube-prometheus-stack-1710-prometheus                       LoadBalancer   XX.XX.XXX.XXX    YY.YYY.YYY.YYY   9090:30517/TCP,8080:31250/TCP   2m6s
kube-prometheus-stack-1710230650-grafana                    LoadBalancer   XX.XX.XXX.XXX    ZZ.ZZZ.ZZZ.ZZZ   80:30401/TCP                    2m6s
kube-prometheus-stack-1710230650-kube-state-metrics         ClusterIP      XX.XX.XXX.XXX      <none>           8080/TCP                        2m6s
kube-prometheus-stack-1710230650-prometheus-node-exporter   ClusterIP      XX.XX.XXX.XXX   <none>           9100/TCP                        2m6s
prometheus-operated                                         ClusterIP      None           <none>           9090/TCP                        117s

Si ce n'est pas le cas, veuillez attendre que les Load Balancers soient correctement créés.

Visualiser les métriques

Vous pouvez maintenant récupérer les URL de Prometheus et Grafana avec les commandes suivantes :

export PROMETHEUS_URL=$(kubectl get svc -n prometheus -l app=kube-prometheus-stack-prometheus -o jsonpath='{.items[].status.loadBalancer.ingress[].ip}')

echo Prometheus URL: http://$PROMETHEUS_URL:9090

export GRAFANA_URL=$(kubectl get svc -n prometheus -l app.kubernetes.io/name=grafana -o jsonpath='{.items[].status.loadBalancer.ingress[].ip}')

echo Grafana URL: http://$GRAFANA_URL

Vous devriez obtenir le résultat suivant :

$ export PROMETHEUS_URL=$(kubectl get svc -n prometheus -l app=kube-prometheus-stack-prometheus -o jsonpath='{.items[].status.loadBalancer.ingress[].ip}')

$ echo Prometheus URL: http://$PROMETHEUS_URL:9090
Prometheus URL: http://XX.XXX.XXX.XXX:9090

$ export GRAFANA_URL=$(kubectl get svc -n prometheus -l app.kubernetes.io/name=grafana -o jsonpath='{.items[].status.loadBalancer.ingress[].ip}')

$ echo Grafana URL: http://$GRAFANA_URL
Grafana URL: http://YY.YYY.YYY.YY

Ouvrez votre navigateur et accédez à l'interface Prometheus.

Sans aucune action de votre part, plusieurs métriques natives sont déjà disponibles. Vous pouvez les tester en saisissant sum(kube_pod_owner{job="kube-state-metrics"}) by (namespace) dans la barre de recherche.

Cliquez sur le bouton Execute pour vérifier que les métriques Kubernetes sont visibles :

Prometheus

Grâce à cette requête PromQL, vous pouvez lister le nombre de pods par namespace dans votre cluster Kubernetes.

Les composants Kubernetes émettent des métriques au format Prometheus. Vous trouverez plus d'informations dans la documentation officielle de Kubernetes.

Vous pouvez également accéder à l'interface Grafana. Ouvrez votre navigateur et accédez à la valeur http://$GRAFANA_URL en utilisant les identifiants ci-dessous :

  • Identifiant : admin
  • Mot de passe : prom-operator (par défaut)
Grafana Page d'accueil Grafana

Là encore, grâce à l'opérateur Prometheus et sans aucune action de votre part, plusieurs tableaux de bord sont disponibles. Vous pouvez les afficher en cliquant sur l'icône Dashboards, dans la barre latérale de Grafana, puis sur browse :

Grafana Grafana

Par exemple, vous pouvez cliquer sur le tableau de bord General/Kubernetes/Compute Resources/Cluster pour visualiser les métriques de votre cluster Kubernetes :

Grafana

Suppression (nettoyage)

Exécutez d'abord la commande helm list dans tous les namespaces (avec l'option -A) de votre cluster Kubernetes pour voir ce que vous avez installé.

$ helm list -A
NAME                            	NAMESPACE          	REVISION	UPDATED                                	STATUS  	CHART                                                                                                	APP VERSION
cert-manager                    	cert-manager       	1       	2024-01-18 15:28:23.01963 +0100 CET    	deployed	cert-manager-v1.13.3                                                                                 	v1.13.3
kube-prometheus-stack-1710230650	prometheus         	1       	2024-03-12 09:04:30.737643 +0100 CET   	deployed	kube-prometheus-stack-57.0.1                                                                         	v0.72.0

Vous pouvez maintenant supprimer ce que vous avez installé au cours de ce tutoriel, grâce aux commandes helm uninstall :

helm uninstall kube-prometheus-stack-1710230650 -n prometheus

Vous devriez obtenir un résultat de ce type :

$ helm uninstall kube-prometheus-stack-1710230650 -n prometheus
release "kube-prometheus-stack-1647417678" uninstalled

Aller plus loin

Prometheus et Grafana sont des outils de monitoring très puissants, qui disposent également de systèmes d'alerte. N'hésitez pas à approfondir le sujet, par exemple pour créer des alertes.

Pour en savoir plus sur l'utilisation pratique de votre cluster Kubernetes, nous vous invitons à consulter notre documentation OVHcloud Managed Kubernetes.

  • Pour une formation ou une assistance technique sur la mise en œuvre de nos solutions, contactez votre commercial ou consultez la page Professional Services pour obtenir un devis et faire analyser votre projet par nos experts.

  • Échangez avec notre communauté d'utilisateurs.

Cette page vous a-t-elle aidé ?