Grafana est une plateforme permettant de créer des tableaux de bord de visualisation pour les métriques. Dans ces tableaux de bord, la création de différents types de widget et de nombreuses options sont disponibles pour la visualisation des métriques.
Plus de détails sont disponibles sur le site officiel: https://grafana.com/
Les versions suivantes comportent une failles de sécurité critique (CVE-2021-43798). Nous vous déconseillons de les installer :
|
L'installation de Grafana sous CentOS se fait via un paquet RPM. La version de Grafana testée avec Shinken Entreprise est la v7.4.2.
Pour l'installer, utiliser la commande suivante:
yum install https://dl.grafana.com/enterprise/release/grafana-enterprise-8.3.2-1.x86_64.rpm |
Une fois l'installation terminée, le lancement de Grafana dépend de la version de CentOS utilisée.
Sous CentOS 6
chkconfig grafana-server on service grafana-server start |
Sous CentOS 7
systemctl enable grafana-server systemctl start grafana-server |
Après avoir installé puis lancé Grafana, l'interface sera accessible sur le port 3000. Les identifiants par défaut sont admin/admin
Pour pouvoir récupérer les métriques générées par Shinken et enregistrées dans Graphite. Grafana doit avoir accès à Graphite. Pour cela, il faut ajouter dans Grafana une source de données Graphite.
Dans l'interface, aller dans la catégorie Data Sources , puis ajouter une nouvelle source de type Graphite, qui sera paramétrée comme suivant:
URL: adresse du serveur hébergeant Graphite, sur le port 80. Par exemple:
http://localhost:80 |
Si Grafana est installé sur un serveur différent du serveur Graphite, il faudra effectuer une étape de configuration supplémentaire. Par défaut, Graphite autorise seulement les connexions locales.
Pour permettre à des serveurs distants d'accéder à ses données, il faut le fichier de configuration Apache de Graphite /etc/httpd/conf.d/graphite.conf :
Changer la ligne :
<VirtualHost 127.0.0.1:80> |
En :
<VirtualHost 0.0.0.0:80> |
Cette ligne permet de spécifier les interfaces réseau de la machine sur lesquelles effectuer l'écoute. Spécifier 0.0.0.0 ou * permettent d'écouter sur toutes les interfaces réseau. On peut mettre une seule interface à la place en spécifiant l'IP de l'interface réseau concernée.
Redémarrer Apache pour prendre en compte les modifications
Sur CentOS 6:
service http restart |
Sur CentOS 7:
systemctl restart httpd |
L'installation et la connexion de Grafana avec Graphite sont maintenant terminées.
Vous pouvez maintenant créer des tableaux de bord, ajouter des utilisateurs et permettre la visualisation des métriques de Shinken.
Par défaut, cette version n'accepte pas d'être intégrée dans un widget page web (pour plus de détail sur la configuration du widget voir la page : Widget Page web).
Si l'authentification est activée dans Grafana et que vous souhaitez l'intégrer dans un widget web, il faut que Grafana soit sur le même adresse IP ou même nom de domaine (exemple: shinken-solution.com est un nom de domaine) . Sans quoi le blocage CORS des navigateurs bloquera la connexion à Grafana. |
Pour l'activer vous devez éditer le fichier de configuration Grafana /etc/grafana/grafana.ini :
allow_embedding = true |
Puis redémarrer Grafana
Sur CentOS 6:
service grafana-server restart |
Sur CentOS 7:
systemctl restart grafana-server |
Pour créer un tableau de bord,



Une fois terminé, le bouton "Save" en haut à droite, va sauvegarde le panneau dans le tableau de bord. Le nom inscrit sera le nom du tableau de bord qui peut être composé de plusieurs panneaux.
Pour centraliser la visualisation des éléments supervisés par Shinken, il est possible d'intégrer les tableaux de bord Grafana dans un tableau de bord Shinken en utilisant la Widget Page web.
Par exemple :
|


