Aller au contenu

Netdata - Monitoring temps réel

Vue d'ensemble

Netdata est un système de monitoring temps réel déployé sur ProbatioVault-IA-Server pour surveiller : - Ressources système : CPU, RAM, disques, réseau - GPU NVIDIA : 2× RTX 5090 avec utilisation VRAM - Services : Systemd, Docker, processus - Métriques réseau : Bande passante, connexions, latence

URL d'accès : http://192.168.1.82:19999

Caractéristiques

Métriques temps réel

  • Granularité : 1 seconde (mise à jour en direct)
  • Rétention : 1 heure en RAM (haute résolution)
  • Performance : ~1% CPU, ~100 MB RAM

Monitoring GPU NVIDIA

  • Utilisation GPU (%)
  • Température (°C)
  • VRAM utilisée (64 GB total par RTX 5090)
  • Puissance consommée (W)
  • Fréquence GPU/Mémoire (MHz)

Alertes (désactivées par défaut)

  • CPU > 90% pendant 5 min
  • RAM > 95%
  • Disque > 90%
  • GPU température > 85°C

Installation

Déploiement automatique via GitLab CI/CD

Le playbook Ansible install-netdata.yml est exécuté automatiquement à chaque push sur main.

Job GitLab : ansible:install-netdata (stage apply)

Installation manuelle (si besoin)

cd /opt/probatiovault-ia-server/ansible
ansible-playbook -i inventory/hosts playbooks/install-netdata.yml

Vérification de l'installation

# Status du service
sudo systemctl status netdata

# Logs temps réel
sudo journalctl -u netdata -f

# Accès web
curl -I http://192.168.1.82:19999

Architecture

Composants installés

/opt/netdata/                    # Installation Netdata
/etc/netdata/                    # Configuration
  ├── netdata.conf               # Config principale
  └── python.d.conf              # Plugins Python (nvidia_smi)
/var/cache/netdata/              # Base de données métriques
/var/log/netdata/                # Logs

Plugins activés

Plugin Description Fichiers surveillés
proc Système Linux (/proc) CPU, RAM, réseau, disques
diskspace Espace disque Tous les points de montage
nvidia_smi GPU NVIDIA 2× RTX 5090
systemd Services systemd plexmediaserver, ollama, etc.
python.d/nvidia_smi Métriques GPU détaillées Via nvidia-ml-py3

Configuration réseau

[web]
    bind to = *                  # Écoute sur toutes les interfaces
    default port = 19999         # Port HTTP
    allow connections from = *   # Pas de restriction IP

Sécurité : Netdata est exposé sur le réseau local uniquement (192.168.1.0/24). Pas d'accès Internet.

Utilisation

Interface web

  1. Ouvrir http://192.168.1.82:19999
  2. Navigation :
  3. Overview : Vue d'ensemble système
  4. CPU : Détails par cœur (8 cœurs Intel)
  5. GPU : Métriques NVIDIA (2× RTX 5090)
  6. Memory : RAM, Swap, Cache
  7. Network : Interfaces eth0, wg0
  8. Disk : I/O, latence, utilisation

Métriques GPU

Dashboard GPU : Section "nvidia_smi" dans le menu de gauche

Métriques disponibles :

GPU 0 (RTX 5090) :
  - gpu_utilization : 45%
  - memory_utilization : 12.3 GB / 64 GB
  - temperature : 68°C
  - power_usage : 250 W / 450 W
  - fan_speed : 35%

GPU 1 (RTX 5090) :
  - gpu_utilization : 78%
  - memory_utilization : 45.8 GB / 64 GB
  - temperature : 72°C
  - power_usage : 380 W / 450 W
  - fan_speed : 55%

API REST

Netdata expose une API REST pour récupérer les métriques.

# Liste des métriques disponibles
curl -s http://192.168.1.82:19999/api/v1/charts | jq '.charts | keys'

# Utilisation GPU (dernières 60 secondes)
curl -s "http://192.168.1.82:19999/api/v1/data?chart=nvidia_smi_0.gpu_utilization&after=-60" | jq

# RAM disponible
curl -s "http://192.168.1.82:19999/api/v1/data?chart=system.ram&after=-60" | jq

Intégration Homer

Netdata est référencé dans le dashboard Homer :

- name: "Monitoring & Logs"
  items:
    - name: "Netdata"
      logo: "assets/tools/netdata.png"
      subtitle: "Real-time monitoring (CPU, RAM, GPU)"
      url: "http://192.168.1.82:19999"

Accès depuis Homer : http://192.168.1.82:8080

Configuration avancée

Activer les alertes

# Éditer la configuration des alertes
sudo nano /etc/netdata/health.d/cpu.conf

# Redémarrer Netdata
sudo systemctl restart netdata

