# Grafana

**Grafana** est une plateforme de visualisation de données **open source** lancée en **2013**. Elle permet aux utilisateurs de :

- **Créer des tableaux de bord dynamiques** et modulables.
- **Visualiser** des métriques, des journaux et des traces provenant de diverses sources de données.
- **Configurer des alertes** pour surveiller les performances et la santé des systèmes.

# Mise en place de node-exporter

##### Mise en place de Node Exporter pour la supervision avec Prometheus et Grafana

<span style="white-space: pre-wrap;">Ce guide explique comment installer et configurer </span>****Node Exporter****<span style="white-space: pre-wrap;"> sur une machine (VPS ou serveur Proxmox) afin d'exposer ses métriques à un serveur </span>****Prometheus****<span style="white-space: pre-wrap;">, qui les affichera ensuite dans </span>****Grafana****.

---

##### ✨ Objectif

Obtenir les statistiques système de vos machines :

- CPU, RAM, disques, réseau
- Température, uptime, charge

---

##### 🌐 Prérequis

- Un serveur Prometheus fonctionnel
- Une machine cible sur laquelle on souhaite installer Node Exporter (ex : VPS, Proxmox Host)

---

##### 🛠️ Installation de Node Exporter

1\. Se connecter à la machine cible (ex : via SSH)

2\. Télécharger Node Exporter

```bash
curl -LO https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-1.8.1.linux-amd64.tar.gz
tar -xvzf node_exporter-1.8.1.linux-amd64.tar.gz
cd node_exporter-1.8.1.linux-amd64
```

<p class="callout info"><span style="white-space: pre-wrap;">Si la commande </span>`<span class="editor-theme-code">curl -LO</span>`<span style="white-space: pre-wrap;"> ne fonctionne pas, utiliser </span>`<span class="editor-theme-code">wget</span>`. Une commande fonctionnelle est présente ci-dessous. Merci de simplement modifier la version de l'exemple (1.8.1) vers la dernière version.</p>

<p class="callout info">`<span class="editor-theme-code">wget https://github.com/prometheus/node_exporter/releases/download/v1.8.1/node_exporter-1.8.1.linux-amd64.tar.gz</span>`</p>

3\. Installer le binaire

```bash
sudo cp node_exporter /usr/local/bin/
```

4\. Créer un utilisateur spécial pour exécuter Node Exporter

```bash
sudo useradd -rs /bin/false node_exporter
```

5\. Créer le service systemd

```bash
sudo tee /etc/systemd/system/node_exporter.service > /dev/null <<EOF
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=default.target
EOF
```

6\. Activer et démarrer le service

```bash
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
```

7\. Vérifier qu'il fonctionne

```bash
curl http://localhost:9100/metrics
```

Vous devez voir une longue liste de métriques Prometheus.

---

##### 📁 Configuration de Prometheus (sur le serveur Prometheus)

<span style="white-space: pre-wrap;">1. Modifier le fichier </span>`<span class="editor-theme-code">prometheus.yml</span>`

<span style="white-space: pre-wrap;">Ajoutez la cible dans la section </span>`<span class="editor-theme-code">scrape_configs</span>`<span style="white-space: pre-wrap;"> :</span>

```yaml
- job_name: 'nom_de_la_machine'
    static_configs:
      - targets: ['IP_DE_LA_MACHINE:9100']
```

2\. Redémarrer Prometheus

```bash
sudo systemctl restart prometheus
```

3\. Vérifier l'interface Web de Prometheus

<span style="white-space: pre-wrap;">Naviguez vers </span>`<span class="editor-theme-code">http://IP_DU_SERVEUR_PROMETHEUS:9090/targets</span>`<span style="white-space: pre-wrap;"> Vous devez voir la cible apparaître en </span>****UP****.

---

##### 📊 Affichage dans Grafana

1\. Aller dans Grafana &gt; Configuration &gt; Data Sources

- <span style="white-space: pre-wrap;">Ajouter ou sélectionner la source </span>****Prometheus****

