Ajout de tableaux de bord
Objectifs du chapitre et prérequis
1. Contexte et prérequis
La surveillance de Docker et de ses containers est en place. Il est temps de mettre en place un suivi des différents composants à l’aide de tableaux de bord.
2. Fichiers téléchargeables
Vous pouvez récupérer les exemples sur le repository GitHub suivant : https://github.com/EditionsENI/prometheus-grafana
Vous pouvez également récupérer ces fichiers dans l’archive chapitre-11.tar.gz depuis la page Informations générales.
Gestion des tableaux de bord
1. Contexte
Grafana dispose d’une importante communauté d’utilisateurs qui mettent à disposition de nombreux tableaux de bord. Un excellent moyen de les échanger est de passer par le site de Grafana.
2. Import d’un tableau de bord
a. Présentation de la page de recherche des tableaux de bord
Sur le site de Grafana, en suivant la catégorie Grafana - Dashboards, il est possible de faire des recherches dans les tableaux de bord (https://grafana.com/grafana/dashboards).
Page des tableaux de bord de Grafana
En descendant cette page, il devient possible de faire des recherches selon différents critères :
-
Par nom/description.
-
Par type de source de données (Data Source).
-
Par type de panneau.
-
Par catégorie (base de données, Docker, etc.).
-
Par collecteur.
Recherche de tableaux de bord
Dans le cas qui va suivre, l’utilisateur va chercher à mettre en place un tableau de bord pour le suivi des exporteurs système.
b. Recherche et choix d’un tableau de bord pour l’exporteur système
Le site propose de nombreux tableaux de bord. Afin d’en trouver un adapté au suivi de l’exporteur système, depuis le formulaire de recherche de cette page, entrez les valeurs suivantes :
Dans le champ Name, entrez la valeur node exporter.
Dans le champ Data Source, sélectionnez Prometheus.
La recherche se lance automatiquement. N’hésitez pas à utiliser le champ Sort By (ordre de tri) à la valeur Downloads.
Résultat de recherche sur les termes « node exporter » trié par nombre de téléchargements
Cliquez sur le premier résultat remonté (Prometheus Node Exporter Full). Au moment de la rédaction de ces lignes, il s’agit du lien https://grafana.com/grafana/dashboards/1860.
Retenez bien ce lien et surtout l’identifiant (1860), ils serviront pour la suite des opérations.
Le reste de la page met à disposition quelques informations supplémentaires, notamment :
-
des captures d’écran,
-
un exemple de déclaration à utiliser, notamment la valeur du champ job_name à la valeur node (ce qui correspond bien à nos déclarations),
-
les révisions existantes du tableau de bord (onglet Revisions),
-
les revues...
Automatisation de l’import par API
1. Contexte
Le tableau de bord est en place mais tout a été réalisé manuellement. Afin d’industrialiser un peu plus la démarche, l’automatisation de l’import va être abordée à l’aide de l’API.
Pour réaliser cette opération d’import, le compte et le mot de passe de l’administrateur peuvent être utilisés. Afin d’éviter d’utiliser ces droits d’accès directement, l’utilisateur va générer un jeton d’authentification (on parlera par la suite de clé d’API). Il servira ensuite à mettre à jour le tableau de bord directement en ligne de commande.
2. Création de la clé d’API
a. Génération de la clé depuis l’interface de Grafana
Entrez dans l’interface de Grafana (http://127.0.0.1:3000 ou http://127.0.0.1:13000 en fonction de l’installation réalisée précédemment) en tant qu’administrateur (avec le compte admin par exemple).
Sur la gauche de l’écran, passez la souris au-dessus de l’icône en forme de roue dentée () et cliquez sur le lien API Keys.
Sur l’écran qui apparaît, cliquez sur le bouton bleu New API Key. Dans l’interface qui apparaît, remplissez les champs suivants :
Le nom de la clé (Key name) : automate.
Le rôle attribué (Role) : Editor.
La durée de vie de la clé (Time to live) : laissez la valeur à vide.
Création d’une clé d’API ayant pour rôle Editor
Ceci fait, cliquez sur le bouton Add. L’écran suivant donnera la valeur de la clé d’accès ainsi qu’un exemple de commande curl permettant de s’en servir.
Exemple de clé générée par Grafana
Voici ci-dessous un exemple de valeur renvoyée :
eyJrIjoibExOMUR2lxQWtVTxxxMX0=
Par la suite, les exemples s’appuieront sur l’utilisation de la commande curl. Ces exemples sont bien sûr tout à fait transposables dans n’importe quel autre langage.
b. Structure de la clé
Voici un exemple de commande curl permettant d’utiliser cette clé :
$ curl -H "Authorization:...
Utilisation du mécanisme d’approvisionnement
1. Présentation du mécanisme
Le mécanisme abordé précédemment est relativement intéressant et ouvre énormément de possibilités. Toutefois, cette technique a quelques inconvénients :
-
L’utilisation de l’API réclame certaines connaissances en programmation.
-
L’utilisateur doit générer un jeton d’accès.
-
Le jeton doit être stocké quelque part.
-
L’accès au jeton doit faire l’objet d’une protection.
-
Enfin, le jeton doit être renouvelé.
Ces opérations sont des obstacles à l’automatisation des besoins simples comme la gestion des tableaux de bord ou l’ajout de sources de données. Afin de simplifier la situation, l’utilisateur va aborder une technique liée au mécanisme d’approvisionnement (provisioning en anglais) pour ce type d’objet immuable.
Ce mécanisme - tout comme la définition des sources de données avec les containers Docker - s’appuie sur l’utilisation d’un fichier YAML déposé dans l’arborescence de Grafana.
La configuration automatique des sources de données (datasources) a été abordée dans le chapitre Déploiement via containers.