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.compointant 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 -yCertains 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.

Vous obtiendrez le tableau de bord suivant.

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

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.

É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.

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 :
- internal les plugins sont écrits en langage C et s’exécutent en tant que threads à l’intérieur du démon
netdata. - 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 depipes.
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 :
- Configurer Netdata pour utiliser plus de RAM et d’espace disque
- 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.

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

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.

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.

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.

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

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.

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

É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.

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

É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.

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.

É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.

É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.

É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.

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.

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.

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.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.