Surveillance système · 30 min read · Nov 22, 2025

Comment installer et surveiller des services à l'aide de l'outil de surveillance Netdata sur Debian 12

Netdata est un système de surveillance open-source pour les systèmes d’exploitation basés sur Linux. Il fournit des performances et une surveillance en temps réel à l’aide de tableaux de bord magnifiques et détaillés. Il offre des centaines d’outils pour surveiller les serveurs, l’utilisation du CPU, de la mémoire, des processus système, de l’utilisation du disque, des réseaux IPv4 et IPv6, du pare-feu système et des applications comme Nginx, MySQL, MongoDB, Redis, ElasticSearch, PostgreSQL, PHP-FPM, etc. Il s’intègre à d’autres outils de surveillance tels que Prometheus, Graphite, Kafka, Grafana, et plus encore.

Ce tutoriel vous montrera comment installer et surveiller divers services à l’aide de Netdata sur un serveur Debian 12. Vous l’utiliserez également pour suivre les métriques d’une pile LEMP et du moteur Docker.

Prérequis

  • Un serveur exécutant Debian 12.
  • Un utilisateur non-root avec des privilèges sudo.
  • Un nom de domaine entièrement qualifié (FQDN) comme netdata.example.com pointant vers votre serveur.
  • Un compte SMTP avec un service de messagerie comme Amazon SES ou Mailgun.
  • Assurez-vous que tout est à jour. $ sudo apt update $ sudo apt upgrade
  • Quelques paquets dont votre système a besoin. $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -y Certains de ces paquets peuvent déjà être installés sur votre système.

Étape 1 - Configurer le pare-feu

La première étape consiste à configurer le pare-feu. Debian est livré avec ufw (Uncomplicated Firewall) par défaut.

Vérifiez si le pare-feu est en cours d’exécution.

$ sudo ufw status

Vous obtiendrez la sortie suivante.

Status: inactive

Autorisez le port SSH afin que le pare-feu ne rompe pas la connexion actuelle lors de son activation.

$ sudo ufw allow OpenSSH

Autorisez également les ports HTTP et HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Activez le pare-feu

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Vérifiez à nouveau l’état du pare-feu.

$ sudo ufw status

Vous devriez voir une sortie similaire.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Étape 2 - Installer NetData

Netdata est livré avec un script d’installation qui peut fonctionner sur n’importe quelle distribution Linux. Exécutez la commande suivante pour télécharger le script d’installation.

$ wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh

Exécutez le script d’installation en utilisant la commande suivante.

$ sudo sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry

Le drapeau --stable-channel installe la version stable de Netdata. Le drapeau --disable-telemetry empêche Netdata de soumettre des statistiques anonymes à leur serveur. Il existe d’autres drapeaux que vous pouvez utiliser pour personnaliser votre installateur.

Entrez Y pour confirmer l’ajout du dépôt Netdata et son installation sur votre serveur. Vous devriez recevoir la sortie suivante lors de l’installation réussie.

Successfully installed the Netdata Agent.

Official documentation can be found online at https://learn.netdata.cloud/docs/.

Looking to monitor all of your infrastructure with Netdata? Check out Netdata Cloud at https://app.netdata.cloud.

Join our community and connect with us on:
  - GitHub: https://github.com/netdata/netdata/discussions
  - Discord: https://discord.gg/5ygS846fR6
  - Our community forums: https://community.netdata.cloud/
[/root]# rm -rf /tmp/netdata-kickstart-wH4pebXveT
 OK

L’installateur de Netdata active et démarre automatiquement le service. Vérifiez l’état du service.

$ sudo systemctl status netdata
? netdata.service - Real time performance monitoring
     Loaded: loaded (/lib/systemd/system/netdata.service; enabled; preset: enabled)
     Active: active (running) since Thu 2023-08-24 10:26:56 UTC; 42s ago
   Main PID: 2811 (netdata)
      Tasks: 82 (limit: 1107)
     Memory: 108.2M
        CPU: 4.271s
     CGroup: /system.slice/netdata.service
             ??2811 /usr/sbin/netdata -D -P /var/run/netdata/netdata.pid
             ??2822 /usr/sbin/netdata --special-spawn-server
             ??3127 bash /usr/libexec/netdata/plugins.d/tc-qos-helper.sh 1
             ??3137 /usr/libexec/netdata/plugins.d/go.d.plugin 1
             ??3142 /usr/libexec/netdata/plugins.d/ebpf.plugin 1
             ??3145 /usr/libexec/netdata/plugins.d/nfacct.plugin 1
             ??3149 /usr/libexec/netdata/plugins.d/systemd-journal.plugin 1
             ??3155 /usr/libexec/netdata/plugins.d/debugfs.plugin 1
             ??3159 /usr/libexec/netdata/plugins.d/apps.plugin 1

Aug 24 10:26:58 netdata ebpf.plugin[3142]: set name of thread 3188 to EBPF SOFTIRQ
.......

