Comment installer l’outil de surveillance du système Prometheus sur Debian 11

Prometheus est une application de surveillance gratuite, open-source et basée sur le Web qui collecte les métriques de tes services et les stocke dans une base de données de séries chronologiques. La configuration par défaut de Prometheus n’exporte que les métriques le concernant. Mais tu peux l’étendre en installant des exportateurs et d’autres programmes. Il prend en charge un modèle de données multidimensionnel et plusieurs modes de création de graphiques et de tableaux de bord.

Dans ce billet, nous allons te montrer comment installer la surveillance Prometheus sur Debian 11.

Conditions préalables

  • Un serveur fonctionnant sous Debian 11.
  • Un mot de passe root est configuré sur le serveur.

Installer Prometheus

Avant de commencer, il est recommandé de créer un utilisateur et un groupe dédiés à Prometheus. Tu peux les créer à l’aide de la commande suivante :

groupadd --system prometheus
useradd -s /sbin/nologin --system -g prometheus prometheus

Ensuite, télécharge la dernière version de Prometheus en exécutant la commande suivante :

curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest|grep browser_download_url|grep linux-amd64|cut -d '"' -f 4|wget -qi -

Une fois que Prometheus est téléchargé, tu peux voir le fichier téléchargé à l’aide de la commande suivante :

ls -l

Tu devrais voir la sortie suivante :

-rw-r--r-- 1 root root 72638078 Oct  5 16:46 prometheus-2.30.3.linux-amd64.tar.gz

Ensuite, extrais le fichier téléchargé à l’aide de la commande suivante :

tar -xvf prometheus*.tar.gz

Ensuite, change le répertoire pour le répertoire extrait à l’aide de la commande suivante :

cd prometheus-2.30.3.linux-amd64

Ensuite, crée certains répertoires nécessaires à l’aide de la commande suivante :

mkdir /etc/prometheus
mkdir /var/lib/prometheus

Ensuite, copie les fichiers de configuration et les outils requis à l’aide des commandes suivantes :

mv prometheus.yml /etc/prometheus/prometheus.yml
mv consoles/ console_libraries/ /etc/prometheus/
mv prometheus promtool /usr/local/bin/

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Crée un fichier de service Systemd pour Prometheus

Ensuite, tu devras créer un fichier de service systemd pour gérer le service Prometheus. Tu peux le créer en exécutant la commande suivante :

nano /etc/systemd/system/prometheus.service

Ajoute les lignes suivantes :

