GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation de Grafana &Prometheus Kubernetes Cluster Monitoring

La surveillance de votre cluster Kubernetes est essentielle pour garantir que vos services sont toujours disponibles et en cours d'exécution. Et avant de parcourir Internet à la recherche d'un système de surveillance, pourquoi ne pas essayer la surveillance des clusters Grafana et Prometheus Kubernetes ?

Dans ce guide, vous apprendrez à surveiller votre cluster Kubernetes, en affichant les métriques d'état internes avec un tableau de bord Prometheus et Grafana.

Lisez la suite pour pouvoir surveiller de près vos ressources !

Prérequis

  • Une machine Linux avec Docker installé — Ce didacticiel utilise une machine Ubuntu 20.04 LTS avec Docker version 20.10.7. Voici comment installer Ubuntu.
  • Un cluster Kubernetes à nœud unique.
  • Helm Package Manager installé — Pour déployer l'opérateur Prometheus.
  • L'interface de ligne de commande Kubectl est installée et configurée pour votre cluster.

Déploiement du graphique Kube-Prometheus Stack Helm

La surveillance des clusters Grafana et Prometheus Kubernetes fournit des informations sur les goulots d'étranglement potentiels des performances, la santé du cluster et les mesures de performances. En même temps, visualisez l'utilisation du réseau, les modèles d'utilisation des ressources des pods et une vue d'ensemble de haut niveau de ce qui se passe dans votre cluster.

Mais avant de mettre en place un système de surveillance avec Grafana et Prometheus, vous allez d'abord déployer le graphique Helm de la pile kube-prometheus. La pile contient Prometheus, Grafana, Alertmanager, l'opérateur Prometheus et d'autres ressources de surveillance.

1. SSH dans votre machine Ubuntu 20.04 (si vous utilisez un serveur cloud) ou connectez-vous simplement à votre machine Ubuntu 20.04 installée localement pour commencer.

2. Ensuite, exécutez le kubectl create commande ci-dessous pour créer un namespace nommé monitoring pour tous les déploiements liés à Prometheus et Grafana.

kubectl create namespace monitoring

3. Exécutez le helm repo suivant commandes pour ajouter le (prometheus-community ) Dépôt Helm et mettez à jour votre dépôt Helm.

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

# Update helm repo
helm repo update

4. Après avoir ajouté le référentiel Helm, exécutez le helm install commande ci-dessous pour déployer le graphique Helm de la pile kube-prometheus. Remplacer prometheus avec le nom de version souhaité.

Ce graphique Helm configure une pile de surveillance Prometheus kubernetes complète en agissant sur la base d'un ensemble de définitions de ressources personnalisées (CRD).

helm install prometheus prometheus-community/kube-prometheus-stack --namespace monitoring

Une fois le déploiement terminé, vous obtiendrez le résultat suivant.

5. Enfin, exécutez la commande suivante pour confirmer le déploiement de votre pile kube-prometheus.

kubectl get pods -n monitoring

La sortie ci-dessous montre le déploiement de la pile kube-prometheus. Comme vous pouvez le constater, chaque composant de la pile s'exécute dans votre cluster.

Accéder à l'instance Prometheus

Vous avez déployé avec succès votre instance Prometheus sur votre cluster et vous êtes presque prêt à surveiller votre cluster Kubernetes. Mais comment accéder à votre instance Prometheus ? Vous redirigerez un port local 9090 à votre cluster via votre service Prometheus avec le kubectl port-forward commande.

1. Exécutez le kubectl get commande ci-dessous pour afficher tous les services dans l'espace de noms de surveillance afin de vérifier votre service Prometheus.

kubectl get svc -n monitoring

Tous les services déployés dans l'espace de noms de surveillance sont présentés ci-dessous, y compris le service Prometheus. Vous utiliserez le service Prometheus pour configurer la redirection de port afin que votre instance Prometheus soit accessible en dehors de votre cluster.