Si votre service n’est pas démarré ou activé, vous pouvez le faire en utilisant la commande suivante.

$ sudo systemctl enable netdata --now

Exécutez la commande suivante pour vérifier les ports ouverts et le processus qui les utilise.

$ sudo ss -plnt | grep netdata

Vous devriez obtenir une sortie similaire. Netdata utilise le port 19999 pour son tableau de bord, comme le montre la sortie ci-dessous. Netdata utilise le port 8125 pour recevoir des statistiques d’autres applications.

State  Recv-Q Send-Q      Local Address:Port  Peer Address:Port    Process
LISTEN 0      4096         0.0.0.0:19999      0.0.0.0:*            users:(("netdata",pid=2811,fd=8))
LISTEN 0      4096       127.0.0.1:8125       0.0.0.0:*            users:(("netdata",pid=2811,fd=47))
LISTEN 0      4096           [::1]:8125          [::]:*            users:(("netdata",pid=2811,fd=46))
LISTEN 0      4096            [::]:19999         [::]:*            users:(("netdata",pid=2811,fd=9))

Étape 3 - Installer Nginx

Debian 12 est livré avec une version plus ancienne de Nginx. Pour installer la dernière version, vous devez télécharger le dépôt officiel de Nginx.

Importez la clé de signature de Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Ajoutez le dépôt pour la version stable de Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Mettez à jour la liste des dépôts système.

$ sudo apt update

Installez Nginx et les utilitaires Apache. Le paquet utilitaires Apache est requis pour l’utilitaire htpasswd.

$ sudo apt install nginx apache2-utils

Vérifiez l’installation. Sur les systèmes Debian, la commande suivante ne fonctionnera qu’avec sudo.

$ sudo nginx -v
nginx version: nginx/1.24.0

Démarrez le serveur Nginx.

$ sudo systemctl start nginx

Vérifiez l’état du service.

$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Thu 2023-08-24 11:36:34 UTC; 4s ago
       Docs: https://nginx.org/en/docs/
    Process: 3657 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 3658 (nginx)
      Tasks: 2 (limit: 1107)
     Memory: 1.8M
        CPU: 12ms
     CGroup: /system.slice/nginx.service
             ??3658 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??3659 "nginx: worker process"

Étape 4 - Installer SSL

Nous devons installer Certbot pour générer le certificat SSL. Vous pouvez soit installer Certbot en utilisant le dépôt de Debian, soit obtenir la dernière version en utilisant l’outil Snapd. Nous allons utiliser la version Snapd.

Debian 12 ne vient pas avec Snapd installé. Installez le paquet Snapd.

$ sudo apt install snapd

Exécutez les commandes suivantes pour vous assurer que votre version de Snapd est à jour.

$ sudo snap install core && sudo snap refresh core

Installez Certbot.

$ sudo snap install --classic certbot

Utilisez la commande suivante pour vous assurer que la commande Certbot peut être exécutée en créant un lien symbolique vers le répertoire /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Vérifiez si Certbot fonctionne correctement.

$ certbot --version
certbot 2.6.0

Générez le certificat SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d netdata.example.com

La commande ci-dessus téléchargera un certificat dans le répertoire /etc/letsencrypt/live/netdata.example.com sur votre serveur.

Générez un certificat de groupe Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Vérifiez le service de planification de renouvellement Certbot.

$ sudo systemctl list-timers

Vous trouverez snap.certbot.renew.service comme l’un des services programmés pour s’exécuter.

NEXT                        LEFT          LAST                        PASSED      UNIT                         ACTIVATES
.....
Thu 2023-08-24 13:40:00 UTC 1h 59min left -                           -           snap.certbot.renew.timer     snap.certbot.renew.service
Thu 2023-08-24 18:47:23 UTC 7h left       Thu 2023-08-24 09:30:41 UTC 2h 9min ago apt-daily.timer              apt-daily.service
Fri 2023-08-25 00:00:00 UTC 12h left      -                           -           dpkg-db-backup.timer         dpkg-db-backup.service

Faites un essai du processus pour vérifier si le renouvellement SSL fonctionne correctement.

$ sudo certbot renew --dry-run

Si vous ne voyez pas d’erreurs, vous êtes prêt. Votre certificat se renouvellera automatiquement.

Étape 5 - Configurer Nginx

Créez et ouvrez le fichier /etc/nginx/conf.d/netdata.conf pour l’édition.

$ sudo nano /etc/nginx/conf.d/netdata.conf

Collez le code suivant dedans.

# Define netdata upstream
upstream netdata {
    server 127.0.0.1:19999;
    keepalive 64;
}

