KVM Monitoring avec Prometheus et Grafana
Que se passe t-il au cœur d’un hyperviseur KVM ?
Comment se rendre compte de l’activité des appels système ?
Est-ce la folie et l’effervescence digne des rues de Tokyo ou plutôt celle d’un village tranquille avec un petit port de pêche ?
Si vous êtes un fan du modèle UNIX – et je sais que vous l’êtes – vous voulez qu’un outil fasse une chose et qu’il le fasse bien.
Alors pour découvrir ce qui se passe dans notre hyperviseur, nous allons utiliser 3 outils open source, le tout interconnecté via des api pour exporter où l’on veut :
- collectd : collecte les statistiques de libvirt
- promotheus : stock les statistiques
- grafana : présente les statistiques sous forme de graphique ou de conteur
Installation des outils
Première étape, installer nos 3 outils depuis l’open build service.
Nous allons ajouter le dépôt dédié aux outils de monitoring et installer via zypper (rpm)
zypper ar http://download.opensuse.org/repositories/server:/monitoring/openSUSE_Factory/server:monitoring.repo zypper in collectd collectd-plugin-virt zypper in golang-github-prometheus-prometheus zypper in grafana
Configuration de collectd
Dans collectd il est nécessaire de renseigner le chemin vers la socket libvirt, puis présenter les statistiques au format prometheus.
Dans le fichier /etc/collectd.conf ajouter les lignes suivantes :
LoadPlugin virt <Plugin virt> Connection "qemu:///system" HostnameFormat "name" </Plugin> LoadPlugin write_prometheus <Plugin write_prometheus> Port "9103" </Plugin>
Puis relancer le service :
systemctl restart collectd
Configuration de prometheus
La configuration de prometheus est assez simple.
Il suffit de créer un nouveau job pour stocker les statistiques présentées par collectd.
Dans le fichier /etc/prometheus/prometheus.yml ajouter :
- job_name: collectd static_configs: - targets: - 'localhost:9103'
Puis relancer le service.
systemctl start prometheus.service
Configuration de grafana
Comme une image vaut 1000 mots, un graphique coloré peut facilement nous raconter l’histoire d’un système.
La définition du compte admin se fait dans le fichier /etc/grafana/grafana.ini :
admin_user = admin admin_password = strongsecret
Puis relancer le service.
systemctl start grafana-server.service
Vous pouvez maintenant vous connecter à l’interface web de grafana via l’url : https://mon_serveur:3000/
Ajout d’une datasource
Depuis l’interface web de grafana, la première étape est de récupérer les statistiques stockées dans prometheus.
Pour cela il faut créer une datasource :
Ajout d’un dashboard
La seconde étape, est d’ajouter un dashboard pour transformer les statistiques en graphique.
Le site de grafana recense plusieurs dashboards créés par la communauté. Voici le lien pour le dashboard que j’utilise.
Importer le dashboard grace à l’ID 8396
Lors de l’importation, sélectionner la datasource créer précédemment.
Profit
Maintenant grace à grafana, vous pouvez faire parler les chiffres.
Que ce soit un vert apaisant signe que tout va bien ou un rouge criant : « on a besoin de plus de ressources ».
Comments
Merci Brice très utile !