2\. Aller dans Dashboards &gt; Import

- <span style="white-space: pre-wrap;">Entrer l'ID : </span>`<span class="editor-theme-code">1860</span>`
- Sélectionner la source Prometheus
- <span style="white-space: pre-wrap;">Importer le dashboard </span>****Node Exporter Full****

3\. Profiter des statistiques temps réel 🚀

---

##### ⚠️ Sécurité (optionnel)

- Pour accéder à Node Exporter via Internet, utilisez un tunnel WireGuard, FRP ou un reverse proxy avec auth.
- <span style="white-space: pre-wrap;">Sinon, limitez l'accès au port 9100 au seul serveur Prometheus via </span>`<span class="editor-theme-code">iptables</span>`<span style="white-space: pre-wrap;"> ou </span>`<span class="editor-theme-code">ufw</span>`.

---

##### 📄 Notes finales

- <span style="white-space: pre-wrap;">Node Exporter ne collecte </span>****pas de logs****<span style="white-space: pre-wrap;">. Pour les logs (fail2ban, journald...), utilisez </span>****Promtail****<span style="white-space: pre-wrap;"> avec </span>****Loki****.
- <span style="white-space: pre-wrap;">Vous pouvez installer Node Exporter sur </span>****autant de machines que nécessaire****, Prometheus gèrera toutes les cibles.

---

🎉 C'est tout ! Vous avez maintenant un système de monitoring robuste avec Node Exporter + Prometheus + Grafana.

# Mise en place de prometheus

##### Mise en place de Prometheus pour la supervision

<span style="white-space: pre-wrap;">Ce guide explique comment installer et configurer </span>****Prometheus****<span style="white-space: pre-wrap;"> sur une machine dédiée (VM ou LXC), afin de collecter les métriques d'autres machines (VPS, Proxmox, etc.) via des agents comme </span>****node\_exporter****.