# Redirect all non-encrypted to encrypted
server {
    listen 80;
    listen [::]:80;
    server_name netdata.example.com;
    return 301 https://netdata.example.com$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    
    server_name netdata.example.com;

    ssl_certificate     /etc/letsencrypt/live/netdata.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/netdata.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/netdata.example.com/chain.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_prefer_server_ciphers off;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;
    resolver_timeout 2s;
    
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

    access_log /var/log/nginx/netdata.example.com.access.log main;
    error_log  /var/log/nginx/netdata.example.com.error.log;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
     proxy_pass http://netdata;
     proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header Connection "keep-alive";
        proxy_store off;
        auth_basic "NetData Private Area";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

Une fois terminé, enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Ouvrez le fichier /etc/nginx/nginx.conf pour l’édition.

$ sudo nano /etc/nginx/nginx.conf

Ajoutez la ligne suivante avant la ligne include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Exécutez la commande suivante pour générer un fichier de mot de passe pour activer l’authentification HTTP.

$ sudo htpasswd -c /etc/nginx/.htpasswd netadmin
New password: 
Re-type new password: 
Adding password for user netadmin

Vérifiez la syntaxe du fichier de configuration Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Redémarrez le service Nginx pour activer la nouvelle configuration.

$ sudo systemctl restart nginx

Étape 6 - Accéder et utiliser le tableau de bord Netdata

Vous devriez pouvoir accéder à Netdata via l’URL https://netdata.example.com. La première fois que vous y accédez, vous serez invité à entrer vos détails d’authentification HTTP.

Authentification HTTP Netdata

Vous obtiendrez le tableau de bord suivant.

Tableau de bord Netdata Première fois

Vous pouvez mettre en pause, arrêter et démarrer la surveillance à tout moment en utilisant le bouton Lecture sur le tableau de bord.

Bouton Lecture/Pause Netdata

Vous pouvez accéder à divers tableaux de bord en cliquant sur les options de la barre latérale droite.

Netdata peut par défaut suivre votre fuseau horaire correctement. Si ce n’est pas le cas, cliquez sur le chronomètre et sélectionnez le fuseau horaire correct dans le popup pour le changer.

Changement de fuseau horaire Netdata

Étape 7 - Configurer NetData

Netdata stocke sa configuration principale dans le fichier /etc/netdata/netdata.conf. Vous pouvez voir ces paramètres en visitant l’URL https://netdata.example.com/netdata.conf dans votre navigateur.

Fichier de configuration Netdata dans le navigateur

Le fichier est divisé en plusieurs sections, telles que [global], [db], [web], [registry], et plus encore. La configuration par défaut est suffisante pour nous permettre de commencer. Netdata collecte des données à l’aide de deux types de plugins :

  1. internal les plugins sont écrits en langage C et s’exécutent en tant que threads à l’intérieur du démon netdata.
  2. external les plugins sont écrits dans divers langages, y compris Python, Go, etc., et sont lancés en tant que processus indépendants de longue durée par le démon netdata. Ils communiquent avec le démon Netdata à l’aide de pipes.

Configurer l’utilisation de la mémoire NetData

L’utilisation de la RAM de NetData est décidée en fonction du temps que vous souhaitez conserver les données de graphique enregistrées avant qu’elles ne soient perdues.

  • 3600 secondes ou 1 heure de rétention des données de graphique utilise 15 Mo de RAM.
  • 7200 secondes ou 2 heures de rétention des données de graphique utilise 30 Mo de RAM.
  • 14400 secondes ou 4 heures de rétention des données de graphique utilise 60 Mo de RAM.

Chaque fois que vous doublez le temps de rétention des données de graphique, l’exigence en RAM double également. Ces exigences en RAM sont basées sur le nombre de graphiques utilisés par le tableau de bord par défaut. Ajouter plus de graphiques et d’applications modifiera ces estimations.

Ouvrez le fichier de configuration Netdata.

$ sudo nano /etc/netdata/netdata.conf

Entrez la ligne history = 14400 sous la section [global].

[global]
    run as user = netdata

    # default storage size - increase for longer data retention
    page cache size = 32
    dbengine multihost disk space = 256
    history = 14400

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Désactiver la télémétrie

Par défaut, Netdata collecte des informations anonymes sur l’utilisation à l’aide d’une plateforme d’analyse de produits, Posthog. Chaque fois que le démon Netdata est démarré ou arrêté, Netdata utilise le script de statistiques anonymes pour collecter les informations système suivantes et les envoyer à lui-même.

  • Version de Netdata
  • Nom du système d’exploitation, version, id, id_like
  • Nom du noyau, version, architecture
  • Technologie de virtualisation
  • Technologie de conteneurisation
  • Informations supplémentaires sur les échecs du client Netdata.

Nous avons désactivé la télémétrie lors de l’installation, mais si vous ne l’avez pas fait, vous pouvez le faire maintenant. Créez un fichier vide appelé .opt-out-from-anonymous-statistics dans le répertoire Netdata.

$ sudo touch /etc/netdata/.opt-out-from-anonymous-statistics

Redémarrez Netdata pour activer le changement.

$ sudo systemctl restart netdata

Stockage à long terme

Netdata utilise la RAM et le disque de votre système pour stocker des données historiques par défaut. Le processus Netdata par défaut collecte environ 2000 métriques par seconde, ce qui signifie que la configuration par défaut stockera environ deux jours de métriques sur la RAM et le disque.

Pour stocker plus de métriques, vous avez les deux options suivantes :

  1. Configurer Netdata pour utiliser plus de RAM et d’espace disque
  2. Archiver les métriques dans une base de données externe

Nous ne discuterons que de la première option dans ce tutoriel. Pour la deuxième option, vous devriez vous référer à la documentation officielle de Netdata.

Configurer Netdata pour utiliser plus de RAM et d’espace disque

Ouvrez le fichier /etc/netdata/netdata.conf pour l’édition.

$ sudo nano /etc/netdata/netdata.conf

Configurez les lignes suivantes sous la section [global].

[global]
...
    page cache size = 32
    dbengine multihost disk space = 256

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

La taille du cache de page détermine la quantité de RAM utilisée, et la variable dbengine multihost disk space détermine l’utilisation du disque. Par défaut, Netdata utilise 32 Mo de RAM et 256 Mo d’espace disque. Vous pouvez changer l’une ou l’autre des deux valeurs à votre convenance.

Vous pouvez utiliser le calculateur de métriques de stockage de Netdata pour décider combien de RAM et d’espace disque vous avez besoin.

Réduire la fréquence de collecte

Vous pouvez optimiser les performances de Netdata en augmentant le temps entre les collectes de métriques. Par défaut, Netdata collecte des métriques chaque seconde.

Pour changer cela, ouvrez le fichier de configuration Netdata pour l’édition.

$ sudo nano /etc/netdata/netdata.conf

Entrez la ligne suivante sous la section [global]. Cela augmente la fréquence à 5 secondes.

[global]
...
    update every = 5

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Étape 8 - Configurer les notifications Slack

La première étape consiste à créer une application Slack et à la connecter à un canal spécifique dans votre espace de travail pour configurer les notifications Slack.

Visitez la page API Slack et cliquez sur le bouton Créer une application pour commencer à créer une application.

Applications API Slack

Cliquez sur le lien À partir de zéro pour créer l’application.

Popup Créer une application Slack

Sélectionnez un nom pour votre application et choisissez l’espace de travail où vous souhaitez que votre application apparaisse. Si vous ne souhaitez pas associer votre application à l’espace de travail existant, vous pouvez en créer un autre et revenir à cette étape.

Popup Nom de l'application Slack

Ouvrez la page Webhook entrant en sélectionnant l’option sous le menu Fonctionnalités dans la barre latérale gauche, puis activez le webhook.

Webhooks entrants des applications Slack

Cliquez sur le bouton Ajouter un nouveau webhook à l’espace de travail en bas de la page et sélectionnez votre espace de travail et le canal cible pour les notifications.

Ajouter l'application Slack à l'espace de travail

Cliquez sur le bouton Autoriser pour continuer. Retournez à la page Webhooks entrants et copiez l’URL du webhook.

URL du webhook Slack

Retournez au terminal et passez au répertoire /etc/netdata.

$ cd /etc/netdata

Netdata fournit un script edit-config pour éditer et créer des fichiers de configuration Netdata. Exécutez le fichier suivant pour créer et ouvrir le fichier health_alarm_notify.conf en utilisant l’éditeur par défaut de votre système.

$ sudo ./edit-config health_alarm_notify.conf

Faites défiler vers le bas jusqu’à la section suivante.

# Enable slack notification
SEND_SLACK="YES"

# Select the slack webhook
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/xxxxxxx/xxxxxx/xxxxxxxxxxxxx"

# Default channel for notification
DEFAULT_RECIPIENT_SLACK="notifications"

Assurez-vous que la variable SEND_SLACK est définie sur oui. Collez l’URL du webhook copiée dans la variable SLACK_WEBHOOK_URL. Entrez le nom de votre canal pour la variable DEFAULT_RECIPIENT_SLACK.

Si votre éditeur est Vim, appuyez sur la touche Échap pour quitter l’édition, tapez :x et appuyez sur la touche Entrée pour enregistrer le fichier et quitter l’éditeur.

Si votre éditeur est Nano, enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Redémarrez Netdata pour appliquer les modifications.

$ sudo systemctl restart netdata

Étape 9 - Configurer les notifications par e-mail

Netdata utilise sendmail par défaut pour envoyer des notifications par e-mail, mais gérer un serveur de messagerie n’est pas une tâche facile. Netdata ne prend pas en charge SMTP, mais vous pouvez installer un paquet appelé client msmtp. Il vous permet d’envoyer des e-mails à un serveur SMTP.

Installez msmtp.

$ sudo apt install msmtp

Créez et ouvrez le fichier de configuration pour msmtp.

$ sudo nano /etc/msmtprc

Collez le code suivant dedans.

# Set default values for all following accounts.
defaults

# Use the mail submission port 587 instead of the SMTP port 25.
port 587

# Always use TLS.
tls on

# The SMTP server of your ISP
account ses
host email-smtp..amazonaws.com
from [email protected]
auth on
user 
password 

# Set default account to isp
account default: ses

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Netdata fournit un script edit-config pour éditer et créer des fichiers de configuration Netdata. Exécutez le fichier suivant pour créer et ouvrir le fichier health_alarm_notify.conf en utilisant l’éditeur par défaut de votre système.

$ sudo /etc/netdata/edit-config health_alarm_notify.conf

Faites défiler vers le bas jusqu’à la section suivante et entrez le chemin vers le msmtp.

# external commands

# The full path to the sendmail command.
# If empty, the system $PATH will be searched for it.
# If not found, email notifications will be disabled (silently).
sendmail="/usr/bin/msmtp"

Localisez la section suivante et entrez les détails de l’expéditeur et du destinataire et assurez-vous que l’envoi d’e-mails est activé.

# email global notification options

# multiple recipients can be given like this:
#              "[email protected] [email protected] ..."

# the email address sending email notifications
# the default is the system user netdata runs as (usually: netdata)
# The following formats are supported:
# EMAIL_SENDER="user@domain"
# EMAIL_SENDER="User Name "
# EMAIL_SENDER="'User Name' "
# EMAIL_SENDER="\"User Name\" "
EMAIL_SENDER="Server Admin <[email protected]>"

# enable/disable sending emails
SEND_EMAIL="YES"

# if a role recipient is not configured, an email will be send to:
DEFAULT_RECIPIENT_EMAIL="[email protected]"
# to receive only critical alarms, set it to "root|critical"

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Redémarrez Netdata pour appliquer les modifications.

$ sudo systemctl restart netdata

Étape 10 - Tester les canaux de notification

Testons si les notifications par e-mail fonctionnent. Connectez-vous en tant qu’utilisateur système netdata créé lors de l’installation.

$ sudo su -s /bin/bash netdata

Exécutez le script de notification d’alarme pour envoyer une notification de test.

$ /usr/libexec/netdata/plugins.d/alarm-notify.sh test

Vous recevrez la sortie suivante.

# SENDING TEST WARNING ALARM TO ROLE: sysadmin
2023-08-24 12:56:00: alarm-notify.sh: INFO: sent email notification for: netdata test.chart.test_alarm is WARNING to '[email protected]'
# OK

# SENDING TEST CRITICAL ALARM TO ROLE: sysadmin
2023-08-24 12:56:03: alarm-notify.sh: INFO: sent email notification for: netdata test.chart.test_alarm is CRITICAL to '[email protected]'
# OK

# SENDING TEST CLEAR ALARM TO ROLE: sysadmin
2023-08-24 12:56:06: alarm-notify.sh: INFO: sent email notification for: netdata test.chart.test_alarm is CLEAR to '[email protected]'
# OK

Quittez l’utilisateur.

$ exit.

Ouvrez votre application Slack, et vous devriez avoir reçu les alertes suivantes.

Notifications de test Slack Netdata

Vous devriez également recevoir trois e-mails concernant les avertissements de test.

Notifications de test par e-mail Netdata

Étape 11 - Configurer la surveillance du système

Maintenant que nous avons configuré et testé les notifications, configurons et testons les notifications pour le système, comme l’utilisation du CPU.

Exécutez les commandes suivantes pour créer et ouvrir le fichier de configuration CPU.

$ sudo /etc/netdata/edit-config health.d/cpu.conf

Changez les valeurs des options warn et crit sous 10min_cpu_usage comme indiqué ci-dessous.

warn: $this > (($status >= $WARNING)  ? (60) : (70))
crit: $this > (($status == $CRITICAL) ? (75) : (85))

Changez la ligne to:silent en to:sysadmin comme indiqué.

 template: 10min_cpu_usage
       on: system.cpu
    class: Utilization
     type: System
component: CPU
       os: linux
    hosts: *
   lookup: average -10m unaligned of user,system,softirq,irq,guest
    units: %
    every: 1m
     warn: $this > (($status >= $WARNING)  ? (60) : (70))
     crit: $this > (($status == $CRITICAL) ? (75) : (85))
    delay: down 15m multiplier 1.5 max 1h
     info: average CPU utilization over the last 10 minutes (excluding iowait, nice and steal)
       to: sysadmin

Enregistrez le fichier et quittez l’éditeur.

Le paramètre to:silent silence les notifications et donc pour recevoir les notifications, vous devez changer la valeur du moniteur en to:sysadmin pour ces moniteurs.

Le paramètre ci-dessus enverra un avertissement si l’utilisation du CPU se situe entre 60 et 70 % et un avertissement critique lorsque l’utilisation du CPU se situe entre 75 et 85 %.

Redémarrez le service Netdata.

$ sudo systemctl restart netdata

Testons le paramètre en installant l’application Stress.

$ sudo apt install stress

Exécutez la commande suivante pour augmenter l’utilisation du CPU de votre serveur.

$ stress --cpu 2

Laissez la commande s’exécuter pendant 5 à 10 minutes, et vous recevrez des messages d’utilisation élevée du CPU. Une fois que vous avez reçu ces messages, retournez au terminal et quittez la commande en appuyant sur Ctrl + Z.

Après avoir arrêté le service, vous recevrez une notification de récupération du CPU sur Slack.

Notifications d'utilisation du CPU Slack

Vous recevrez les messages d’e-mail suivants pour la même chose.

Notifications par e-mail d'utilisation du CPU Netdata

Étape 12 - Configurer la surveillance de Nginx

L’une des applications les plus couramment surveillées à l’aide de Netdata est le serveur et les paquets SQL. Surveillons le serveur Nginx à l’aide de Netdata.

Pour activer la surveillance du serveur Nginx, nous devons utiliser le ngx_http_stub_status_module. Il est généralement préinstallé avec Nginx. Vous pouvez vérifier si le module est présent. Le sudo est requis sur la commande sur le système Debian.

$ sudo nginx -V 2>&1 | grep -o with-http_stub_status_module
with-http_stub_status_module

Si vous ne recevez aucune réponse, cela signifie que votre installation de Nginx ne prend pas en charge la fonctionnalité. Vous devrez compiler Nginx dans ce cas.

Ouvrez le fichier de configuration par défaut de Nginx /etc/nginx/conf.d/default.conf pour l’édition. L’emplacement du fichier est différent car nous avons installé Nginx à partir de son dépôt officiel. Si vous installez Nginx à partir du dépôt de l’OS, alors l’emplacement du fichier sera /etc/nginx/nginx.conf.

$ sudo nano /etc/nginx/conf.d/default.conf

Entrez le code suivant à l’intérieur du bloc serveur avant la dernière accolade fermante.

# Enable module stub_status
location /stub_status {
    stub_status;
    allow 127.0.0.1;        #only allow requests from localhost
    deny all;               #deny all other hosts
}

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Vérifiez la configuration de Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Redémarrez le serveur Nginx.

$ sudo systemctl restart nginx

Redémarrez le service Netdata.

$ sudo systemctl restart netdata

Vous devriez voir les détails de connexion Nginx dans votre tableau de bord Netdata.

Détails de connexion Nginx Netdata

Surveiller les journaux Nginx

Netdata peut également surveiller les journaux d’accès Nginx. Pour ce faire, passez au répertoire Netdata.

$ cd /etc/netdata

Exécutez la commande suivante pour générer un fichier de configuration pour surveiller les journaux d’accès.

$ sudo ./edit-config go.d/web_log.conf

Faites défiler jusqu’en bas du fichier et trouvez la section suivante.

# -------------------------------------------
# nginx log on various distros

# debian, arch
nginx_log:
  name: 'nginx'
  path: '/var/log/nginx/access.log'

# gentoo
nginx_log2:
  name: 'nginx_site'
  path: '/var/log/nginx/localhost.access_log'

Changez le chemin pour surveiller les fichiers journaux respectifs. Vous pouvez ajouter autant de sections que vous le souhaitez pour surveiller autant d’hôtes et leurs fichiers journaux d’accès. Notre fichier de configuration ressemble à ceci.

# -------------------------------------------
# nginx log on various distros

# debian, arch
nginx_log:
  name: 'nginx'
  path: '/var/log/nginx/access.log'

nginx_log2:
  name: 'nginx_site1'
  path: '/var/log/nginx/site1.access_log'

nginx_log3:
  name: 'nginx_site2'
  path: '/var/log/nginx/site2.access_log'

nginx_log4:
  name: 'nginx_site3'
  path: '/var/log/nginx/site3.access_log'

Enregistrez et quittez l’éditeur.

Pour accéder aux fichiers journaux, Netdata a besoin de l’autorisation d’accéder au répertoire. Par défaut, le groupe système adm a l’autorisation d’accéder aux fichiers journaux. Pour donner accès à Netdata, nous devons ajouter l’utilisateur netdata au groupe adm.

$ sudo usermod -aG adm netdata

Redémarrez Nginx et le service Netdata.

$ sudo systemctl restart nginx netdata

Rechargez le tableau de bord Netdata pour voir vos données de fichiers journaux.

Tableau de bord des journaux d'accès Netdata

Étape 13 - Configurer la surveillance de MySQL/MariaDB

Nous allons installer MariaDB pour notre tutoriel. Nous utiliserons le dépôt de MariaDB à cet effet.

Importez la clé GPG de MariaDB.

$ sudo curl -o /usr/share/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'

Créez et ouvrez le fichier de dépôt de MariaDB.

$ sudo nano /etc/apt/sources.list.d/mariadb.sources

Collez le code suivant dedans.

# MariaDB 10.11 repository list - created 2023-09-05 11:18 UTC
# https://mariadb.org/download/
X-Repolib-Name: MariaDB
Types: deb
# deb.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
# URIs: https://deb.mariadb.org/10.11/debian
URIs: https://mirrors.aliyun.com/mariadb/repo/10.11/debian
Suites: bookworm
Components: main
Signed-By: /usr/share/keyrings/mariadb-keyring.pgp

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Mettez à jour la liste des dépôts système.

$ sudo apt update

Installez le serveur MariaDB.

$ sudo apt install mariadb-server

MariaDB est activé et en cours d’exécution. Vérifiez l’état du service.

$ sudo systemctl status mariadb
? mariadb.service - MariaDB 10.11.5 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; preset: enabled)
    Drop-In: /etc/systemd/system/mariadb.service.d
             ??migrated-from-my.cnf-settings.conf
     Active: active (running) since Tue 2023-09-05 11:44:17 UTC; 20s ago
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
    Process: 9396 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
    Process: 9397 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
    Process: 9399 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR >
    Process: 9440 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
    Process: 9442 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
   Main PID: 9428 (mariadbd)
     Status: "Taking your SQL requests now..."
      Tasks: 13 (limit: 1107)
     Memory: 111.8M
        CPU: 663ms
     CGroup: /system.slice/mariadb.service
             ??9428 /usr/sbin/mariadbd