Exemple d'alerte GPU :

alarm: gpu_temp_high
on: nvidia_smi_0.temperature
lookup: average -5m
units: °C
every: 30s
warn: $this > 80
crit: $this > 85

Augmenter la rétention des données

Par défaut, Netdata conserve 1 heure de données en RAM. Pour augmenter :

sudo nano /etc/netdata/netdata.conf
[db]
    # Stockage sur disque (au lieu de RAM)
    mode = dbengine

    # Rétention : 7 jours
    storage tiers = 3
    dbengine multihost disk space MB = 2048
sudo systemctl restart netdata

Désactiver la télémétrie (déjà fait)

L'installation via le playbook désactive automatiquement la télémétrie Netdata Cloud :

# Vérifier que la télémétrie est désactivée
grep -r "enabled = no" /etc/netdata/netdata.conf | grep cloud

Monitoring des services ProbatioVault

Services surveillés automatiquement

Netdata détecte et surveille tous les services systemd actifs :

- plexmediaserver.service
- ollama.service
- netdata.service
- nginx.service
- mkdocs.service (si configuré)

Dashboard : Section "Services" > "Systemd"

Métriques par service

Pour chaque service : - État (running/failed/stopped) - CPU utilisé - Mémoire utilisée - Nombre de processus - Temps de démarrage

Troubleshooting

Netdata ne démarre pas

# Vérifier les logs
sudo journalctl -u netdata -n 50

# Tester la configuration
sudo /usr/sbin/netdata -D

# Réinstaller si nécessaire
sudo /usr/libexec/netdata/netdata-uninstaller.sh --yes
cd /opt/probatiovault-ia-server/ansible
ansible-playbook -i inventory/hosts playbooks/install-netdata.yml

GPU non détecté

# Vérifier que nvidia-smi fonctionne
nvidia-smi

# Vérifier le plugin Python NVIDIA
sudo nano /etc/netdata/python.d.conf

# Doit contenir :
# nvidia_smi: yes

# Redémarrer Netdata
sudo systemctl restart netdata

Dashboard vide ou métriques manquantes

# Vérifier les permissions
ls -la /var/cache/netdata/
sudo chown -R netdata:netdata /var/cache/netdata/

# Vérifier les plugins actifs
curl -s http://192.168.1.82:19999/api/v1/info | jq '.collectors'

# Redémarrer Netdata
sudo systemctl restart netdata

Performances dégradées

Si Netdata consomme trop de ressources :

# Désactiver les plugins inutiles
sudo nano /etc/netdata/netdata.conf
[plugins]
    # Désactiver les plugins non essentiels
    apps = no
    cgroups = no
    charts.d = no
sudo systemctl restart netdata

Maintenance

Mise à jour Netdata

Netdata se met à jour automatiquement tous les jours (si installé via kickstart.sh).

Pour forcer une mise à jour :

sudo /usr/libexec/netdata/netdata-updater.sh

Pour désactiver les mises à jour automatiques :

sudo /usr/libexec/netdata/netdata-updater.sh --disable-telemetry

Sauvegarde de la configuration

# Sauvegarder la config
sudo tar czf /tmp/netdata-config-backup.tar.gz /etc/netdata/

# Restaurer
sudo tar xzf /tmp/netdata-config-backup.tar.gz -C /
sudo systemctl restart netdata

Nettoyage des logs

# Netdata log rotation (automatique)
ls -lh /var/log/netdata/

# Forcer le nettoyage
sudo journalctl --vacuum-time=7d

Intégration avec d'autres outils

Prometheus (exportateur de métriques)

Netdata peut exporter ses métriques vers Prometheus :

[backend]
    enabled = yes
    type = prometheus
    destination = localhost:9090

Grafana (visualisation avancée)

Pour créer des dashboards Grafana à partir de Netdata :

  1. Ajouter Netdata comme source Prometheus dans Grafana
  2. Importer le dashboard Netdata officiel : https://grafana.com/grafana/dashboards/2701

Alerting (notifications)

Configurer les notifications Slack/Email :

sudo nano /etc/netdata/health_alarm_notify.conf
# Slack
SEND_SLACK="YES"
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
DEFAULT_RECIPIENT_SLACK="#monitoring"

Ressources

  • Documentation officielle : https://learn.netdata.cloud/
  • GitHub : https://github.com/netdata/netdata
  • API REST : https://learn.netdata.cloud/docs/rest-api
  • Plugins : https://learn.netdata.cloud/docs/data-collection

Résumé des ports

Service Port Protocole Accès
Netdata Web 19999 HTTP LAN uniquement
Netdata API 19999 HTTP LAN uniquement

Firewall : Aucune règle nécessaire (réseau local uniquement).