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

Comment installer et surveiller des services à l'aide de l'outil de surveillance Netdata sur Rocky Linux 8

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.

Dans ce tutoriel, vous apprendrez à installer et à surveiller divers services à l’aide de l’outil Netdata sur un serveur Rocky Linux 8. Nous utiliserons Netdata pour suivre les métriques d’une pile LEMP et du moteur Docker.

Prérequis

  • Un serveur exécutant Rocky Linux 8.
  • 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 et un espace de travail Slack pour recevoir des notifications.
  • Un compte SMTP avec un service de messagerie comme Amazon SES ou Mailgun.
  • Désactiver SELinux.

Étape 1 - Configurer le pare-feu

La première étape consiste à configurer le pare-feu. Rocky Linux utilise le pare-feu Firewalld. Vérifiez l’état du pare-feu.

$ sudo firewall-cmd --state
running

Le pare-feu fonctionne avec différentes zones, et la zone publique est celle par défaut que nous allons utiliser. Listez tous les services et ports actifs sur le pare-feu.

$ sudo firewall-cmd --permanent --list-services

Il devrait afficher la sortie suivante.

cockpit dhcpv6-client ssh

Autorisez les ports HTTP et HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

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

$ sudo firewall-cmd --permanent --list-services

Vous devriez voir une sortie similaire.

cockpit dhcpv6-client http https ssh

Rechargez le pare-feu pour activer les modifications.

$ sudo firewall-cmd --reload

É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 et exécuter le script d’installation.

