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:

Prometheus GUI

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:

Verfügbarer Knotenspeicher

Du kannst die Metrikdaten von node_exporter auch über die URL http://your-server-ip:9100/metrics abrufen (siehe unten):

node_exporter Metriken

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.

Das könnte dich auch interessieren …