Démarrez le script d’installation sécurisée de MySQL. Le nom du fichier est différent dans le cas de MariaDB.

$ sudo mariadb-secure-installation
....
Enter current password for root (enter for none): (Press Enter)
....
Switch to unix_socket authentication [Y/n] Y (Type Y and Press Enter)
....
Change the root password? [Y/n] Y (Type Y and Press Enter)
New password: 
Re-enter new password: 
Password updated successfully!
....
Remove anonymous users? [Y/n] Y (Type Y and Press Enter)
....
Disallow root login remotely? [Y/n] Y (Type Y and Press Enter)
....
Remove test database and access to it? [Y/n] Y (Type Y and Press Enter)
....
Reload privilege tables now? [Y/n] Y (Type Y and Press Enter)
....
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Ouvrez le fichier /etc/mysql/mariadb.conf.d/50-server.cnf pour l’édition.

$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Trouvez la section [mariadb] dans le fichier et collez la ligne suivante comme indiqué ci-dessous pour activer le plugin Userstats. Ce paramètre fonctionne uniquement sur MariaDB et non sur le serveur MySQL.

[mariadb]
userstat = 1

Connectez-vous à l’interface de commande MySQL.

$ sudo mysql

Exécutez les commandes suivantes pour créer un utilisateur SQL Netdata et lui donner des privilèges pour suivre les statistiques MySQL.

