Aller au contenu

Grafana Monitoring

Grafana est le meilleur et le plus complet des outils de monitoring. Il permet de surveiller n’importe quelle appareil ou service et sa personnalisation est sans limites. 

Il fonctionne de concert avec Prometheus, qui va s’occuper de récupérer les métriques sur les machines, tandis que Grafana lui va nous permettre de créer des Dashboard afin d’afficher les informations.

Création du stack Grafana Prometheus Node exporter Cadvisor

1. Créer un dossier Grafana et un fichier docker-compose.yml
mkdir Grafana
cd Grafana
nano docker-compose.yml
2. Coller la configuration en adaptant le chemin du volume et enregistrer
version: '3'

services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    ports:
      - "9090:9090"
    volumes:
      - /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
    restart: always

  grafana:
    image: grafana/grafana
    container_name: grafana
    ports:
      - "3000:3000"
    volumes:
      - ./grafana:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=yourpassword
    user: "${UID}:${GID}"
    depends_on:
      - prometheus
    restart: always

  node_exporter:
    image: quay.io/prometheus/node-exporter:latest
    container_name: node_exporter
    command:
      - '--path.rootfs=/host'
    pid: host
    restart: unless-stopped
    volumes:
      - '/:/host:ro,rslave'
      
  cadvisor:
    # Check latest release https://github.com/google/cadvisor/releases 
    image: gcr.io/cadvisor/cadvisor:v0.45.0     
    container_name: cadvisor
    ports:
      - "8080:8080"
    network_mode: host
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:ro
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
      - /dev/disk/:/dev/disk:ro
    devices:
      - /dev/kmsg
    restart: unless-stopped
    privileged: true      
3. Créer un fichier prometheus.yml sous /etc/prometheus
nano /etc/prometheus/prometheus.yml
4. Coller la configuration en adaptant le chemin du volume et enregistrer
global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.


  # Attach these labels to any time series or alerts when communicating with

  # external systems (federation, remote storage, Alertmanager).

  # external_labels:

  #  monitor: 'codelab-monitor'


# A scrape configuration containing exactly one endpoint to scrape:

# Here it's Prometheus itself.

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.

  - job_name: 'prometheus'
    # Override the global default and scrape targets from this job every 5 seconds.

    scrape_interval: 30s
    scrape_timeout: 30s
    static_configs:
      - targets: ['localhost:9090']

  # Job for node_exporter

  - job_name: 'node_exporter'
    static_configs:
      - targets: ['node_exporter:9100']

  # Job for cadvisor

  - job_name: 'cadvisor'
    scrape_interval: 30s
    scrape_timeout: 30s
    static_configs:
      - targets: ['cadvisor:8080']

Grafana et Prometheus sont maintenant préconfigurés.
Les Dashboard des applications sont accessibles à : 

Grafana : http://localhost:3000

Identifiant : admin
Mot de passe : yourpassword

Prometheus : http://localhost:9090

2. Une fois sauvegardé, éditer le fichier de configuration de Prometheus
nano /etc/prometheus/prometheus.yml
3. Une fois le fichier enregistré, relancer le conteneur Prometheus pour qu’il puisse prendre en compte les changement effectués sur le fichier de configuration
docker restart prometheus
5. Vérifier le fonctionnement du stack en vous connectant au Dashboard de Prometheus à http://localhost:9090
6. Sur Prometheus, aller dans Status/Targets
Capture decran 2023 03 08 163202
Vous devriez voir vos 3 services à l’état UP.
Capture decran 2023 03 08 163302

Ajout de la source métrique à Grafana

1. Pour ajouter la source des métriques, il faut aller dans Administration/Data Sources

Capture decran 2023 04 05 151753
2. Cliquer sur Add data source, et choisir Prometheus
Capture decran 2023 03 08 164744
3. Renseigner l’adresse réseau de Prometheus et valider en bas de page

Création du Dashboard Grafana

Une fois que tout est configuré, il faut ajouter un premier Dashboard à Grafana. Etant un outil très difficile à configurer, le plus simple et rapide est encore d’importer un template de Dashboard et ensuite de le modifier selon nos envies et nos besoins.

Ce Dashboard va vous remonter les métriques des conteneurs qui tournent sur votre hôte.

1. Aller dans ‘Dashboards’ et cliquer sur ‘+ Import’
2. Mettre ‘1860’ dans le champs puis cliquer sur Load et valider Ce Dashboard est Node-exporter-full, c’est un des plus téléchargé et des mieux notés de la plateforme.
Capture decran 2023 03 08 165913