[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/var/lib/prometheus \
  --web.console.templates=/etc/prometheus/consoles \
  --web.console.libraries=/etc/prometheus/console_libraries \
  --web.listen-address=0.0.0.0:9090 \
  --web.external-url=

SyslogIdentifier=prometheus
Restart=always

[Install]
WantedBy=multi-user.target

Sauvegarde et ferme le fichier puis définit la propriété et la permission appropriées au répertoire de configuration de Prometheus :

chown -R prometheus:prometheus /etc/prometheus/
chmod -R 775 /etc/prometheus/
chown -R prometheus:prometheus /var/lib/prometheus/

Ensuite, recharge le démon systemd pour appliquer les modifications :

systemctl daemon-reload

Ensuite, démarre le service Prometheus et active-le pour qu’il démarre au redémarrage du système à l’aide de la commande suivante :

systemctl start prometheus
systemctl enable prometheus

Tu peux vérifier l’état de Prometheus à l’aide de la commande suivante :

systemctl status prometheus

Tu obtiendras la sortie suivante :

? prometheus.service - Prometheus
     Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-10-16 14:06:39 UTC; 4s ago
       Docs: https://prometheus.io/docs/introduction/overview/
   Main PID: 18415 (prometheus)
      Tasks: 5 (limit: 2341)
     Memory: 19.6M
        CPU: 79ms
     CGroup: /system.slice/prometheus.service
             ??18415 /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.cons>

Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.172Z caller=head.go:513 component=tsdb msg="On-disk memory mappa>
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.172Z caller=head.go:519 component=tsdb msg="Replaying WAL, this >
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.174Z caller=head.go:590 component=tsdb msg="WAL segment loaded" >
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.174Z caller=head.go:596 component=tsdb msg="WAL replay completed>
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.177Z caller=main.go:849 fs_type=EXT4_SUPER_MAGIC
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.177Z caller=main.go:852 msg="TSDB started"
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.178Z caller=main.go:979 msg="Loading configuration file" filenam>
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.178Z caller=main.go:1016 msg="Completed loading of configuration>
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.179Z caller=main.go:794 msg="Server is ready to receive web requ>
Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.179Z caller=tls_config.go:191 component=web msg="TLS is disabled>

Par défaut, Prometheus écoute sur le port 9090. Tu peux le vérifier à l’aide de la commande suivante :

ss -antpl | grep 9090

Tu devrais voir la sortie suivante :

LISTEN 0      4096               *:9090            *:*    users:(("prometheus",pid=18415,fd=7))

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Configurer Nginx comme proxy inverse pour Prometheus

Ensuite, il est recommandé d’installer et de configurer Nginx comme proxy inverse pour Prometheus. Tout d’abord, installe le paquetage du serveur Web Nginx à l’aide de la commande suivante :

apt-get install nginx -y

Une fois que Nginx est installé, crée un fichier de configuration d’hôte virtuel Nginx à l’aide de la commande suivante :

nano /etc/nginx/conf.d/prometheus.conf

Ajoute les lignes suivantes :

server {
    listen 80;
    server_name prometheus.example.com;
    location / {
        proxy_pass http://localhost:9090;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

}

Enregistre et ferme le fichier puis vérifie que Nginx n’a pas d’erreur de syntaxe avec la commande suivante :

nginx -t

Si tout va bien, tu obtiendras la sortie suivante :

nginx: configuration file /etc/nginx/nginx.conf test is successful

Enfin, redémarre le service Nginx pour appliquer les modifications :

systemctl restart nginx

Tu peux aussi vérifier l’état du service Nginx à l’aide de la commande suivante :

systemctl status nginx

Tu devrais obtenir la sortie suivante :

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-10-16 14:08:15 UTC; 2s ago
       Docs: man:nginx(8)
    Process: 18792 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 18793 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 18794 (nginx)
      Tasks: 2 (limit: 2341)
     Memory: 2.5M
        CPU: 35ms
     CGroup: /system.slice/nginx.service
             ??18794 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??18795 nginx: worker process

Oct 16 14:08:15 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Oct 16 14:08:15 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Oct 16 14:08:15 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

À ce stade, Nginx est installé et configuré pour servir Prometheus. Tu peux maintenant passer à l’étape suivante.

Accède au tableau de bord Prometheus

Maintenant, ouvre ton navigateur Web et accède au tableau de bord Prometheus en utilisant l’URL http://prometheus.example.com. Tu devrais voir la page suivante :

Interface graphique de Prometheus

Installer et configurer node_exporter

node_exporter est un exportateur qui surveillera et obtiendra la métrique du serveur Prometheus. Tout d’abord, télécharge la dernière version de node_exporter à l’aide de la commande suivante :

wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz

Une fois le téléchargement terminé, extrais le fichier téléchargé à l’aide de la commande suivante :

tar -xvzf node_exporter-1.2.2.linux-amd64.tar.gz

Ensuite, déplace le répertoire extrait dans le répertoire /etc/prometheus/ :

mv node_exporter-1.2.2.linux-amd64 /etc/prometheus/node_exporter

Ensuite, définis la propriété appropriée avec la commande suivante :

chown -R prometheus:prometheus /etc/prometheus/node_exporter

Ensuite, crée un fichier de service systemd pour gérer le service node_exporter :

nano /etc/systemd/system/node_exporter.service

Ajoute les lignes suivantes :

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
ExecStart=/etc/prometheus/node_exporter/node_exporter

[Install]
WantedBy=default.target

Enregistre et ferme le fichier puis recharge le démon systemd pour appliquer les modifications :

systemctl daemon-reload

Ensuite, démarre le service node_exporter et active-le pour qu’il démarre au redémarrage du système :

systemctl start node_exporter
systemctl enable node_exporter

Tu peux vérifier le statut de node_exporter avec la commande suivante :

systemctl status node_exporter

Tu obtiendras la sortie suivante :

? node_exporter.service - Node Exporter
     Loaded: loaded (/etc/systemd/system/node_exporter.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-10-17 05:38:20 UTC; 4s ago
   Main PID: 513 (node_exporter)
      Tasks: 4 (limit: 2341)
     Memory: 4.7M
        CPU: 11ms
     CGroup: /system.slice/node_exporter.service
             ??513 /etc/prometheus/node_exporter/node_exporter

Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=thermal_zone
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=time
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=timex
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=udp_queues
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=uname
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=vmstat
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=xfs
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=zfs
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.383Z caller=node_exporter.go:199 msg="Listening on" address=:91>
Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.383Z caller=tls_config.go:191 msg="TLS is disabled." http2=false

Par défaut, node_exporter écoute sur le port 9100. Tu peux le vérifier avec la commande suivante :

ss -antpl | grep 9100

Tu devrais obtenir le résultat suivant :

LISTEN 0      4096               *:9100            *:*    users:(("node_exporter",pid=513,fd=3))

Ajoute node_exporter au serveur Prometheus

Ensuite, tu dois ajouter le node_exporter au fichier de configuration de Prometheus. Tu peux le faire en modifiant le fichier de configuration par défaut de Prometheus :

nano /etc/prometheus/prometheus.yml

Sous la ligne‘scrape_config‘, ajoute un nouveau nom de travail node_exporter en ajoutant les lignes suivantes.

  - job_name: 'node_exporter'
    static_configs:
    - targets: ['localhost:9100']

Enregistre et ferme le fichier puis redémarre le service Prometheus pour appliquer les modifications :

systemctl restart prometheus

Vérifie Prometheus et node_exporter

Maintenant, va dans le tableau de bord de Prometheus et clique sur le Statut => Cible. Tu devrais voir ton node_exporter dans l’écran suivant :

Maintenant, retourne sur la page d’accueil de Prometheus et tape node_memory_MemAvailable_bytes dans le champ de requête et clique sur le bouton‘Execute‘. Tu obtiendras le résultat suivant :

Mémoire du nœud disponible

Tu peux aussi obtenir les données métriques de node_exporter en utilisant l’URL http://your-server-ip:9100/metrics comme indiqué ci-dessous :

Métriques de l'exportateur de nœuds

Conclusion

Félicitations ! Tu as réussi à installer Prometheus avec node_exporter sur Debian 11. N’hésite pas à me demander si tu as des questions. Pour plus d’informations, consulte la documentation officielle dePrometheus.

Vous aimerez aussi...