Introduction
Les organisations qui adoptent de plus en plus Kubernetes pour gérer leurs conteneurs ont besoin d’une solution pour surveiller la santé de leur système distribué. Pour cette raison, vous entrez dans Prometheus – un puissant outil open source pour surveiller les applications conteneurisées dans votre espace K8s.
Dans ce tutoriel, vous apprendrez comment installer et configurer la pile Prometheus, pour surveiller tous les pods de votre cluster DOKS, ainsi que les métriques d’état du cluster Kubernetes. Ensuite, vous connecterez Prometheus avec Grafana pour visualiser toutes les métriques et effectuer des requêtes en utilisant le langage PromQL. Enfin, vous configurerez un stockage persistant pour votre instance Prometheus, pour persister toutes les données de métriques de votre cluster DOKS et de vos applications.
Table des matières
- Prérequis
- Étape 1 – Installation de la pile Prometheus
- Étape 2 – Configuration de Prometheus et Grafana
- Étape 3 – PromQL (Prometheus Query Language)
- Étape 4 – Visualisation des métriques à l’aide de Grafana
- Étape 5 – Configuration du stockage persistant pour Prometheus
- Étape 6 – Configuration du stockage persistant pour Grafana
- Conclusion
Prérequis
Pour accomplir ce tutoriel, vous aurez besoin de :
- A Git client to clone the Starter Kit repository.
- Helm pour gérer les déploiements et les mises à jour de la pile Prometheus.
- Kubectl pour interagir avec Kubernetes.
- Curl pour tester les exemples (applications backend).
- Application d’exemple Emojivoto déployée dans le cluster. Veuillez suivre les étapes dans le fichier README de son dépôt.
Veuillez vous assurer que le contexte kubectl
est configuré pour pointer vers votre cluster Kubernetes. Référez-vous à l’Étape 3 – Création du cluster DOKS du tutoriel de configuration DOKS.
Étape 1 – Installation de la pile Prometheus
Dans cette étape, vous allez installer la pile kube-prometheus
, qui est une pile de surveillance complète pour Kubernetes basée sur des opinions. Elle comprend l’opérateur Prometheus, kube-state-metrics
, des manifestes pré-construits, des exportateurs de nœuds, une API de métriques, un gestionnaire d’alertes et Grafana.
Vous allez utiliser le gestionnaire de paquets Helm pour accomplir cette tâche. Le graphique Helm est disponible ici pour étude.
Tout d’abord, clonez le dépôt du kit de démarrage et changez de répertoire vers votre copie locale.
Ensuite, ajoutez le référentiel Helm et répertoriez les graphiques disponibles:
La sortie ressemble à ce qui suit:
NAME CHART VERSION APP VERSION DESCRIPTION
prometheus-community/alertmanager 0.18.1 v0.23.0 The Alertmanager handles alerts sent by client ...
prometheus-community/kube-prometheus-stack 35.5.1 0.56.3 kube-prometheus-stack collects Kubernetes manif...
...
Le graphique d’intérêt est prometheus-community/kube-prometheus-stack
qui installera Prometheus, Promtail, Alertmanager et Grafana sur le cluster. Veuillez visiter la page kube-prometheus-stack pour plus de détails sur ce graphique.
Ensuite, ouvrez et inspectez le fichier 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
fourni dans le référentiel du Starter Kit à l’aide d’un éditeur de votre choix (de préférence avec le support de lint YAML). Par défaut, les métriques kubeSched
et etcd
sont désactivées – ces composants sont gérés par DOKS
et ne sont pas accessibles à Prometheus. Notez que le stockage est défini sur emptyDir
. Cela signifie que le stockage sera perdu si les pods Prometheus redémarrent (vous corrigerez cela plus tard dans la section Configuration du stockage persistant pour Prometheus).
[OPTIONNEL] Si vous avez suivi – Étape 4 – Ajout d’un nœud dédié pour l’observabilité du guide Configuration d’un cluster Kubernetes géré par DigitalOcean, vous devrez modifier le fichier 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
fourni dans le référentiel du Starter Kit et décommenter les sections affinity
pour à la fois Grafana et Prometheus.
Explications pour la configuration ci-dessus:
preferredDuringSchedulingIgnoredDuringExecution
– le planificateur tente de trouver un nœud qui répond à la règle. Si aucun nœud correspondant n’est disponible, le planificateur planifie quand même le pod.preference.matchExpressions
– sélecteur utilisé pour faire correspondre un nœud spécifique en fonction d’un critère. L’exemple ci-dessus indique au planificateur de placer des charges de travail (par exemple, des pods) sur des nœuds étiquetés avec la clé –preferred
et la valeur –observability
.
Enfin, installez le kube-prometheus-stack
, en utilisant Helm
:
A specific version of the Helm chart is used. In this case 35.5.1
was picked, which maps to the 0.56.3
version of the application (see output from Step 2.). It’s a good practice to lock on a specific version. This helps to have predictable results and allows versioning control via Git.
–create-namespace \
Maintenant, vérifiez l’état de la publication Helm de la pile Prometheus :
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
kube-prom-stack monitoring 1 2022-06-07 09:52:53.795003 +0300 EEST deployed kube-prometheus-stack-35.5.1 0.56.3
La sortie ressemble à ce qui suit. Remarquez la valeur de la colonne STATUS
– elle devrait indiquer deployed
.
Voyez quels sont les ressources Kubernetes disponibles pour Prometheus :
NAME READY STATUS RESTARTS AGE
pod/alertmanager-kube-prom-stack-kube-prome-alertmanager-0 2/2 Running 0 3m3s
pod/kube-prom-stack-grafana-8457cd64c4-ct5wn 2/2 Running 0 3m5s
pod/kube-prom-stack-kube-prome-operator-6f8b64b6f-7hkn7 1/1 Running 0 3m5s
pod/kube-prom-stack-kube-state-metrics-5f46fffbc8-mdgfs 1/1 Running 0 3m5s
pod/kube-prom-stack-prometheus-node-exporter-gcb8s 1/1 Running 0 3m5s
pod/kube-prom-stack-prometheus-node-exporter-kc5wz 1/1 Running 0 3m5s
pod/kube-prom-stack-prometheus-node-exporter-qn92d 1/1 Running 0 3m5s
pod/prometheus-kube-prom-stack-kube-prome-prometheus-0 2/2 Running 0 3m3s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 3m3s
service/kube-prom-stack-grafana ClusterIP 10.245.147.83 <none> 80/TCP 3m5s
service/kube-prom-stack-kube-prome-alertmanager ClusterIP 10.245.187.117 <none> 9093/TCP 3m5s
service/kube-prom-stack-kube-prome-operator ClusterIP 10.245.79.95 <none> 443/TCP 3m5s
service/kube-prom-stack-kube-prome-prometheus ClusterIP 10.245.86.189 <none> 9090/TCP 3m5s
service/kube-prom-stack-kube-state-metrics ClusterIP 10.245.119.83 <none> 8080/TCP 3m5s
service/kube-prom-stack-prometheus-node-exporter ClusterIP 10.245.47.175 <none> 9100/TCP 3m5s
service/prometheus-operated ClusterIP None <none> 9090/TCP 3m3s
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/kube-prom-stack-prometheus-node-exporter 3 3 3 3 3 <none> 3m5s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/kube-prom-stack-grafana 1/1 1 1 3m5s
deployment.apps/kube-prom-stack-kube-prome-operator 1/1 1 1 3m5s
deployment.apps/kube-prom-stack-kube-state-metrics 1/1 1 1 3m5s
NAME DESIRED CURRENT READY AGE
replicaset.apps/kube-prom-stack-grafana-8457cd64c4 1 1 1 3m5s
replicaset.apps/kube-prom-stack-kube-prome-operator-6f8b64b6f 1 1 1 3m5s
replicaset.apps/kube-prom-stack-kube-state-metrics-5f46fffbc8 1 1 1 3m5s
NAME READY AGE
statefulset.apps/alertmanager-kube-prom-stack-kube-prome-alertmanager 1/1 3m3s
statefulset.apps/prometheus-kube-prom-stack-kube-prome-prometheus 1/1 3m3s
Vous devriez avoir les ressources suivantes déployées : prometheus-node-exporter
, kube-prome-operator
, kube-prome-alertmanager
, kube-prom-stack-grafana
, et kube-state-metrics
. La sortie ressemble à ceci :
Ensuite, vous pouvez vous connecter à Grafana (en utilisant les identifiants par défaut : admin/prom-operator
– voir le fichier prom-stack-values-v35.5.1), en faisant un transfert de port vers la machine locale :
Vous ne devriez PAS exposer Grafana au réseau public (par exemple, en créant un mappage d’entrée ou un service de LB) avec login/mot de passe par défaut
.
L’installation de Grafana est livrée avec plusieurs tableaux de bord. Ouvrez un navigateur Web sur localhost:3000. Une fois connecté, vous pouvez aller dans Tableaux de bord -> Parcourir et choisir différents tableaux de bord.
Dans la prochaine partie, vous découvrirez comment configurer Prometheus pour découvrir des cibles à surveiller. À titre d’exemple, l’application d’exemple Emojivoto
sera utilisée. Vous apprendrez également ce qu’est un ServiceMonitor
.
Étape 2 – Configurer Prometheus et Grafana
Vous avez déjà déployé Prometheus et Grafana dans le cluster. Dans cette étape, vous apprendrez à utiliser un ServiceMonitor
. Un ServiceMonitor est l’une des méthodes préférées pour indiquer à Prometheus comment découvrir une nouvelle cible à surveiller.
Le déploiement Emojivoto créé à l’étape 5 de la section Prérequis fournit l’endpoint /metrics
par défaut sur le port 8801
via un service Kubernetes.
Ensuite, vous découvrirez les services Emojivoto chargés d’exposer les données de métriques à consommer par Prometheus. Les services en question sont appelés emoji-svc
et voting-svc
(notez qu’ils utilisent l’espace de noms emojivoto
):
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
emoji-svc ClusterIP 10.245.135.93 <none> 8080/TCP,8801/TCP 22h
voting-svc ClusterIP 10.245.164.222 <none> 8080/TCP,8801/TCP 22h
web-svc ClusterIP 10.245.61.229 <none> 80/TCP 22h
La sortie ressemble à ce qui suit:
Ensuite, effectuez un port-forward
pour inspecter les métriques:
Les métriques exposées peuvent être visualisées en naviguant avec un navigateur web vers localhost ou via curl :
La sortie ressemble à ce qui suit :
go_gc_duration_seconds{quantile="0"} 5.317e-05
go_gc_duration_seconds{quantile="0.25"} 0.000105305
go_gc_duration_seconds{quantile="0.5"} 0.000138168
go_gc_duration_seconds{quantile="0.75"} 0.000225651
go_gc_duration_seconds{quantile="1"} 0.016986437
go_gc_duration_seconds_sum 0.607979843
go_gc_duration_seconds_count 2097
# TYPE go_gc_duration_seconds summary
Pour inspecter les métriques du service voting-svc
, arrêtez le transfert de port du service emoji-svc
et effectuez les mêmes étapes pour le deuxième service.
- Ensuite, connectez Prometheus au service de métriques Emojivoto. Il existe plusieurs façons de le faire :
- <static_config> – permet de spécifier une liste de cibles et un ensemble de balises communes pour elles.
- <kubernetes_sd_config> – permet de récupérer des cibles de raclage à partir de l’API REST de Kubernetes et de rester toujours synchronisé avec l’état du cluster.
Opérateur Prometheus – simplifie la surveillance de Prometheus à l’intérieur d’un cluster Kubernetes via des CRD (définitions de ressources personnalisées).
Ensuite, vous utiliserez le CRD ServiceMonitor
exposé par l’Opérateur Prometheus pour définir une nouvelle cible de surveillance.
Tout d’abord, changez de répertoire (si ce n’est pas déjà fait) là où le référentiel Git du kit de démarrage a été cloné :
Ensuite, ouvrez le fichier 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
fourni dans le dépôt Starter Kit à l’aide d’un éditeur de texte de votre choix (de préférence avec le support de validation YAML). Veuillez supprimer les commentaires entourant la section additionalServiceMonitors
. La sortie ressemble à ceci :
- Explications pour la configuration ci-dessus :
selector -> matchExpressions
– indique àServiceMonitor
quel service surveiller. Il ciblera tous les services avec la clé de libellé « app » et les valeursemoji-svc
etvoting-svc
. Les libellés peuvent être récupérés en exécutant :kubectl get svc --show-labels -n emojivoto
namespaceSelector
– ici, vous souhaitez faire correspondre l’espace de noms oùEmojivoto
a été déployé.
endpoints -> port
– fait référence au port du service à surveiller.
Enfin, appliquez les modifications en utilisant Helm :
Ensuite, veuillez vérifier si la cible Emojivoto
est ajoutée à Prometheus pour le scraping. Créez un renvoi de port pour Prometheus sur le port 9090
:
Ouvrez un navigateur web sur localhost:9090. Ensuite, accédez à la page Status -> Targets, et inspectez les résultats (remarquez le chemin serviceMonitor/monitoring/emojivoto-monitor/0
) :
Il y a 2 entrées sous les cibles découvertes car le déploiement Emojivoto
se compose de 2 services exposant le point de terminaison des métriques.
Dans la prochaine étape, vous découvrirez PromQL ainsi que quelques exemples simples pour vous aider à démarrer et à découvrir le langage.
Étape 3 – PromQL (Prometheus Query Language)
Dans cette étape, vous apprendrez les bases du langage de requête Prometheus (PromQL). PromQL vous aide à effectuer des requêtes sur diverses métriques provenant de tous les Pods et applications de votre cluster DOKS.
PromQL est un DSL ou langage spécifique à un domaine spécifiquement conçu pour Prometheus et vous permet de faire des requêtes sur des métriques. L’expression globale définit la valeur finale, tandis que les expressions imbriquées représentent les valeurs des arguments et des opérandes. Pour des explications plus approfondies, veuillez visiter la page officielle de PromQL.
Ensuite, vous allez inspecter l’une des métriques Emojivoto
, à savoir emojivoto_votes_total
, qui représente le nombre total de votes. C’est une valeur de compteur qui augmente à chaque requête contre le point de terminaison des votes Emojivoto
.
D’abord, créez un transfert de port pour Prometheus sur le port 9090
:
Ensuite, ouvrez le navigateur d’expressions.
emojivoto_votes_total{container="voting-svc", emoji=":100:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 20
emojivoto_votes_total{container="voting-svc", emoji=":bacon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 17
emojivoto_votes_total{container="voting-svc", emoji=":balloon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 21
emojivoto_votes_total{container="voting-svc", emoji=":basketball_man:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beach_umbrella:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beer:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 11
Dans le champ de saisie de la requête, collez emojivoto_votes_total
, et appuyez sur entrée. La sortie ressemble à ceci :
Accédez à l’application Emojivoto
et depuis la page d’accueil, cliquez sur l’emoji 100 pour voter pour lui.
emojivoto_votes_total{container="voting-svc", emoji=":100:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 21
emojivoto_votes_total{container="voting-svc", emoji=":bacon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 17
emojivoto_votes_total{container="voting-svc", emoji=":balloon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 21
emojivoto_votes_total{container="voting-svc", emoji=":basketball_man:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beach_umbrella:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beer:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 11
Accédez à la page des résultats de la requête à partir de l’étape 3 et cliquez sur le bouton Exécuter. Vous devriez voir le compteur pour l’emoji 100 augmenter de un. La sortie ressemble à ceci :
PromQL regroupe des données similaires dans ce qu’on appelle un vecteur. Comme on peut le voir ci-dessus, chaque vecteur a un ensemble d’attributs qui le différencient des autres. Vous pouvez regrouper les résultats en fonction d’un attribut d’intérêt. Par exemple, si vous vous souciez uniquement des demandes provenant du service voting-svc
, veuillez taper ce qui suit dans le champ de requête :
emojivoto_votes_total{container="voting-svc", emoji=":100:", endpoint="prom", instance="10.244.6.91:8801", job="voting-svc", namespace="emojivoto", pod="voting-6548959dd7-hssh2", service="voting-svc"} 492
emojivoto_votes_total{container="voting-svc", emoji=":bacon:", endpoint="prom", instance="10.244.6.91:8801", job="voting-svc", namespace="emojivoto", pod="voting-6548959dd7-hssh2", service="voting-svc"} 532
emojivoto_votes_total{container="voting-svc", emoji=":balloon:", endpoint="prom", instance="10.244.6.91:8801", job="voting-svc", namespace="emojivoto", pod="voting-6548959dd7-hssh2", service="voting-svc"} 521
La sortie ressemble à ceci (notez qu’elle ne sélectionne que les résultats correspondant à vos critères) :
Le résultat ci-dessus montre le nombre total de demandes pour chaque Pod du déploiement Emojivoto
qui émet des métriques (qui se compose de 2).
Il s’agit simplement d’une introduction très simple à ce qu’est PromQL et à ce qu’il est capable de faire. Mais il peut faire bien plus que cela, comme compter les métriques, calculer le taux sur un intervalle prédéfini, etc. Veuillez visiter la page officielle de PromQL pour plus de fonctionnalités du langage.
Dans la prochaine étape, vous apprendrez comment utiliser Grafana pour visualiser les métriques de l’application d’exemple Emojivoto
.
Étape 4 – Visualiser les métriques à l’aide de Grafana
Bien que Prometheus offre une certaine prise en charge intégrée pour la visualisation des données, une meilleure façon de le faire est via Grafana, qui est une plateforme open source de surveillance et d’observabilité, vous permettant de visualiser et d’explorer l’état de votre cluster.
La page officielle est décrite comme étant capable de :
Interroger, visualiser, alerter et comprendre vos données, peu importe où elles sont stockées.
Aucune étape supplémentaire n’est nécessaire pour installer Grafana car l’étape 1 – Installation de la pile Prometheus l’a installé pour vous. Tout ce que vous avez à faire est de réaliser une redirection de port comme ci-dessous, et vous aurez un accès immédiat aux tableaux de bord (identifiants par défaut : admin/prom-monitor
) :
Pour voir toutes les métriques d’Emojivoto
, vous allez utiliser l’un des tableaux de bord installés par défaut de Grafana.
Naviguez jusqu’à la section Tableaux de bord Grafana.
Ensuite, recherchez le tableau de bord Général/Kubernetes/Ressources de calcul/Espace de noms (Pods) et accédez-y.
Enfin, sélectionnez la source de données Prometheus et ajoutez l’espace de noms emojivoto
.
Vous pouvez jouer et ajouter plus de panneaux dans Grafana pour visualiser d’autres sources de données, ainsi que les regrouper en fonction de leur portée. De plus, vous pouvez explorer les tableaux de bord disponibles pour Kubernetes à partir du projet kube-mixin de Grafana.
Dans l’étape suivante, vous configurerez un stockage persistant pour Prometheus en utilisant le stockage bloc de DigitalOcean pour conserver vos métriques DOKS et d’application en cas de redémarrage du serveur ou de défaillance du cluster.
Étape 5 – Configuration du stockage persistant pour Prometheus
Dans cette étape, vous apprendrez à activer le stockage persistant pour Prometheus afin que les données de métriques soient conservées lors des redémarrages du serveur ou en cas de défaillance du cluster.
Tout d’abord, vous avez besoin d’une classe de stockage pour continuer. Exécutez la commande suivante pour vérifier celle qui est disponible.
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
do-block-storage (default) dobs.csi.digitalocean.com Delete Immediate true 4d2h
La sortie devrait ressembler à ce qui suit. Remarquez que le stockage bloc de DigitalOcean est disponible pour votre utilisation.
Ensuite, changez de répertoire (si ce n’est déjà fait) là où le dépôt Git du kit de démarrage a été cloné :
Ensuite, ouvrez le fichier 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
fourni dans le dépôt du Starter Kit à l’aide d’un éditeur de texte de votre choix (de préférence avec le support de lint YAML). Recherchez la ligne storageSpec
et décommentez la section requise pour Prometheus. La définition de storageSpec
devrait ressembler à ceci :
- Explications pour la configuration ci-dessus :
volumeClaimTemplate
– définit un nouveau PVC.storageClassName
– définit la classe de stockage (devrait utiliser la même valeur que celle de la sortie de la commandekubectl get storageclass
).
resources
– définit la valeur des demandes de stockage. Dans ce cas, une capacité totale de 5 Go est demandée pour le nouveau volume.
Enfin, appliquez les paramètres à l’aide de Helm :
Après avoir terminé les étapes ci-dessus, vérifiez le statut du PVC :
NAME STATUS VOLUME CAPACITY ACCESS MODES AGE
kube-prome-prometheus-0 Bound pvc-768d85ff-17e7-4043-9aea-4929df6a35f4 5Gi RWO do-block-storage 4d2h
A new Volume should appear in the Volumes web page from your DigitalOcean account panel:
La sortie ressemble à ce qui suit. La colonne STATUS
devrait afficher Bound
.
Étape 6 – Configuration du stockage persistant pour Grafana
Dans cette étape, vous apprendrez comment activer le stockage persistant pour Grafana afin que les graphiques soient conservés à travers les redémarrages du serveur, ou en cas de défaillances du cluster. Vous définirez une demande de volume persistant (PVC) de 5 Go, en utilisant le Stockage en Bloc DigitalOcean. Les étapes suivantes sont les mêmes que Étape 5 – Configuration du Stockage Persistant pour Prometheus.
Tout d’abord, ouvrez le fichier 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
fourni dans le dépôt du Starter Kit, en utilisant un éditeur de texte de votre choix (de préférence avec le support de validation YAML). La section de stockage persistant pour Grafana devrait ressembler à ceci :
Ensuite, appliquez les paramètres à l’aide de Helm :
Après avoir terminé les étapes ci-dessus, vérifiez l’état du PVC :
NAME STATUS VOLUME CAPACITY ACCESS MODES AGE
kube-prom-stack-grafana Bound pvc-768d85ff-17e7-4043-9aea-4929df6a35f4 5Gi RWO do-block-storage 4d2h
A new Volume should appear in the Volumes web page from your DigitalOcean account panel:
La sortie ressemble à ce qui suit. La colonne STATUS
devrait afficher Bound
.
Meilleures Pratiques pour le Dimensionnement du PV
- Pour calculer la taille nécessaire pour le volume en fonction de vos besoins, veuillez suivre les conseils de la documentation officielle et la formule suivante :
- Prometheus stocke en moyenne seulement 1 à 2 octets par échantillon. Ainsi, pour planifier la capacité d’un serveur Prometheus, vous pouvez utiliser la formule approximative :
espace_disque_nécessaire = temps_de_rétention_secondes * échantillons_ingérés_par_seconde * octets_par_échantillon
Pour réduire le taux d’échantillons ingérés, vous pouvez soit réduire le nombre de séries temporelles que vous récupérez (moins de cibles ou moins de séries par cible), soit augmenter l’intervalle de récupération. Cependant, réduire le nombre de séries est probablement plus efficace, en raison de la compression des échantillons au sein d’une série.
Veuillez suivre la section Aspects opérationnels pour plus de détails sur le sujet.
Dans ce tutoriel, vous avez appris comment installer et configurer la pile Prometheus, puis utilisé Grafana pour installer de nouveaux tableaux de bord et visualiser les métriques d’application du cluster DOKS. Vous avez également appris comment effectuer des requêtes de métriques en utilisant PromQL. Enfin, vous avez configuré et activé le stockage persistant pour Prometheus afin de stocker vos métriques de cluster.
- En savoir plus
- Surveillance et conservation des journaux Kubernetes à l’aide de Grafana Loki et de DigitalOcean Spaces
- Meilleures pratiques de surveillance d’un cluster Kubernetes avec Prometheus, Grafana et Loki
Configurer la surveillance du cluster DOKS avec Helm et l’opérateur Prometheus