2. Ensuite, exécutez le kubectl port-forward ci-dessous commande pour rediriger le port local 9090 à votre cluster via le service Prometheus (svc/prometheus-kube-prometheus-prometheus ).

kubectl port-forward svc/prometheus-kube-prometheus-prometheus -n monitoring 9090

Mais si vous exécutez un cluster Kubernetes à nœud unique sur un serveur cloud, exécutez plutôt la commande suivante.

kuebctl port-forward --address 0.0.0.0 svc/prometheus-kube-prometheus-prometheus -n monitoring 9090 

Pour exécuter la commande kubectl port-forward en arrière-plan, libérant ainsi votre terminal pour une utilisation ultérieure, ajoutez le symbole &à la fin de la commande. Continuez en appuyant sur les touches Ctrl + C pour arrêter le processus de premier plan de redirection de port (cela n'affectera pas le processus d'arrière-plan de redirection de port).

3. Ouvrez votre navigateur Web préféré et accédez à l'une des URL ci-dessous pour accéder à votre instance Prometheus.

  • Accédez à http://localhost:9090 si vous suivez avec une machine Ubuntu locale
  • Accédez à l'adresse IP de votre serveur suivie du port 9090 (par exemple, http://YOUR_SERVER_IP:9090) si vous utilisez un serveur cloud.

Pour ce didacticiel, Prometheus s'exécute sur un serveur cloud.

Si votre service Prometheus fonctionne, vous obtiendrez la page suivante sur votre navigateur Web.

4. Enfin, sur votre terminal, appuyez sur les touches Ctrl+C pour fermer le processus de redirection de port. Cela rend Prometheus inaccessible sur votre navigateur.

Affichage des métriques d'état interne du cluster Prometheus Kubernetes

L'affichage des métriques d'état internes de votre cluster Kubernetes est rendu possible grâce à l'outil Kube-state-metrics (KSM). Avec l'outil KSM, vous pouvez suivre l'état et l'utilisation de vos ressources, ainsi que des objets d'état internes. Certains des points de données qui peuvent être potentiellement visualisés via KSM sont ; les métriques de nœud, les métriques de déploiement et les métriques de pod.

L'outil KSM est pré-emballé dans la pile kube-prometheus et est déployé automatiquement avec le reste des composants de surveillance.

Vous allez rediriger un port local vers votre cluster via le kube-state-metrics service. Cela permet à KSM d'extraire les métriques système internes de votre cluster et de générer une liste de requêtes et de valeurs. Mais avant le transfert de port, vérifiez d'abord votre service KSM Kubernetes.

1. Exécutez la commande ci-dessous pour vérifier votre kube-state-metrics Service Kubernetes.

kubectl get svc -n monitoring | grep kube-state-metrics

Ci-dessous, vous pouvez voir le nom du service KSM Kubernetes (prometheus-kube-state-metrics) avec le ClusterIP. Notez le nom du service KSM Kubernetes, car vous en aurez besoin pour effectuer la redirection de port à l'étape suivante.

2. Ensuite, exécutez la commande ci-dessous pour port-forward le prometheus-kube-state-metrics service au port 8080 .

kubectl port-forward svc/prometheus-kube-state-metrics -n monitoring 8080 

Si vous suivez ce didacticiel avec une machine Ubuntu 20.04 hébergée par un fournisseur de cloud, ajoutez l'indicateur (–address 0.0.0.0) à la commande kubectl port-forward. Cela permet un accès externe au port local via l'adresse IP publique de votre serveur.

3. Enfin, sur votre navigateur Web, accédez à l'une des URL ci-dessous pour afficher la page Kube Metrics, comme indiqué ci-dessous.

  • Accédez à http://localhost:8080 si vous êtes sur une machine Ubuntu locale
  • Accédez à l'adresse IP de votre serveur suivie du port 8080 (par exemple, http://YOUR_SERVER_IP:8080) si vous utilisez un serveur cloud.