MariaDB> create user 'netdata'@'localhost';
MariaDB> GRANT USAGE, REPLICATION CLIENT, PROCESS ON *.* TO 'netdata'@'localhost';
MariaDB> FLUSH PRIVILEGES;
MariaDB> exit

Créez le fichier de configuration MySQL pour Netdata.

$ sudo /etc/netdata/edit-config go.d/mysql.conf

Un fichier s’ouvrira montrant toutes les options possibles. Si vous êtes satisfait, enregistrez et fermez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Redémarrez le serveur MariaDB.

$ sudo systemctl restart mariadb

Redémarrez le service Netdata.

$ sudo systemctl restart netdata

Le tableau de bord MariaDB/MySQL devrait commencer à apparaître dans le tableau de bord Netdata.

Tableau de bord MySQL/MariaDB NetData

Étape 14 - Configurer la surveillance de PHP-FPM

Vous pouvez surveiller une ou plusieurs instances PHP-FPM à l’aide de Netdata. Pour notre tutoriel, nous allons installer PHP 8.2 et ensuite activer sa surveillance.

Debian 12 est livré avec PHP 8.2 par défaut. Mais pour rester toujours sur la dernière version de PHP, nous allons utiliser le dépôt PHP d’Ondrej.

Tout d’abord, importez la clé GPG du dépôt de Sury.

$ sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

Ajoutez le dépôt PHP d’Ondrej Sury.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

Mettez à jour la liste des dépôts système.

$ sudo apt update   

Maintenant, vous pouvez installer n’importe quelle version de PHP.

$ sudo apt install php8.2-fpm php8.2-cli php8.2-mbstring

Vérifiez l’installation.

$ php --version
PHP 8.2.10 (cli) (built: Sep  4 2023 08:12:29) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.10, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.10, Copyright (c), by Zend Technologies

Configurer PHP

Ouvrez le fichier /etc/php/8.2/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Nous devons définir l’utilisateur/groupe Unix des processus PHP sur nginx. Trouvez les lignes user=www-data et group=www-data dans le fichier et changez-les en nginx.

....
; Unix user/group of the child processes. This can be used only if the master
; process running user is root. It is set after the child process is created.
; The user and group can be specified either by their name or by their numeric
; IDs.
; Note: If the user is root, the executable needs to be started with
;       --allow-to-run-as-root option to work.
; Default Values: The user is set to master process running user by default.
;                 If the group is not set, the user's group is used.
user = nginx
group = nginx
....

De plus, trouvez les lignes listen.owner=www-data et listen.group=www-data dans le fichier et changez-les en nginx.

listen.owner = nginx
listen.group = nginx