$ bash <(curl -Ss https://my-netdata.io/kickstart.sh)

Vous serez invité à entrer votre mot de passe sudo pour activer les privilèges sudo. Entrez Y pour confirmer l’ajout du dépôt Netdata et son installation sur votre serveur.

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

$ sudo systemctl status netdata
? netdata.service - Surveillance des performances en temps réel
   Loaded: loaded (/usr/lib/systemd/system/netdata.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2022-04-11 12:09:12 UTC; 13s ago
 Main PID: 19443 (netdata)
    Tasks: 32 (limit: 11412)
   Memory: 52.0M
   CGroup: /system.slice/netdata.service
           ??19443 /usr/sbin/netdata -P /var/run/netdata/netdata.pid -D
           ??19448 /usr/sbin/netdata --special-spawn-server
           ??19937 /usr/libexec/netdata/plugins.d/apps.plugin 1
           ??19944 /usr/libexec/netdata/plugins.d/go.d.plugin 1

Apr 11 12:09:12 netdata systemd[1]: Started Real time performance monitoring.
.......

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 les utilisant.

$ sudo ss -plnt

Vous devriez obtenir une sortie similaire. Netdata utilise le port 19999 pour son tableau de bord, comme indiqué dans 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                128                            127.0.0.1:8125                           0.0.0.0:*               users:(("netdata",pid=22496,fd=29))
LISTEN           0                128                              0.0.0.0:19999                          0.0.0.0:*               users:(("netdata",pid=22496,fd=6))
......
LISTEN           0                128                                [::1]:8125                              [::]:*               users:(("netdata",pid=22496,fd=28))
LISTEN           0                128                                 [::]:19999                             [::]:*               users:(("netdata",pid=22496,fd=7))

Étape 3 - Installer SSL

Pour installer un certificat SSL à l’aide de Let’s Encrypt, nous devons installer l’outil Certbot.

Tout d’abord, vous devez télécharger et installer le dépôt EPEL.

$ sudo dnf install epel-release

Exécutez les commandes suivantes pour installer Certbot.

$ sudo dnf install certbot

Générez le certificat SSL.

$ sudo certbot certonly --standalone --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 groupe Diffie-Hellman.

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

Créez un répertoire racine de défi pour le renouvellement automatique de Let’s Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Créez un Cron Job pour renouveler le SSL. Il s’exécutera tous les jours pour vérifier le certificat et le renouveler si nécessaire. Pour cela, créez d’abord le fichier /etc/cron.daily/certbot-renew et ouvrez-le pour l’édition.

$ sudo nano /etc/cron.daily/certbot-renew

Collez le code suivant.

#!/bin/sh
certbot renew --cert-name netdata.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

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

Changez les permissions sur le fichier de tâche pour le rendre exécutable.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Étape 4 - Installer et configurer Nginx

Nous allons installer la dernière version de Nginx. Créez et ouvrez le fichier /etc/yum.repos.d/nginx.repo pour l’édition.

$ sudo nano /etc/yum.repos.d/nginx.repo

Collez les lignes suivantes.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

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

Installez Nginx et les outils HTTPD.

$ sudo dnf install nginx httpd-tools

Vérifiez l’installation.

$ nginx -v
nginx version: nginx/1.20.2

Activez et démarrez le service Nginx.

$ sudo systemctl enable nginx --now

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.

# Définir l'upstream netdata
upstream netdata {
    server 127.0.0.1:19999;
    keepalive 64;
}

# Rediriger tout le non chiffré vers chiffré
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 "Zone Privée NetData";
        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 5 - 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 informations d’authentification HTTP.

Authentification HTTP Netdata

Vous obtiendrez le tableau de bord suivant.

Premier tableau de bord Netdata

Cochez la case Se souvenir de mon choix et cliquez sur le bouton Plus tard, rester sur le tableau de bord de l’agent pour fermer la fenêtre contextuelle.

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 dans la barre latérale droite. Cliquez sur le bouton UTC et sélectionnez le bon fuseau horaire pour le changer.

Changement de fuseau horaire Netdata

Étape 6 - 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 différentes sections, telles que [global], [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. Les plugins internes sont écrits en langage C et s’exécutent en tant que threads à l’intérieur du démon netdata.
  2. Les plugins externes 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 changera ces estimations.

Ouvrez le fichier de configuration Netdata.

$ sudo nano /etc/netdata/netdata.conf

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

[global]
..
        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 d’utilisation anonymes à 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.

Heureusement, vous pouvez vous désinscrire de cela. 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

Collez les lignes suivantes sous la section [global].

[global]
...
    memory mode = dbengine
    page cache size = 32
    dbengine 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 l’espace disque dbengine détermine l’utilisation du disque. Par défaut, Netdata utilise 32 Mo de RAM et 256 Mo d’espace disque. Vous pouvez décommenter ces valeurs et changer l’une 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 7 - 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 Netdata à 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.

# Activer la notification slack
SEND_SLACK="YES"

# Sélectionner le webhook slack
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/xxxxxxx"

# Canal par défaut pour la 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

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 package appelé client msmtp. Cela vous permet d’envoyer des mails à un serveur SMTP.

Installez msmtp.

$ sudo dnf install msmtp

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

$ sudo nano /etc/msmtprc

Collez le code suivant dedans.

# Définir les valeurs par défaut pour tous les comptes suivants.
defaults

# Utiliser le port de soumission de mail 587 au lieu du port SMTP 25.
port 587

# Toujours utiliser TLS.
tls on

# Le serveur SMTP de votre FAI
account ses
host email-smtp..amazonaws.com
from [email protected]
auth on
user 
password 

# Définir le compte par défaut sur isp
account default: ses

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

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

$ sudo nano /etc/netdata/health_alarm_notify.conf

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

# commandes externes

# Le chemin complet vers la commande sendmail.
# Si vide, le système $PATH sera recherché pour cela.
# Si non trouvé, les notifications par e-mail seront désactivées (silencieusement).
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é.

# options de notification par e-mail globales

# plusieurs destinataires peuvent être donnés comme ceci :
#              "[email protected] [email protected] ..."

# l'adresse e-mail envoyant des notifications par e-mail
# la valeur par défaut est l'utilisateur système sous lequel netdata s'exécute (généralement : netdata)
# Les formats suivants sont pris en charge :
# EMAIL_SENDER="user@domain"
# EMAIL_SENDER="User Name "
# EMAIL_SENDER="'User Name' "
# EMAIL_SENDER="\"User Name\" "
EMAIL_SENDER="Administrateur du serveur <[email protected]>"

# activer/désactiver l'envoi d'e-mails
SEND_EMAIL="YES"

# si un destinataire de rôle n'est pas configuré, un e-mail sera envoyé à :
DEFAULT_RECIPIENT_EMAIL="[email protected]"
# pour ne recevoir que des alarmes critiques, définissez-le sur "root|critical"

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

Étape 8 - Tester les canaux de notification

Testons si les notifications Slack 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

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 Netdata par e-mail

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

$ cd /etc/netdata
$ sudo ./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))

Enregistrez le fichier et quittez l’éditeur.

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 dnf 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

Étape 10 - Configurer la surveillance de Nginx

L’une des applications les plus couramment surveillées à l’aide de Netdata est le serveur et les packages 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.

$ 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 cette 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.

# Activer le module stub_status
location /stub_status {
    stub_status;
    allow 127.0.0.1;        # n'autoriser que les requêtes de localhost
    deny all;               # refuser tous les autres hôtes
}

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 python.d/web_log.conf

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

# -------------------------------------------
# journal nginx sur diverses distributions

# 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 nécessaire pour surveiller autant d’hôtes et de fichiers journaux d’accès. Notre fichier de configuration ressemble à ceci.

# -------------------------------------------
# journal nginx sur diverses distributions

# 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 permissions pour accéder au répertoire. Par défaut, le groupe système adm a la permission 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 11 - Configurer la surveillance de MySQL/MariaDB

Nous allons installer MariaDB pour notre tutoriel. Les étapes restent les mêmes si vous utilisez un serveur MySQL.

Ajoutez le dépôt pour MariaDB 10.6.

$ sudo nano /etc/yum.repos.d/MariaDB.repo

Collez le code suivant dedans.

# Liste des dépôts MariaDB 10.6 CentOS - créée le 2022-04-12 11:12 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
baseurl = https://download.nus.edu.sg/mirror/mariadb/yum/10.6/centos8-amd64
module_hotfixes=1
gpgkey=https://download.nus.edu.sg/mirror/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

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

Installez MariaDB.

$ sudo dnf install MariaDB-server

Activez le serveur MariaDB.

$ sudo systemctl enable mariadb

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
....
Entrez le mot de passe actuel pour root (appuyez sur Entrée pour aucun) : (Appuyez sur Entrée)
....
Passer à l'authentification unix_socket [Y/n] Y (Tapez Y et appuyez sur Entrée)
....
Changer le mot de passe root ? [Y/n] Y (Tapez Y et appuyez sur Entrée)
Nouveau mot de passe : 
Ressaisissez le nouveau mot de passe : 
Mot de passe mis à jour avec succès !
....
Supprimer les utilisateurs anonymes ? [Y/n] Y (Tapez Y et appuyez sur Entrée)
....
Interdire la connexion root à distance ? [Y/n] Y (Tapez Y et appuyez sur Entrée)
....
Supprimer la base de données de test et y accéder ? [Y/n] Y (Tapez Y et appuyez sur Entrée)
....
Recharger les tables de privilèges maintenant ? [Y/n] Y (Tapez Y et appuyez sur Entrée)
....
Tout est fait ! Si vous avez terminé toutes les étapes ci-dessus, votre installation de MariaDB devrait maintenant être sécurisée.

Merci d'utiliser MariaDB !

Ouvrez le fichier /etc/my.cnf.d/server.cnf pour l’édition.

$ sudo nano /etc/my.cnf.d/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 ne fonctionne que sur MariaDB et non sur le serveur MySQL.

[mariadb]
userstat = 1

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

Démarrez le serveur MariaDB.

$ sudo systemctl start 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 12 - Configurer la surveillance de PHP-FPM

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

Nous allons installer PHP en utilisant le dépôt Remi. Nous avons déjà installé le dépôt EPEL à l’étape 3. Installez le dépôt Remi.

$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Vérifiez les flux PHP disponibles.

$ dnf module list php -y
Dernière vérification d'expiration des métadonnées : 0:00:12 il y a le ven 03 déc. 2021 09:39:32 UTC.
Rocky Linux 8 - AppStream
Nom                Flux                 Profils                                 Résumé
php                 7.2 [d]                commun [d], devel, minimal               Langage de script PHP
php                 7.3                    commun [d], devel, minimal               Langage de script PHP
php                 7.4                    commun [d], devel, minimal               Langage de script PHP

Dépôt modulaire de Remi pour Enterprise Linux 8 - x86_64
Nom                Flux                 Profils                                 Résumé
php                 remi-7.2               commun [d], devel, minimal               Langage de script PHP
php                 remi-7.3               commun [d], devel, minimal               Langage de script PHP
php                 remi-7.4               commun [d], devel, minimal               Langage de script PHP
php                 remi-8.0               commun [d], devel, minimal               Langage de script PHP
php                 remi-8.1               commun [d], devel, minimal               Langage de script PHP

Indice : [d]éfaut, [e]nregistré, [x]désactivé, [i]nstallé

La version par défaut est 7.2. Activez le dépôt PHP 8.0 de Remi.

$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.0

Ensuite, installez PHP et ses extensions requises par Firefly III. Le package php contient plusieurs dépendances requises par Firefly III, alors assurez-vous de les inclure.

$ sudo dnf install php php-fpm php-mbstring php-xml php-curl php-mysqlnd php-zip php-intl php-bcmath php-gd php-ldap php-cli

Vérifiez l’installation.

$ php --version
PHP 8.0.16 (cli) (construit : 15 fév. 2022 21:34:32) ( NTS gcc x86_64 )
Copyright (c) Le groupe PHP
Zend Engine v4.0.16, Copyright (c) Zend Technologies
    avec Zend OPcache v8.0.16, Copyright (c), par Zend Technologies

Configurer PHP

Ouvrez le fichier /etc/php-fpm.d/www.conf.

$ sudo nano /etc/php-fpm.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.

...
; Utilisateur/groupe Unix des processus
; Remarque : L'utilisateur est obligatoire. Si le groupe n'est pas défini, le groupe par défaut de l'utilisateur sera utilisé.
; RPM : utilisateur apache choisi pour fournir l'accès aux mêmes répertoires que httpd
user = nginx
; RPM : Garder un groupe autorisé à écrire dans le répertoire de journal.
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.

; Remarque : Il existe une page web d'échantillon de surveillance de statut FPM en temps réel disponible
;       Elle est disponible dans : @EXPANDED_DATADIR@/fpm/status.html
;
; Remarque : La valeur doit commencer par un slash (/) en premier.
; La valeur peut être n'importe quoi, mais il peut ne pas être judicieux d'utiliser l'extension .php ou cela
;       peut entrer en conflit avec un vrai fichier PHP.
; Valeur par défaut : non définie
pm.status_path = /status

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

Activez et démarrez le service PHP.

$ sudo systemctl enable php-fpm --now

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.

# définir la surveillance PHP-FPM
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-fpm/.sock; # Dépend de la version de PHP et de la distribution OS
}

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.

Tableau de bord des statistiques PHP-FPM NetData

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

$ sudo dnf install yum-utils
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
$ sudo dnf install docker-ce docker-ce-cli containerd.io

Activez et démarrez le service Docker.

$ sudo systemctl enable docker --now

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

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é créée pour le tableau de bord Prometheus.

Statistiques Prometheus des conteneurs Docker NetData

L’étape suivante 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
938b2cf30927   nginx     "/docker-entrypoint.…"   3 seconds ago   Up 2 seconds   80/tcp    pensive_lovelace

Le nom du conteneur est tender_murdock 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.

Statistiques individuelles 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 Rocky Linux. 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.