Panneaux Grafana pour l'administration Kubernetes

Bonjour à tous! Aujourd'hui, nous continuons à partager du matériel traduit spécifiquement pour les étudiants du cours sur la plate-forme d'infrastructure basée sur Kubernetes . Bonne lecture.



Présentation




Depuis quelque temps, j'expérimente la création de tableaux de bord Grafana pour l'administration de Kubernetes. En tant que propriétaire et administrateur de plusieurs clusters Kubernetes, je voulais obtenir une représentation visuelle de certaines mesures. Tout d'abord, j'ai besoin de tableaux de bord Grafana normaux pour les composants Kubernetes Control Plane et Node: kube-api, kube-scheduler, kube-controller-manager, ainsi que kubelet et kube-proxy . Deuxièmement, je voudrais publier les panneaux résultants sur GitHub afin que d'autres puissent laisser des suggestions et des rapports d'erreur (problèmes), envoyer des demandes de modifications (demandes d'extraction), mettre à jour des panneaux (git pull) et m'aider à travailler dessus.

Publier des tableaux de bord Grafana


Les panneaux Grafana sont désormais principalement publiés sur grafana.com/dashboards . Pour obtenir le panneau souhaité, vous devez le trouver sur la page, copier l'identifiant et l'importer dans l'instance Grafana locale. Bien que l'importation de tableaux de bord soit relativement simple, l'expérience montre que la plupart des utilisateurs trouvent gênant de travailler avec eux. Il y a plusieurs raisons à cela.

Tout d'abord, les gens utilisent différents sélecteurs de balises pour indiquer les objectifs de surveillance dans Prometheus. Deuxièmement, dans les nouvelles versions des exportateurs et des applications Prometheus pour accéder aux métriques, les noms des métriques changent et sont constamment supprimés. Troisièmement, il est extrêmement difficile de trouver des tableaux de bord de très haute qualité - vous ne savez jamais ce que vous obtiendrez finalement après l'importation. Après avoir sélectionné le panneau, vous devez parcourir tous les graphiques et modifier les métriques ainsi que les sélecteurs des étiquettes - et cela représente une grande quantité de travail manuel.

Suivi du projet Mixins


J'ai trouvé un projet très cool appelé Monitoring Mixins. En fait, il s'agit d'une sorte d'écosystème conçu pour surmonter tous les problèmes de panneaux douloureux. L'idée est venue à Frédéric Branczyk, et c'est lui qui a écrit le document de conception original , que je vous recommande fortement de lire. De plus, il a pensé à un véritable mécanisme pour mettre à jour les tableaux de bord et les extraire de divers référentiels GitHub. Ce mécanisme est très similaire pour go get , et j'ai vraiment aimé. Ici, vous pouvez lire une brève description du gestionnaire de paquets jsonnet-bundler utilisant ce mécanisme. Un grand merci à Frederick pour les développements utiles!

Forfait Kubernetes Grafana Mixin


Si vous lisez cet endroit, vous pouvez faire une pause et profiter des belles photos.

Serveur API



Tableau de bord du serveur API Kubernetes

Responsable contrôleur



Tableau de bord de Kubernetes Controller Manager

Planificateur



Tableau de bord du planificateur Kubernetes

Kublet (agent de noeud)



Tableau de bord Kubernetes Cublet


Tableau de bord Kubernetes Cublet

Proxy Kube



Tableau de bord du proxy Kube

Utilisation de Kubernetes Grafana Mixin


Vous devez d'abord installer jsonnet et jsonnet-bundler .

Jsonnet


Si vous utilisez macOS, vous pouvez utiliser la brew install jsonnet . Sinon, il est préférable de compiler ce composant vous-même.

 git clone https://github.com/google/jsonnet.git jsonnet_git cd jsonnet_git make sudo mv jsonnet /usr/local/bin/ 

Bundler Jsonnet


 go get -u github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb 

Importer des panneaux


Créez un nouveau répertoire pour le projet et entrez-le avec la cd .

Installez mixin :

 jb init jb install https://github.com/povilasv/kubernetes-grafana-mixin 

Créez maintenant un nouveau fichier config.libsonnet .

 local kubedashboards = import 'kubernetes-grafana-mixin/mixin.libsonnet'; kubedashboards { _config+:: { kubeletSelector: 'job="kubernetes-nodes2"', kubeSchedulerSelector: 'job="kube-scheduler2"', kubeControllerManagerSelector: 'job="kube-controller-manager2"', kubeApiserverSelector: 'job="kube-apiserver2"', kubeProxySelector: 'job="kube-proxy2"', }, } 

Après cela, le panneau d'informations est importé et les sélecteurs de travaux sont remplacés.
Corrigez les sélecteurs de balises Prometheus en fonction de votre environnement.
Créez maintenant le répertoire des dashboards . Enfin, exécutez jsonnet pour compiler config.libsonnet :

 jsonnet -J vendor -m dashboards -e '(import "config.libsonnet").grafanaDashboards' 

Vous verrez la liste suivante:

 dashboards/kube-apiserver.json dashboards/kube-controller-manager.json dashboards/kube-proxy.json dashboards/kube-scheduler.json dashboards/kubelet.json 

Résultat


Affichez le contenu du catalogue de tableaux de bord.

 ls -l dashboards 

 -rw-r--r-- 1 povilasv povilasv 35746 Apr 26 08:29 kube-apiserver.json -rw-r--r-- 1 povilasv povilasv 34790 Apr 26 08:29 kube-controller-manager.json -rw-r--r-- 1 povilasv povilasv 62845 Apr 26 08:29 kubelet.json -rw-r--r-- 1 povilasv povilasv 27673 Apr 26 08:29 kube-proxy.json -rw-r--r-- 1 povilasv povilasv 25650 Apr 26 08:29 kube-scheduler.json 

Ajout de tableaux de bord à Grafana


J'ai déjà dit que je recommande fortement de placer les panneaux dans les fichiers de configuration. Vous pouvez en savoir plus sur la manière de procéder dans la documentation Grafana .

En revanche, rien ne vous empêche d'ouvrir l'interface Grafana et d'y ajouter des panneaux.

Mettre à jour les tableaux de bord


Au fil du temps, les panneaux changeront. Pour les mettre à jour, la commande suivante suffit:

 jb update 

C'est tout pour aujourd'hui.

J'espère que vous apprécierez mes tableaux de bord. Dans un article séparé, je parlerai de la façon dont je les ai créés et pourquoi je les ai faits comme ça, alors assurez-vous de vous abonner aux mises à jour. Les abonnés voient mon travail en premier, avant même sa publication.

Je suis également extrêmement intéressé par vos commentaires. Si vous avez utilisé mes panneaux, évaluez leur utilité ou dites s'ils vous ont aidé dans une situation de travail réelle. Laissez un commentaire!

Au fait, si vous voulez me remercier pour mes efforts, vous pouvez voir ma liste de souhaits ouverte et m'acheter, par exemple, un bon livre.

J'apprécie vraiment les projets open source de qualité. Le package kubernetes-grafana-mixin est disponible sous une licence Apache 2 . Si vous avez aimé le projet, découvrez-le sur Github!

Source: https://habr.com/ru/post/fr456946/


All Articles