Copier ce lien dans votre widget Page web.
Exemple :
http://adresse_serveur:3000/d-solo/sLWNXIsMk/synchronizer?orgId=1&from=now-6h&to=now&panelId=2 |
Décomposition de l'adresse :
| Paramètre | Définition |
| adresse_serveur | Adresse IP / Nom DNS du serveur |
| 3000 | Port par défaut de Grafana |
| d-solo | Permet de cacher les barres de navigation de Grafana pour n'afficher que les éléments visualisés |
| synchronizer | Nom du tableau de bord |
| from=now-6h | Intervalle d'affichage du graphes sur 6h |
| to=now | Intervalle jusqu'à maintenant |
| panelId=2 | Numéro du panneau dans le tableau de bord |
Dans le fichier de configuration de Grafana ( /etc/grafana/grafana.ini ),
Ajoutez :
protocol = https cert_file = /chemin/vers/server.cert cert_key = /chemin/vers/server.key |
Puis redémarrer Grafana :
Sur CentOS 6 :
service grafana-server restart |
Sur CentOS 7:
systemctl restart grafana-server |
Lors de l'utilisation de Grafana, les requêtes vont arriver dans le serveur Apache de Graphite avec des noms et non pas des uuids comme dans l'interface de visualisation qui elle fonctionne avec des uuids.
Pour cela il faut que le serveur Apache ait accès à un mapping entre les noms et les uuids. Il faut le lier à la base SLA qui a en son sein ce mapping.
Cette configuration se fait au sein du fichier /opt/graphite/conf/mongodb.conf via le champ URI.
URI=mongodb://localhost/?w=1&fsync=false |
Les logs de cette connexion se font au sein du fichier /var/log/graphite/info.log
Les logs de mise à jour du cache seront activés. Si vous souhaitez suivre la mise à jour du mapping nom → uuid et les requêtes pour un hôte particulier, vous pouvez remplir le fichier /opt/graphite/storage/whisper/.apache_graphite_host_filter_log avec le nom de l'hôte. Vous verrez sa mise à jour dans le mapping, ainsi que les requêtes de recherches de métriques le concernant.
Comme toutes les connexions vers MongoDB, il est possible, et même recommandé, de sécuriser la communication via un tunnel chiffré SSH.
Ceci se défini dans le fichier /opt/graphite/conf/mongodb.conf avec les paramètres :
| Nom | Type | Unité | Défaut | Commentaire | |
|---|---|---|---|---|---|
| Texte | --- | mongodb://localhost/?w=1&fsync=false | URI vers le serveur SLA, où tous les noms d’hôtes et de checks sont enregistrés pour la traduction uuid | |
| Booléen | --- | 0 | Paramètre permettant d'activer ou non l'utilisation d'un tunnel SSH
| |
| Texte | --- | shinken | Nom distant de l'utilisateur de connexion | |
| Texte | --- | /opt/graphite/conf/id_rsa | Chemin vers la clé SSH privée utilisée | |
| Nombre | seconde | Durée du timeout au bout duquel on détermine si l'établissement du tunnel a échoué | ||
| Texte | --- | shinken | Base de données utilisée pour stocker les données SLA |
Graphite étant hébergé par le service apache, il n'a donc pas accès au répertoire /var/lib/shinken et donc pas accès à la clé SSH /var/lib/shinken/.ssh/id_rsa. C'est pour cette raison que la clé SSH est situé dans /opt/graphite/conf/id_rsa.
Deux solutions s'offrent à vous :
Il faut copier la clé privée et changer les droits pour l'utiliser et la maintenir à jour en cas de changement.
cp /var/lib/shinken/.ssh/id_rsa* /opt/graphite/conf/ chown apache:apache /opt/graphite/conf/id_rsa |
| Attention : un lien symbolique entre les deux fichiers ne fonctionnera pas, car apache n'a pas les droits d'aller lire le fichier originel. |
Il faut simplement lancer la commande suivante :
yum update https://dl.grafana.com/enterprise/release/grafana-enterprise-8.3.2-1.x86_64.rpm |
Une fois Grafana mis à jour, il suffit de rafraîchir la page et de s'authentifier