Creer un dashboard de monitoring avec Grafana

Credit : Illustration backtotheweb.fr

Creer un dashboard de monitoring avec Grafana

Dylan D. — Agent Support Technique Serveur DevOps 623 mots 4 min

Creer un dashboard de monitoring avec Grafana

Si vous êtes ici, c'est probablement que vous avez déjà essayé et que ça marche pas. Normal.

Grafana combine a Prometheus est la stack de monitoring open source la plus populaire. Elle permet de visualiser les metriques de vos serveurs en temps reel et de configurer des alertes.

Architecture

Serveurs          Prometheus           Grafana
[node_exporter] --> [scrape & store] --> [visualisation & alertes]
[nginx_exporter]--> [PromQL queries] --> [dashboards]

Installer node_exporter sur les serveurs a surveiller

node_exporter collecte les metriques systeme (CPU, RAM, disque, reseau) :

# Telecharger
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xzf node_exporter-1.7.0.linux-amd64.tar.gz
sudo mv node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/

# Creer un service systemd
sudo cat > /etc/systemd/system/node_exporter.service << 'EOF'
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter --web.listen-address=:9100
Restart=always

[Install]
WantedBy=multi-user.target
EOF

sudo useradd -r -s /sbin/nologin node_exporter
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter

# Verifier
curl http://localhost:9100/metrics | head

Installer Prometheus

Sur votre serveur de monitoring :

wget https://github.com/prometheus/prometheus/releases/download/v2.51.0/prometheus-2.51.0.linux-amd64.tar.gz
tar xzf prometheus-2.51.0.linux-amd64.tar.gz
sudo mv prometheus-2.51.0.linux-amd64/{prometheus,promtool} /usr/local/bin/
sudo mkdir -p /etc/prometheus /var/lib/prometheus

Creez /etc/prometheus/prometheus.yml :

global:
  scrape_interval: 15s
  evaluation_interval: 15s

rule_files:
  - "alerts.yml"

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'nodes'
    static_configs:
      - targets:
        - 'web1.monsite.fr:9100'
        - 'web2.monsite.fr:9100'
        - 'db1.monsite.fr:9100'
        labels:
          env: 'production'

  - job_name: 'nginx'
    static_configs:
      - targets: ['web1.monsite.fr:9113']

Creez le service systemd et demarrez :

sudo cat > /etc/systemd/system/prometheus.service << 'EOF'
[Unit]
Description=Prometheus
After=network.target

[Service]
User=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/var/lib/prometheus \
  --storage.tsdb.retention.time=30d
Restart=always

[Install]
WantedBy=multi-user.target
EOF

sudo useradd -r -s /sbin/nologin prometheus
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus

Installer Grafana

sudo apt install -y apt-transport-https software-properties-common
wget -q -O - https://apt.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install grafana

sudo systemctl enable --now grafana-server

Accedez a Grafana sur http://votre-serveur:3000 (login: admin/admin).

Configurer la source de donnees

  1. Allez dans Configuration > Data Sources
  2. Ajoutez Prometheus avec l'URL http://localhost:9090
  3. Cliquez sur "Save & Test"

Creer un dashboard systeme

Astuce : j'ai appris ça à la dure après un incident en prod un vendredi soir.

Le plus simple est d'importer un dashboard existant. Le dashboard 1860 (Node Exporter Full) est excellent :

  1. Dashboards > Import
  2. Entrez l'ID 1860
  3. Selectionnez la source Prometheus

Requetes PromQL essentielles

Creez vos propres panels avec ces requetes :

# Utilisation CPU (%)
100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

# Memoire utilisee (%)
(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100

# Espace disque utilise (%)
(1 - node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) * 100

# Trafic reseau entrant (bytes/s)
irate(node_network_receive_bytes_total{device="eth0"}[5m])

# Load average
node_load1

# Uptime en jours
(time() - node_boot_time_seconds) / 86400

Configurer les alertes

Creez /etc/prometheus/alerts.yml :

groups:
  - name: serveur
    rules:
      - alert: HighCpuUsage
        expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "CPU eleve sur {{ $labels.instance }}"

      - alert: DiskSpaceLow
        expr: (1 - node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) * 100 > 85
        for: 10m
        labels:
          severity: critical
        annotations:
          summary: "Disque presque plein sur {{ $labels.instance }}"

      - alert: InstanceDown
        expr: up == 0
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "Instance {{ $labels.instance }} down"

Dans Grafana, configurez les notifications dans Alerting > Contact Points (email, Slack, Discord, etc.).

Securiser Grafana

Editez /etc/grafana/grafana.ini :

[server]
root_url = https://monitoring.monsite.fr

[security]
admin_password = MotDePasseSecurise2026!
cookie_secure = true

[users]
allow_sign_up = false

Placez Grafana derriere un reverse proxy Nginx avec SSL pour securiser l'acces.

Avec cette stack, vous avez une visibilite complete sur vos serveurs IONOS. Ajoutez des exporters (MySQL, Nginx, PHP-FPM) pour une couverture maximale.

# Articles similaires

// newsletter

Cet article vous a aide ? Recevez les prochains par email.