Cliquez sur le lien des métriques pour accéder aux métriques d'état internes de votre cluster.

Vous pouvez voir ci-dessous les métriques d'état interne d'un cluster similaires aux vôtres.

Visualiser la métrique d'état interne d'un cluster sur Prometheus

Vous avez effectué avec succès le déploiement du graphique Helm de la pile kube-prometheus, le scrape kube-state-metrics et les configurations de tâche Prometheus. Par conséquent, CoreDNS, le serveur kube-api, l'opérateur Prometheus et d'autres composants Kubernetes ont été automatiquement configurés en tant que cibles sur Prometheus.

1. Accédez à l'un des http://localhost:9090/targets ou http:// points de terminaison sur votre navigateur Web. Cela vous permet de vérifier que ces cibles ont été correctement configurées.

L'accès au point de terminaison vous permet également de vérifier que Prometheus récupère ses métriques et stocke les données dans une base de données de séries chronologiques (TSDB),

N'oubliez pas de rediriger le port Prometheus comme indiqué dans la section "Accéder à l'instance Prometheus" à l'étape 2, avant de naviguer vers le point de terminaison. Vous pouvez également l'exécuter en arrière-plan.

Comme vous pouvez le voir ci-dessous, différents composants internes de Kubernetes et composants de surveillance sont configurés en tant que cibles sur Prometheus.

2. Cliquez sur le Graphe menu pour accéder à une page où vous exécuterez une requête PromQL (Prometheus Query Language).

3. Insérez l'exemple PromQL (Prometheus Query Language) requête ci-dessous dans l'espace d'expression fourni, puis cliquez sur Exécuter. La requête renvoie la quantité totale de mémoire inutilisée dans votre cluster.

sum((container_memory_usage_bytes{container!="POD",container!=""} - on (namespace,pod,container) avg by (namespace,pod,container)(kube_pod_container_resource_requests{resource="memory"})) * -1 >0 ) / (1024*1024*1024)

4. Pour afficher les résultats de la requête PromQL exécutée à l'étape 3 dans un format graphique, cliquez sur Graph . Ce graphique affichera la quantité totale de mémoire inutilisée dans votre cluster à un moment donné.

Avec tout configuré correctement, l'exemple de métrique de cluster devrait ressembler au graphique ci-dessous.

Accéder ensuite au tableau de bord Grafana

Vous avez peut-être remarqué que les capacités de visualisation de Prometheus sont limitées, car vous êtes coincé avec seulement un Graph option. Prometheus est idéal pour extraire les métriques des cibles configurées en tant que tâches, agréger ces métriques et les stocker dans une TSDB localement sur la machine Ubuntu. Mais lorsqu'il s'agit de surveillance standard des ressources, Prometheus et Grafana forment un excellent duo.

Prometheus agrège les métriques exportées par les composants du serveur tels que l'exportateur de nœuds, CoreDNS, etc. Tandis que Grafana, la visualisation étant son point fort, reçoit ces métriques de Prometheus et les affiche à travers de nombreuses options de visualisation.

Pendant le déploiement de kube-prometheus stack helm, Grafana a été automatiquement installé et configuré, vous pouvez donc configurer l'accès à Grafana sur votre cluster.

Pour accéder à votre tableau de bord Grafana, vous devrez d'abord récupérer votre nom d'utilisateur et votre mot de passe stockés sous forme de secrets créés automatiquement par défaut dans votre cluster Kubernetes.

1. Exécutez le kubectl suivant commande pour afficher les données stockées sous secret dans votre cluster Kubernetes (prometheus-grafana ) au format YAML (-o yaml ).

kubectl get secret -n monitoring prometheus-grafana -o yaml

Comme vous le voyez ci-dessous, le nom d'utilisateur et le mot de passe pour accéder à votre tableau de bord Grafana sont encodés en base64. Notez les valeurs de admin-password et admin-user secrets car vous devrez les décoder à l'étape suivante.

