So installierst du das Prometheus System Monitoring Tool unter Debian 11
Prometheus ist eine kostenlose, quelloffene und webbasierte Überwachungsanwendung, die Metriken von deinen Diensten sammelt und sie in einer Zeitseriendatenbank speichert. Die Standardkonfiguration von Prometheus exportiert nur Metriken über sich selbst. Du kannst es aber durch die Installation von Exportern und anderen Programmen erweitern. Prometheus unterstützt ein mehrdimensionales Datenmodell, verschiedene Arten der grafischen Darstellung und Dashboarding.
In diesem Beitrag zeigen wir dir, wie du Prometheus Monitoring auf Debian 11 installierst.
Voraussetzungen
- Ein Server, auf dem Debian 11 läuft.
- Ein Root-Passwort ist auf dem Server eingerichtet.
Prometheus installieren
Bevor du beginnst, solltest du einen eigenen Benutzer und eine eigene Gruppe für Prometheus erstellen. Du kannst sie mit dem folgenden Befehl erstellen:
groupadd --system prometheus useradd -s /sbin/nologin --system -g prometheus prometheus
Als Nächstes lädst du die neueste Version von Prometheus herunter, indem du den folgenden grep Befehl ausführst:
curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest|grep browser_download_url|grep linux-amd64|cut -d '"' -f 4|wget -qi -
Sobald Prometheus heruntergeladen ist, kannst du die heruntergeladene Datei mit dem folgenden Befehl anzeigen:
ls -l
Du solltest die folgende Ausgabe sehen:
-rw-r--r-- 1 root root 72638078 Oct 5 16:46 prometheus-2.30.3.linux-amd64.tar.gz
Als Nächstes entpackst du die heruntergeladene Datei mit folgendem Befehl:
tar -xvf prometheus*.tar.gz
Wechsle dann mit folgendem Befehl in das extrahierte Verzeichnis:
cd prometheus-2.30.3.linux-amd64
Als Nächstes erstellst du mit dem folgenden Befehl einige erforderliche Verzeichnisse:
mkdir /etc/prometheus mkdir /var/lib/prometheus
Als Nächstes kopierst du die benötigten Konfigurationsdateien und Tools mit den folgenden Befehlen:
mv prometheus.yml /etc/prometheus/prometheus.yml mv consoles/ console_libraries/ /etc/prometheus/ mv prometheus promtool /usr/local/bin/
Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.
Erstellen einer Systemd-Dienstdatei für Prometheus
Als Nächstes musst du eine systemd-Dienstdatei erstellen, um den Prometheus-Dienst zu verwalten. Du kannst sie erstellen, indem du den folgenden Befehl ausführst:
nano /etc/systemd/system/prometheus.service
Füge die folgenden Zeilen hinzu:
[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
Speichere und schließe die Datei und setze dann die richtigen Eigentümer und Rechte für das Prometheus-Konfigurationsverzeichnis:
chown -R prometheus:prometheus /etc/prometheus/ chmod -R 775 /etc/prometheus/ chown -R prometheus:prometheus /var/lib/prometheus/
Als Nächstes lädst du den systemd-Daemon neu, um die Änderungen zu übernehmen:
systemctl daemon-reload
Starte als Nächstes den Prometheus-Dienst und aktiviere ihn mit folgendem Befehl, damit er beim Neustart des Systems gestartet wird:
systemctl start prometheus systemctl enable prometheus
Du kannst den Status von Prometheus mit dem folgenden Befehl überprüfen:
systemctl status prometheus
Du erhältst die folgende Ausgabe:
? 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>
Standardmäßig lauscht Prometheus auf Port 9090. Du kannst dies mit dem folgenden Befehl überprüfen:
ss -antpl | grep 9090
Du solltest die folgende Ausgabe sehen:
LISTEN 0 4096 *:9090 *:* users:(("prometheus",pid=18415,fd=7))
Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.
Nginx als Reverse Proxy für Prometheus konfigurieren
Als Nächstes empfiehlt es sich, Nginx als Reverse-Proxy für Prometheus zu installieren und zu konfigurieren. Installiere zunächst das Nginx-Webserverpaket mit dem folgenden Befehl:
apt-get install nginx -y
Sobald Nginx installiert ist, erstellst du mit dem folgenden Befehl eine Konfigurationsdatei für den virtuellen Nginx-Host:
nano /etc/nginx/conf.d/prometheus.conf
Füge die folgenden Zeilen hinzu:
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; } }
Speichere und schließe die Datei und überprüfe Nginx mit dem folgenden Befehl auf Syntaxfehler:
nginx -t
Wenn alles in Ordnung ist, erhältst du die folgende Ausgabe:
nginx: configuration file /etc/nginx/nginx.conf test is successful
Starte abschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen:
systemctl restart nginx
Du kannst den Status des Nginx-Dienstes auch mit dem folgenden Befehl überprüfen:
systemctl status nginx
Du solltest die folgende Ausgabe erhalten:
? 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.
Jetzt ist Nginx installiert und so konfiguriert, dass es den Prometheus-Dienst bedient. Du kannst jetzt mit dem nächsten Schritt fortfahren.
Zugriff auf das Prometheus Dashboard
Öffne nun deinen Webbrowser und rufe das Prometheus-Dashboard über die URL http://prometheus.example.com auf. Du solltest die folgende Seite sehen:
Installieren und Konfigurieren von node_exporter
node_exporter ist ein Exporter, der die Metrik des Prometheus-Servers überwacht und abfragt. Lade zunächst die neueste Version von node_exporter mit dem folgenden Befehl herunter:
wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
Sobald der Download abgeschlossen ist, entpackst du die heruntergeladene Datei mit dem folgenden Befehl:
tar -xvzf node_exporter-1.2.2.linux-amd64.tar.gz
Als Nächstes verschiebst du das entpackte Verzeichnis in das Verzeichnis /etc/prometheus/:
mv node_exporter-1.2.2.linux-amd64 /etc/prometheus/node_exporter
Als Nächstes legst du mit folgendem Befehl die richtigen Besitzverhältnisse fest:
chown -R prometheus:prometheus /etc/prometheus/node_exporter
Als nächstes erstellst du eine systemd-Dienstdatei, um den Dienst node_exporter zu verwalten:
nano /etc/systemd/system/node_exporter.service
Füge die folgenden Zeilen hinzu:
[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
Speichere und schließe die Datei und lade den systemd-Daemon neu, um die Änderungen zu übernehmen:
systemctl daemon-reload
Als Nächstes startest du den Dienst node_exporter und aktivierst ihn so, dass er beim Neustart des Systems gestartet wird:
systemctl start node_exporter systemctl enable node_exporter
Du kannst den Status des node_exporter mit dem folgenden Befehl überprüfen:
systemctl status node_exporter
Du erhältst die folgende Ausgabe:
? 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
Standardmäßig lauscht node_exporter auf Port 9100. Du kannst das mit dem folgenden Befehl überprüfen:
ss -antpl | grep 9100
Du solltest die folgende Ausgabe erhalten:
LISTEN 0 4096 *:9100 *:* users:(("node_exporter",pid=513,fd=3))
Füge node_exporter zum Prometheus Server hinzu
Als Nächstes musst du den node_exporter zur Prometheus-Konfigurationsdatei hinzufügen. Das kannst du tun, indem du die Standardkonfigurationsdatei von Prometheus bearbeitest:
nano /etc/prometheus/prometheus.yml
Füge unter der Zeile„scrape_config“ den neuen Jobnamen node_exporter hinzu, indem du die folgenden Zeilen einfügst.
- job_name: 'node_exporter' static_configs: - targets: ['localhost:9100']
Speichere und schließe die Datei und starte den Prometheus-Dienst neu, um die Änderungen zu übernehmen:
systemctl restart prometheus
Überprüfe Prometheus und node_exporter
Gehe nun zum Prometheus Dashboard und klicke auf Status => Ziel. Du solltest deinen node_exporter im folgenden Fenster sehen:
Gehe nun zurück zur Prometheus-Startseite und gib node_memory_MemAvailable_bytes in das Abfragefeld ein und klicke auf die Schaltfläche„Ausführen„. Du erhältst das folgende Ergebnis:
Du kannst die Metrikdaten von node_exporter auch über die URL http://your-server-ip:9100/metrics abrufen (siehe unten):
Fazit
Herzlichen Glückwunsch! Du hast Prometheus mit node_exporter erfolgreich auf Debian 11 installiert. Wenn du noch Fragen hast, kannst du dich gerne an mich wenden. Weitere Informationen findest du in der offiziellenPrometheus-Dokumentation.