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 KubernetesResponsable contrôleur
Tableau de bord de Kubernetes Controller ManagerPlanificateur
Tableau de bord du planificateur KubernetesKublet (agent de noeud)
Tableau de bord Kubernetes Cublet
Tableau de bord Kubernetes CubletProxy Kube
Tableau de bord du proxy KubeUtilisation 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:
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:
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!