2. Ensuite, exécutez chaque commande ci-dessous pour --decode les deux secrets (admin-password et admin-user ). Remplacer YOUR_USERNAME , et YOUR_PASSWORD avec le admin-password et admin-user valeurs secrètes que vous avez notées à la première étape.

Ce tutoriel n'a pas de sortie pour chaque commande pour des raisons de sécurité.

# Decode and print the username
echo YOUR_USERNAME | base64 --decode
# Decode and print the password
echo YOUR_PASSWORD | base64 --decode

3. Exécutez le kubectl commande ci-dessous en port-forward vers un port local au 3000 en liant le port Grafana 80 au port 3000 . Cela vous donne accès à l'interface utilisateur Web de Grafana sur votre navigateur.

kubectl port-forward svc/prometheus-grafana -n monitoring 3000:80

Ajoutez l'indicateur –address 0.0.0.0 si vous suivez en utilisant une machine Ubuntu 20.04 hébergée par un fournisseur de cloud.

4. Enfin, sur votre navigateur, accédez à l'un des points de terminaison ci-dessous en fonction de la configuration de votre machine :

  • http://localhost:3000 (locale)
  • ou http://:3000 (nuage)

Entrez votre valeur secrète décodée pour admin-user et admin-password dans le nom d'utilisateur et le mot de passe dans l'espace prévu.

Une fois connecté, vous obtiendrez le tableau de bord Grafana, comme indiqué ci-dessous.

Interagir avec Grafana

Par défaut, la pile Kube-Prometheus déploie Grafana avec des tableaux de bord préconfigurés pour chaque cible configurée dans Prometheus. Avec ces tableaux de bord préconfigurés, vous n'aurez pas besoin de configurer manuellement un tableau de bord pour visualiser chaque métrique agrégée par Prometheus.

Cliquez sur l'icône du tableau de bord —> Parcourir et votre navigateur redirige vers une page où vous verrez une liste de tableaux de bord (deuxième étape).

Cliquez sur l'un des tableaux de bord préconfigurés ci-dessous pour afficher sa ressource de calcul visuelle. Mais pour ce tutoriel, cliquez sur Kubernetes / Compute Resources / Namespace (Pods) tableau de bord.

Vous trouverez ci-dessous un exemple de tableau de bord préconfiguré pour visualiser l'utilisation des ressources de calcul par les pods dans l'un des espaces de noms disponibles.

Pour ce didacticiel, la source de données a été défini sur Prométhée et l'espace de noms pour la visualisation est défini sur surveillance .

Conclusion

Dans ce didacticiel, vous avez appris à déployer l'opérateur Prometheus à l'aide de Helm et visualisé les métriques d'état interne de votre cluster pour surveiller votre cluster Kubernetes. Vous avez également configuré Grafana et consulté les métriques de votre cluster en configurant votre tableau de bord Grafana.

À ce stade, vous disposez déjà d'une surveillance de cluster Kubernetes entièrement fonctionnelle. Mais vous pouvez personnellement améliorer ces nouvelles connaissances, comme configurer Alertmanager avec Slack pour recevoir des alertes en temps réel.


Linux
  1. Comment utiliser Ansible pour configurer la surveillance du système avec Prometheus

  2. Comment déployer votre premier pod sur un cluster Kubernetes

  3. Configurer le cluster Kubernetes avec Rancher

  4. Surveiller le serveur Linux en utilisant Prometheus et Grafana

  5. Prometheus vs Zabbix :comparaison des outils de surveillance du réseau

Comment créer un cluster Kubernetes avec AWS CLI

Comment déployer un cluster Kubernetes sur AWS avec Amazon EKS

Une introduction aux métriques Prometheus et à la surveillance des performances

Commencez à apprendre Kubernetes depuis votre machine locale

Créer un cluster Kubernetes à plan de contrôle unique avec kubeadm

Cluster Kubernetes utilisant K3S avec Multipass de Canonical