<p class="callout info">Vous pouvez aussi utilisé Helper-Script pour l'installation :  
****Prometheus PVE Exporter :**** [https://community-scripts.github.io/ProxmoxVE/scripts?id=prometheus-pve-exporter](https://community-scripts.github.io/ProxmoxVE/scripts?id=prometheus-pve-exporter)  
****Prometheus :****<span style="white-space: pre-wrap;"> </span>[https://community-scripts.github.io/ProxmoxVE/scripts?id=prometheus](https://community-scripts.github.io/ProxmoxVE/scripts?id=prometheus)</p>

##### ✨ Objectif

<span style="white-space: pre-wrap;">Mettre en place un serveur </span>****Prometheus****<span style="white-space: pre-wrap;"> pour collecter des métriques depuis plusieurs machines :</span>

- VPS avec node\_exporter
- Proxmox exporter (exporteur dédié pour Proxmox VE)
- Machines locales avec node\_exporter

---

##### 🌐 Prérequis

- Une VM ou LXC dédiée à Prometheus (Debian/Ubuntu recommandé)
- Accès root ou sudo

---

##### 🛠️ Installation de Prometheus

1\. Mise à jour et création d'utilisateur

```bash
sudo apt update && sudo apt install -y curl tar
sudo useradd --no-create-home --shell /bin/false prometheus
```

2\. Téléchargement

```bash
cd /tmp
curl -LO https://github.com/prometheus/prometheus/releases/latest/download/prometheus-2.52.0.linux-amd64.tar.gz
tar xvf prometheus-2.52.0.linux-amd64.tar.gz
cd prometheus-2.52.0.linux-amd64
```

<p class="callout info"><span style="white-space: pre-wrap;">Si la commande </span>`<span class="editor-theme-code">curl -LO</span>`<span style="white-space: pre-wrap;"> ne fonctionne pas, utilisé </span>`<span class="editor-theme-code">wget</span>`</p>

3\. Déplacement des fichiers

```bash
sudo mkdir -p /etc/prometheus /var/lib/prometheus
sudo cp prometheus promtool /usr/local/bin/
sudo cp -r consoles/ console_libraries/ /etc/prometheus/
sudo cp prometheus.yml /etc/prometheus/
```

4\. Droits

```bash
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
sudo chown prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtool
```

---

##### 🔧 Création du service systemd

```bash
sudo tee /etc/systemd/system/prometheus.service > /dev/null <<EOF
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/var/lib/prometheus/

[Install]
WantedBy=multi-user.target
EOF
```

---

##### <span style="white-space: pre-wrap;">🖊️ Configuration de </span>`<span class="editor-theme-code">/etc/prometheus/prometheus.yml</span>`

<span style="white-space: pre-wrap;">Voici un exemple </span>****valide****<span style="white-space: pre-wrap;"> pour plusieurs machines :</span>

```yaml
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'nom_de_la_machine'
    static_configs:
      - targets: ['IP_DE_VOTRE_MACHINE:9090']

  - job_name: 'nom_de_la_machine'
    static_configs:
      - targets: ['IP_DE_VOTRE_MACHINE:9221']

  - job_name: 'nom_de_la_machine'
    static_configs:
      - targets: ['IP_DE_VOTRE_MACHINE:9100']

  - job_name: 'nom_de_la_machine'
    static_configs:
      - targets: ['IP_DE_VOTRE_MACHINE:9100']
```

---

##### 🚀 Lancement de Prometheus

1\. Activer le service

```bash
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus
```

2\. Vérification

```bash
systemctl status prometheus
```

3\. Interface Web

Accédez à :

```
http://IP_DU_SERVEUR_PROMETHEUS:9090
```

<span style="white-space: pre-wrap;">Puis allez dans : </span>`<span class="editor-theme-code">Status > Targets</span>`

<span style="white-space: pre-wrap;">Vous devez voir toutes les cibles listées comme </span>****UP****.

---

##### 🌍 Connexion à Grafana

1. <span style="white-space: pre-wrap;">Sur Grafana (VM différente), aller dans </span>****Configuration &gt; Data Sources****
2. <span style="white-space: pre-wrap;">Cliquer sur </span>****Add Data Source****<span style="white-space: pre-wrap;"> &gt; choisir </span>****Prometheus****
3. <span style="white-space: pre-wrap;">Mettre comme URL : </span>`<span class="editor-theme-code">http://IP_DU_SERVEUR_PROMETHEUS:9090</span>`
4. <span style="white-space: pre-wrap;">Cliquer sur </span>****Save &amp; Test****

---

##### 📄 Notes utiles

- <span style="white-space: pre-wrap;">Le fichier </span>`<span class="editor-theme-code">prometheus.yml</span>`<span style="white-space: pre-wrap;"> doit avoir une </span>****seule section** `<strong class="editor-theme-bold editor-theme-code">scrape_configs:</strong>`**
- <span style="white-space: pre-wrap;">Chaque </span>`<span class="editor-theme-code">job_name</span>`<span style="white-space: pre-wrap;"> correspond à une cible identifiée dans Grafana</span>
- Si le service ne démarre pas, vérifiez les erreurs YAML :

```bash
/usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml
```

- Exemple d'erreur courante :

```
yaml: unmarshal errors: field scrape_configs already set
```

<span style="white-space: pre-wrap;">=&gt; Ça signifie que </span>`<span class="editor-theme-code">scrape_configs:</span>`<span style="white-space: pre-wrap;"> est déclaré deux fois</span>

---

🎉 Prometheus est maintenant prêt à collecter des métriques sur tous vos serveurs ✅

# Mise en place de grafana

##### Mise en place de Grafana pour visualiser les métriques Prometheus

<span style="white-space: pre-wrap;">Ce guide explique comment installer et configurer </span>****Grafana****<span style="white-space: pre-wrap;"> sur une VM dédiée (ou LXC), afin d'afficher les métriques collectées par Prometheus, comme celles de </span>****Node Exporter****<span style="white-space: pre-wrap;">, </span>****Proxmox Exporter****, etc.

<p class="callout info"><span style="white-space: pre-wrap;">Vous pouvez également l'installer de manière simple et rapide avec l'aide de Helper-Script : </span>[https://community-scripts.github.io/ProxmoxVE/scripts?id=grafana](https://community-scripts.github.io/ProxmoxVE/scripts?id=grafana)</p>

---

##### ✨ Objectif

- Visualiser en temps réel les métriques de vos machines avec des dashboards interactifs
- Créer des alertes ou graphiques personnalisés via Prometheus

---

##### 🌐 Prérequis

- Une VM dédiée pour Grafana (Debian/Ubuntu recommandé)
- Un serveur Prometheus fonctionnel accessible via IP

---

##### 🛠️ Installation de Grafana (mode natif, sans Docker)

1\. Ajouter le dépôt officiel Grafana

```bash
sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"

wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
```

2\. Installer Grafana

```bash
sudo apt update
sudo apt install grafana -y
```

3\. Activer et démarrer Grafana

```bash
sudo systemctl daemon-reload
sudo systemctl enable --now grafana-server
```

4\. Accès à l'interface web

```
http://IP_DE_LA_VM_GRAFANA:3000
```

Identifiants par défaut :

- ****admin / admin****<span style="white-space: pre-wrap;"> (puis changement de mot de passe)</span>

---

##### 🌍 Connexion à Prometheus

1\. Aller dans Grafana &gt; Configuration &gt; Data Sources

- <span style="white-space: pre-wrap;">Cliquer sur </span>****Add Data Source****
- <span style="white-space: pre-wrap;">Choisir </span>****Prometheus****

2\. Configuration de la source

- ****URL****<span style="white-space: pre-wrap;"> : </span>`<span class="editor-theme-code">http://IP_DU_SERVEUR_PROMETHEUS:9090</span>`
- Laisser les autres options par défaut
- <span style="white-space: pre-wrap;">Cliquer sur </span>****Save &amp; Test****
- Si tout est bon : "Data source is working" ✅

---

##### 📊 Importer des dashboards

Dashboard Node Exporter (métriques système)

- <span style="white-space: pre-wrap;">Aller dans </span>****Dashboards &gt; Import****
- <span style="white-space: pre-wrap;">Entrer l'ID : </span>`<span class="editor-theme-code">1860</span>`
- Choisir la data source Prometheus
- <span style="white-space: pre-wrap;">Cliquer sur </span>****Import****

Dashboard Proxmox Exporter

- <span style="white-space: pre-wrap;">Aller dans </span>****Dashboards &gt; Import****
- <span style="white-space: pre-wrap;">Entrer l'ID : </span>`<span class="editor-theme-code">11074</span>`
- Importer

Dashboard Loki (si Promtail est installé)

- <span style="white-space: pre-wrap;">ID recommandé : </span>`<span class="editor-theme-code">13639</span>`<span style="white-space: pre-wrap;"> (journald, fail2ban, syslog)</span>

---

##### ⚖️ Bonnes pratiques

- Organisez vos dashboards par machine ou par rôle (ex : VPS, proxmox, backup...)
- Créez des "folders" pour chaque groupe
- Activez l'authentification externe (LDAP, OAuth) si Grafana est exposé publiquement

---

##### 🔒 Sécurité (optionnel)

- Si vous exposez Grafana sur Internet, pensez à le placer derrière un reverse proxy (ex : Caddy, Nginx) avec HTTPS et mot de passe
- Sinon, limitez l'accès au port 3000 avec un pare-feu ou WireGuard

---

##### 📄 Notes utiles

- Les sources de données Grafana peuvent inclure Prometheus, Loki, InfluxDB, etc.
- Vous pouvez aussi créer des alertes dans Grafana (Alerts v2)
- Les dashboards peuvent être exportés et sauvegardés au format JSON

---

🎉 Grafana est maintenant prêt à afficher vos métriques Prometheus sur une interface puissante et personnalisable ✅