Prometheus est une application de surveillance gratuite, open source et basée sur le Web qui collecte les métriques de vos services et les stocke dans une base de données chronologique. La configuration par défaut de Prometheus n'exporte que des métriques sur lui-même. Mais vous pouvez l'étendre en installant des exportateurs et d'autres programmes. Il prend en charge un modèle de données multidimensionnel, plusieurs modes de représentation graphique et de tableau de bord.
Dans cet article, nous vous montrerons comment installer la surveillance Prometheus sur Debian 11.
Prérequis
- Un serveur exécutant 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 pour Prometheus. Vous pouvez le créer à l'aide de la commande suivante :
groupadd --system prometheus
useradd -s /sbin/nologin --system -g prometheus prometheus
Ensuite, téléchargez 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 le Prometheus téléchargé, vous pouvez voir le fichier téléchargé à l'aide de la commande suivante :
ls -lVous devriez voir le résultat suivant :
-rw-r--r-- 1 root root 72638078 Oct 5 16:46 prometheus-2.30.3.linux-amd64.tar.gzEnsuite, extrayez le fichier téléchargé à l'aide de la commande suivante :
tar -xvf prometheus*.tar.gzEnsuite, changez le répertoire vers le répertoire extrait avec la commande suivante :
cd prometheus-2.30.3.linux-amd64Créez ensuite les répertoires requis à l'aide de la commande suivante :
mkdir /etc/prometheus
mkdir /var/lib/prometheusEnsuite, copiez les fichiers de configuration et les outils requis avec les commandes suivantes :
mv prometheus.yml /etc/prometheus/prometheus.yml
mv consoles/ console_libraries/ /etc/prometheus/
mv prometheus promtool /usr/local/bin/Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Créer un fichier de service Systemd pour Prometheus
Ensuite, vous devrez créer un fichier de service systemd pour gérer le service Prometheus. Vous pouvez le créer en exécutant la commande suivante :
nano /etc/systemd/system/prometheus.serviceAjoutez les lignes suivantes :
[Unit]Description=PrometheusDocumentation=https://prometheus.io/docs/introduction/overview/Wants=network-online.targetAfter=network-online.target[Service]Type=simpleUser=prometheusGroup=prometheusExecReload=/bin /kill -HUP $MAINPIDExecStart=/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=prometheusRestart=always[Install]WantedBy=multi-user.targetEnregistrez et fermez le fichier, puis définissez la propriété et l'autorisation appropriées sur le 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, rechargez le démon systemd pour appliquer les modifications :
rechargement du démon systemctlEnsuite, démarrez le service Prometheus et activez-le au redémarrage du système à l'aide de la commande suivante :
systemctl démarrer prometheus
systemctl activer prometheusVous pouvez vérifier l'état du Prometheus avec la commande suivante :
statut systemctl prometheusVous obtiendrez le résultat suivant :
? prometheus.service - Prometheus Loaded :chargé (/etc/systemd/system/prometheus.service ; désactivé ; préréglage du fournisseur :activé) Actif :actif (en cours d'exécution) depuis le sam. 2021-10-16 14:06:39 UTC ; Il y a 4 s Docs :https://prometheus.io/docs/introduction/overview/ PID principal :18415 (prometheus) Tâches :5 (limite :2341) Mémoire :19,6 M CPU :79 ms CGroup :/system.slice/prometheus.service ??18415 /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.cons>16 octobre 14:06 :39 debian11 prometheus[18415] :level=info ts=2021-10-16T14:06:39.172Z caller=head.go:513 component=tsdb msg="Carte mémoire sur disque>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="Segment WAL chargé">16 octobre 14:06:39 debian11 prometheus[18415] :level=info ts=2021-10-16T14:06:39.174Z caller=head.go:596 component=tsdb msg="Relecture WAL terminée>16 octobre 14:06:39 debian11 prometheus[18415] :level=info ts=2021-10 -16T14:06:39. 177Z caller=main.go:849 fs_type=EXT4_SUPER_MAGICOoct 16 14:06:39 debian11 prometheus[18415] :level=info ts=2021-10-16T14:06:39.177Z caller=main.go:852 msg="TSDB démarré "16 octobre 14:06:39 debian11 prometheus[18415] :level=info ts=2021-10-16T14:06:39.178Z caller=main.go:979 msg="Chargement du fichier de configuration" filename>16 octobre 14:06 :39 debian11 prometheus[18415] :level=info ts=2021-10-16T14:06:39.178Z caller=main.go:1016 msg="Chargement de la configuration terminé>Oct 16 14:06:39 debian11 prometheus[18415] :level=info ts=2021-10-16T14:06:39.179Z caller=main.go:794 msg="Le serveur est prêt à recevoir une requête Web>16 octobre 14:06:39 debian11 prometheus[18415] :level=info ts=2021-10-16T14:06:39.179Z caller=tls_config.go:191 component=web msg="TLS est désactivé>Par défaut, Prometheus écoute sur le port 9090. Vous pouvez le vérifier à l'aide de la commande suivante :
ss -antpl | grep 9090Vous devriez voir le résultat suivant :
ECOUTE 0 4096 *:9090 *:* utilisateurs:(("prometheus",pid=18415,fd=7))Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Configurer Nginx en tant que proxy inverse pour Prometheus
Ensuite, il est recommandé d'installer et de configurer Nginx en tant que proxy inverse pour Prometheus. Tout d'abord, installez le package de serveur Web Nginx à l'aide de la commande suivante :
apt-get install nginx -yUne fois Nginx installé, créez un fichier de configuration d'hôte virtuel Nginx avec la commande suivante :
nano /etc/nginx/conf.d/prometheus.confAjoutez les lignes suivantes :
serveur { écoute 80 ; nom_serveur prometheus.exemple.com ; emplacement / { proxy_pass http://localhost:9090; proxy_http_version 1.1 ; proxy_set_header Mettre à jour $http_upgrade ; proxy_set_header Connexion 'mise à niveau' ; proxy_set_header Hôte $hôte ; proxy_cache_bypass $http_upgrade ; }}Enregistrez et fermez le fichier puis vérifiez le Nginx pour toute erreur de syntaxe avec la commande suivante :
nginx -tSi tout va bien, vous obtiendrez le résultat suivant :
nginx :le test du fichier de configuration /etc/nginx/nginx.conf a réussiEnfin, redémarrez le service Nginx pour appliquer les modifications :
systemctl redémarrer nginxVous pouvez également vérifier l'état du service Nginx à l'aide de la commande suivante :
statut systemctl nginxVous devriez obtenir le résultat suivant :
? nginx.service - Un serveur Web hautes performances et un serveur proxy inverse Chargé :chargé (/lib/systemd/system/nginx.service ; activé ; préréglage du fournisseur :activé) Actif :actif (en cours d'exécution) depuis sam. 2021-10-16 14 :08:15 UTC ; Il y a 2 s Docs :man:nginx(8) Processus :18792 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on ; master_process activé ; (code=exited, status=0/SUCCESS) Processus :18793 ExecStart=/usr/sbin/nginx -g daemon on ; master_process activé ; (code=exited, status=0/SUCCESS) PID principal :18794 (nginx) Tâches :2 (limite :2341) Mémoire :2,5 M CPU :35 ms CGroup :/system.slice/nginx.service ??18794 nginx :processus maître /usr/sbin/nginx -g démon activé ; master_process activé ; ??18795 nginx :worker processOct 16 14:08:15 debian11 systemd[1] :Démarrage d'un serveur Web hautes performances et d'un serveur proxy inverse...Oct 16 14:08:15 debian11 systemd[1] :nginx.service :Échec de l'analyse du PID à partir du fichier /run/nginx.pid :argument non valideOct 16 14:08:15 debian11 systemd[1] :démarrage d'un serveur Web hautes performances et d'un serveur proxy inverse.À ce stade, Nginx est installé et configuré pour servir Prometheus. Vous pouvez maintenant passer à l'étape suivante.
Accéder au tableau de bord Prometheus
Maintenant, ouvrez votre navigateur Web et accédez au tableau de bord Prometheus à l'aide de l'URL http://prometheus.example.com . Vous devriez 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échargez 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.gzUne fois le téléchargement terminé, extrayez le fichier téléchargé avec la commande suivante :
tar -xvzf node_exporter-1.2.2.linux-amd64.tar.gzEnsuite, déplacez le répertoire extrait vers le répertoire /etc/prometheus/ :
mv node_exporter-1.2.2.linux-amd64 /etc/prometheus/node_exporterEnsuite, définissez la propriété appropriée avec la commande suivante :
chown -R prometheus:prometheus /etc/prometheus/node_exporterEnsuite, créez un fichier de service systemd pour gérer le service node_exporter :
nano /etc/systemd/system/node_exporter.serviceAjoutez les lignes suivantes :
[Unit]Description=Node ExporterWants=network-online.targetAfter=network-online.target[Service]User=prometheusExecStart=/etc/prometheus/node_exporter/node_exporter[Install]WantedBy=default.targetEnregistrez et fermez le fichier puis rechargez le démon systemd pour appliquer les modifications :
rechargement du démon systemctlEnsuite, démarrez le service node_exporter et activez-le pour qu'il démarre au redémarrage du système :
systemctl start node_exporter
systemctl enable node_exporterVous pouvez vérifier l'état du node_exporter avec la commande suivante :
statut systemctl node_exporterVous obtiendrez le résultat suivant :
? node_exporter.service - Node Exporter Loaded :chargé (/etc/systemd/system/node_exporter.service ; désactivé ; préréglage fournisseur :activé) Actif :actif (en cours d'exécution) depuis le dim 2021-10-17 05:38:20 UTC ; Il y a 4 s PID principal :513 (node_exporter) Tâches :4 (limite :2341) Mémoire :4,7 M CPU :11 ms CGroup :/system.slice/node_exporter.service ??513 /etc/prometheus/node_exporter/node_exporterOct 17 05:38 :20 debian11 node_exporter[513] :level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=thermal_zoneOct 17 05:38:20 debian11 node_exporter[513] :level=info ts=2021 -10-17T05:38:20.382Z caller=node_exporter.go:115 collector=timeOct 17 05:38:20 debian11 node_exporter[513] :level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter. go:115 collector=timexOct 17 05:38:20 debian11 node_exporter[513] :level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=udp_queuesOct 17 05:38:20 debian11 node_exporter[513] :level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=unameOct 17 05:38:20 debian11 node_exporter[513] :level=info ts=2021-10 -17T05:38:20.382Z caller=node_exporter.go:115 collector=vmstatOct 17 05:38:20 debian11 node_exporter[513] :level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=xfsOct 17 05:38:20 debian11 node_exporter[513] :level=info ts=2021- 10-17T05:38:20.382Z caller=node_exporter.go:115 collector=zfsOct 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 est désactivé." http2=fauxPar défaut, node_exporter écoute sur le port 9100. Vous pouvez le vérifier avec la commande suivante :
ss -antpl | grep 9100Vous devriez obtenir le résultat suivant :
ECOUTE 0 4096 *:9100 *:* utilisateurs :(("node_exporter",pid=513,fd=3))Ajouter node_exporter au serveur Prometheus
Ensuite, vous devrez ajouter le node_exporter au fichier de configuration Prometheus. Vous pouvez le faire en modifiant le fichier de configuration par défaut de Prometheus :
nano /etc/prometheus/prometheus.ymlSous le 'scrape_config ', ajoutez le nouveau job_name node_exporter en ajoutant les lignes suivantes.
- job_name :'node_exporter' static_configs :- cibles :['localhost:9100']Enregistrez et fermez le fichier puis redémarrez le service Prometheus pour appliquer les modifications :
systemctl redémarrer prometheusVérifier Prometheus et node_exporter
Maintenant, allez sur le tableau de bord Prometheus et cliquez sur Statut => Cible . Vous devriez voir votre node_exporter dans l'écran suivant :
Maintenant, revenez à la page d'accueil de Prometheus et tapez node_memory_MemAvailable_bytes dans le champ de requête et cliquez sur 'Exécuter ' bouton. Vous obtiendrez le résultat suivant :
Vous pouvez également obtenir le node_exporter données de métriques à l'aide de l'URL http://your-server-ip:9100/metrics comme indiqué ci-dessous :
Conclusion
Toutes nos félicitations! vous avez installé avec succès Prometheus avec node_exporter sur Debian 11. N'hésitez pas à me demander si vous avez des questions. Pour plus d'informations, consultez la documentation officielle de Prometheus.