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