Faites défiler le fichier pour localiser l’option ;pm.status_path = /status. Décommentez la ligne en supprimant le point-virgule devant elle, comme indiqué ci-dessous.

....
; Note: There is a real-time FPM status monitoring sample web page available
;       It's available in: /usr/share/php/8.2/fpm/status.html
;
; Note: The value must start with a leading slash (/). The value can be
;       anything, but it may not be a good idea to use the .php extension or it
;       may conflict with a real PHP file.
; Default Value: not set
pm.status_path = /status
....

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Redémarrez le processus PHP-fpm.

$ sudo systemctl restart php8.2-fpm

Ajouter des paramètres PHP à Nginx

Ouvrez le fichier de configuration par défaut de Nginx /etc/nginx/conf.d/default.conf pour l’édition.

$ sudo nano /etc/nginx/conf.d/default.conf

Entrez le code suivant à l’intérieur du bloc serveur avant la dernière accolade fermante.

# define PHP-FPM monitoring
location ~ ^/(status|ping)$ {
    allow 127.0.0.1;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Depends on the PHP Version and OS Distro
}

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Vérifiez la configuration de Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Redémarrez le serveur Nginx.

$ sudo systemctl restart nginx

Redémarrez le service Netdata.

$ sudo systemctl restart netdata

Rechargez le tableau de bord Netdata, et vous devriez voir les statistiques PHP-FPM.

