Blog & Astuces

Monitorer son serveur avec Grafana et Prometheus - Monitorer les ressources avec Node-exporter

Monitorer son serveur avec Grafana et Prometheus - Monitorer les ressources avec Node-exporter

Tuto

Dans ce tutoriel, je vais présenter comment monitorer les ressources de votre serveur (processeur, mémoire vive, etc) avec Grafana et Prometheus, notamment comment afficher les ressources dans un dashboard et gérer des alertes si jamais les ressources utilisées dépassent une certaine valeur.

Pré-requis

  • Un serveur Linux
  • Avoir installé Docker, Grafana et Prometheus sur le serveur. Vous pouvez vous reporter sur mon précédent tutoriel pour voir comment installer Grafana avec Docker. Vous pouvez aussi vous reporter sur mon autre tutoriel pour installer Prometheus.

Mise en place de node-exporter

Ce petit utilitaire va permettre d'exposer les données correspondant aux ressources utilisées par votre serveur, pour pouvoir être stockées dans la base de données de Prometheus, puis que ces données soient exposées à Grafana. Nous allons l'installer grâce à Docker.

Créer un fichier docker-compose.yml avec ces informations :

version: "3"

services:
    node-exporter:
       image: prom/node-exporter:v1.7.0
       container_name: node-exporter
       restart: unless-stopped
       network_mode: host
       volumes:
         - /proc:/host/proc:ro
         - /sys:/host/sys:ro
         - /:/rootfs:ro
       command:
         - '--path.procfs=/host/proc'
         - '--path.rootfs=/rootfs'
         - '--path.sysfs=/host/sys'
         - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
         - '--no-collector.arp'
       ports:
         - 9100:9100

J'ai ajouté le "no-collector.arp" qui désactive le collecteur ARP qui génère des messages d'erreur sur mon serveur.

Ajouter la configuration suivante à Prometheus pour qu'il puisse scrapper l'URL, sous "scrape_configs" :

scrape_configs:
  - job_name: "node"
    scrape_interval: 5s

    static_configs:
      - targets: ["host.docker.internal:9100"]

host.docker.internal ici correspond à l'adresse IP du serveur. Pour que cela puisse fonctionner, il faut ajouter la valeur suivante à votre instance Docker de Prometheus :

services:
  prometheus:
     (reste de la configuration yml du container prometheus...)
     extra_hosts:
       - "host.docker.internal:XXX.XXX.XXX.XXX"

Remplacez XXX.XXX.XXX.XXX par l'adresse IP du serveur.

Démarrer ensuite le container avec la commande docker-compose up -d.

Configuration de Grafana

Configuration du tableau de bord de Node-exporter

Télécharger le dashboard suivant puis importez-le dans Grafana : https://grafana.com/grafana/dashboards/1860-node-exporter-full/

Si tout s'est bien passé, vous devriez voir s'afficher le dashboard avec les données de votre instance fail2ban.

Mise en place d'alertes d'exemple

Vous pouvez mettre en place des alertes grâce aux données fournies par node-exporter à Prometheus. Par exemple, si votre serveur voit son utilisation CPU monter à plus de 75% par exemple, ou alors la température du CPU qui dépasse une certaine valeur.

Vous pourrez ainsi recevoir les alertes par e-mail ou par le point de contact paramétré dans Grafana : vous pouvez par exemple paramétrer OpsGenie pour recevoir les alertes par SMS ou via les notifications de l'application. J'explique dans un de mes précédents tutoriel comment faire.

Pour cela, rendez-vous dans Alerting, puis Alert Rules.

Voici un exemple de règle qui alerte si l'utilisation CPU dépasse les 75% pendant 5 minutes :

Alerte CPU Grafana

Alerte CPU Grafana

Un autre exemple de règle qui alerte si la température dépasse les 75°C pendant 5 minutes :

Alerte température CPU Grafana

Alerte température CPU Grafana

Conclusion

Grâce à l'utilitaire node-exporter et Prometheus, il est possible de monitorer et stocker les ressources utilisées par votre serveur. Grâce à Grafana, il est ensuite possible de les afficher dans un dashboard et même de mettre en place des alertes sur les ressources utilisées.

Commentaires