Statistiques PHP-FPM NetData

Étape 15 - Configurer la surveillance du moteur Docker et des conteneurs

Netdata peut surveiller à la fois le moteur Docker et les conteneurs Docker. Il peut également surveiller les applications s’exécutant à l’intérieur de ces conteneurs, mais nous ne le couvrirons pas dans ce tutoriel.

Commençons par installer Docker.

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io
$ sudo usermod -aG docker ${USER}
$ su - ${USER}

Le service Docker est activé et démarré. Vous pouvez vérifier l’état du service.

$ sudo systemctl status docker

Pour surveiller le moteur Docker, vous devez activer la fonctionnalité de métriques de Docker.

Créez et ouvrez le fichier /etc/docker/daemon.json pour l’édition.

$ sudo nano /etc/docker/daemon.json

Collez le code suivant dedans.

{
  "metrics-addr" : "127.0.0.1:9323",
  "experimental" : true
}

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité. Cette URL est utilisée par Prometheus pour suivre les statistiques du moteur Docker.

Créez un fichier de configuration pour le collecteur Docker.

$ sudo /etc/netdata/edit-config go.d/docker.conf

Créez un autre fichier de configuration pour le moteur Docker pour Prometheus.

$ sudo /etc/netdata/edit-config go.d/docker_engine.conf

Redémarrez les services Netdata et Docker.

$ sudo systemctl restart docker netdata

Chargez à nouveau le tableau de bord Netdata, et vous pouvez voir les statistiques Docker.

Statistiques des conteneurs Docker NetData

Vous verrez une autre entrée nommée Prometheus Metrics sur votre tableau de bord car l’option de métriques a été faite pour le tableau de bord Prometheus.

Statistiques des conteneurs Docker Prometheus NetData

La prochaine étape consiste à surveiller le conteneur Docker. Netdata utilise des groupes de contrôle, appelés cgroups, pour surveiller les conteneurs Docker. Les groupes de contrôle sont une fonctionnalité de Linux qui limite et suit l’utilisation des ressources d’un ensemble de processus, dans ce cas, des conteneurs. Si vous avez des conteneurs Docker en cours d’exécution lorsque vous installez Netdata, ils sont automatiquement suivis. Cependant, si vous exécutez un conteneur après avoir installé Netdata, vous devez le redémarrer.

Exécutez un conteneur de test.

$ docker container run -d nginx

Vérifiez l’état du conteneur.

$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
9d6cde479224   nginx     "/docker-entrypoint.…"   7 seconds ago   Up 5 seconds   80/tcp    zealous_knuth

Le nom du conteneur est zealous_knuth comme indiqué. Puisque le conteneur a été démarré après l’installation de Netdata, redémarrez le service.

$ sudo systemctl restart netdata

Chargez le tableau de bord, et vous devriez être en mesure de voir les statistiques du conteneur. Vous pouvez voir l’ID du conteneur dans les statistiques.

Statistiques des conteneurs Docker NetData

Conclusion

Cela conclut notre tutoriel sur l’installation et l’utilisation du système de surveillance Netdata pour surveiller diverses applications comme Nginx, MySQL, PHP-FPM et Docker sur un serveur Debian 12. Si vous avez des questions, postez-les dans les commentaires ci-dessous.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.