Einführung
Prometheus ist eine Software, welche es erlaubt, die Metriken von vielen verschiedenen Quellen wie Webservern, Systemauslastung oder auch Netzwerkhardware abzurufen und zu speichern.
Dieses Tutorial beschreibt beispielsweise, wie die Performance-Daten eines Servers mit Prometheus abgefragt und mit Grafana ausgewertet werden können.
Voraussetzungen
- 2 Server mit Debian 11
- Freigabe des TCP-Ports 9100 in der IPTables-Firewall oder Cloud Firewall für den zu überwachenden Server
- Freigabe des TCP-Ports 3000 in der IPTables-Firewall oder Cloud Firewall für den überwachenden Server
Aufbau des Systems
In den folgenden Schritten wird node1.example.com als Beispiel für den zu überwachenden Server verwendet und prometheus.example.com als Beispiel für den überwachenden Server.
Schritt 1 - Installation von Node Exporter auf dem zu überwachenden Server
Der Prometheus-Stack besteht aus mehreren Komponenten. Prometheus stellt hierbei den Speicher sowie das Sammeln der Metriken von diversen Endpunkten bereit. Diese Endpunkte können von jeder Software angeboten werden. Eine Liste der Exporter und integrierten Schnittstellen kann hier eingesehen werden.
Für dieses Tutorial wird die Software Node Exporter genutzt, welche Metriken über System-Ressourcen wie Prozessorauslastung, Netzwerknutzung oder Festplattenaktivität ausliest.
Auf dem zu überwachenden Server muss für die Installation folgendes ausgeführt werden:
apt update
apt install prometheus-node-exporter
Die Metriken-Schnittstelle des Exporters sollte nun auf dem TCP-Port 9100 antworten. HTTP-Clients, wie beispielsweise curl, können somit Metriken anfragen.
Mit folgendem Befehl erhalten Sie aktuelle Werte über Systemd-Units.
root@node1.example.com:~# curl -s http://127.0.0.1:9100/metrics | grep node_systemd_units
# HELP node_systemd_units Summary of systemd unit states
# TYPE node_systemd_units gauge
node_systemd_units{state="activating"} 0
node_systemd_units{state="active"} 146
node_systemd_units{state="deactivating"} 0
node_systemd_units{state="failed"} 0
node_systemd_units{state="inactive"} 70
Schritt 2 - Installation des Prometheus Servers auf dem überwachenden Server
In diesem Beispiel wird der Prometheus Server dazu genutzt, die vom Node Exporter bereitgestellten Metriken in die integrierte Datenbank OpenTSDB abzulegen. Die Installation des Servers läuft wie folgt ab:
apt update
apt install prometheus jq
Prometheus bezieht seine Konfiguration aus einer im Format Yaml abgelegten Datei. Darin sind unter anderem die Adresse der zu überwachenden Endpunkte sowie das Intervall angegeben, nach dem die Werte periodisch abgerufen werden. Bearbeiten Sie den scrape_configs
-Abschnitt in der /etc/prometheus/prometheus.yml
-Datei wie folgt:
scrape_configs:
- job_name: 'node_exporter at node1'
static_configs:
- targets: ['node1.example.com:9100']
job_name
der Name des Jobsstatic_configs
beinhaltet die Konfiguration für Hosts mit statischer IPtargets
enthält eine oder mehrere<host>:<port>
-Paare, zu denen eine Verbindung aufgebaut werden soll
Abschließend muss der Prometheus-Service neu geladen werden.
systemctl reload prometheus.service
Mit systemctl status prometheus
kann geprüft werden, ob das Neuladen des Services erfolgreich war.
Um den Status der zu überwachenden Server anzuzeigen, kann folgender Befehl ausgeführt werden:
root@prometheus.example.com:~# curl --silent 127.0.0.1:9090/api/v1/targets | jq -r '.data.activeTargets[]|.scrapeUrl,.health,.lastError'
Im Output sollte Ihnen folgende Information angezeigt werden:
http://node1.example.com:9100/metrics
up
Schritt 3 - Installation von Grafana auf dem überwachenden Server
Da die Metriken der zu überwachenden Knoten durchgehend vom Prometheus Server abgerufen und für 15 Tage gespeichert werden, können die Daten über mehrere Wege angezeigt/ausgewertet werden. In diesem Tutorial benutzen wir Grafana, welches Dashboards für viele verschiedene Datenquellen über ein Webinterface bereitstellt.
Die Aktivierung des Grafana-Repositories sowie die nachfolgende Installation auf prometheus.example.com wird wie folgt durchgeführt:
apt install apt-transport-https software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | apt-key add -
echo "deb https://apt.grafana.com stable main" > /etc/apt/sources.list.d/grafana.list
apt update
apt install grafana
Aktivieren und starten Sie nun abschließend den Grafana-Daemon:
systemctl enable grafana-server.service
systemctl start grafana-server.service
Schritt 4 - Konfiguration des Grafana-Servers
Der Grafana-Server stellt ein Webinterface bereit. Beachten Sie, dass die Sicherheitseinstellungen für Grafana noch nicht eingerichtet wurden. Solange die Verbindung zwischen Ihrem Browser und dem Dashboard-Server nicht sicher ist, verwenden Sie nur Zugangsdaten, die sich für Testzwecke eignen.
Auf das Webinterface kann über folgende URL zugegriffen werden:
http:/
Die Default-Zugangsdaten sind:
- Nutzername: admin
- Passwort: admin
Nachdem Sie sich das erste Mal eingeloggt haben, können Sie das Passwort ändern.
Zu diesem Zeitpunkt sind noch keine Datenquellen oder Dashboards eingerichtet. Fügen Sie als erstes eine Datenquelle hinzu.
Wählen Sie als "Data source" Typ Prometheus
und geben Sie http://localhost:9090
im URL-Feld an. Wählen Sie anschließend Save & test
aus, um die Datenquelle zu erstellen.
Um ein neues Dashboard zu erstellen, können Sie zwischen zwei Möglichkeiten wählen:
- Erstellung individueller Panels und Dashboards
- Import bereits von der Community angelegter Vorlagen
Um die gespeicherten Metriken des node_exporters
anzuzeigen, kann dieses bereits vordefinierte Dashboard verwendet werden.
Kopieren Sie die ID, um das Dashboard in Ihr Grafana zu importieren.
Wählen Sie + Import aus, fügen Sie die kopierte ID ein und klicken Sie auf Load. Wählen Sie die Prometheus-Datenquelle für das Dashboard aus:
Nun ist das Dashboard importiert und zeigt die bisher gespeicherten Daten des zu überwachenden Servers an.
Ergebnis
In diesem Tutorial wurde ein Prometheus-Stack aufgesetzt, um die Performance-Daten eines Servers auszulesen, abzufragen und grafisch darzustellen. Mit diesem Setup besteht die Basis für die Überwachung zahlreicher Dienste und Knoten.
Zusätzlich empfiehlt es sich einen Reverse-Proxy zur Absicherung des Dashboards zu verwenden, wie es beispielsweise in diesem Tutorial unter dem Titel "Step 5 - Install Nginx" erklärt wird.
Wenn Sie die prometheus.yml
-Datei bearbeiten, um unter dem scrape_configs
-Bereich einen neuen Job hinzuzufügen, können Sie neben dem static_configs
-Parameter, mit welchem die Informationen von einer bestimmten IP-Adresse abgefragt werden, auch eine weitere Option nutzen. Prometheus bietet zusätzlich auch eine Reihe an offiziellen Service-Discovery-Mechanismen. Mit diesen ist es möglich, verfügbare Host dynamisch von Prometheus erkennen und automatisch als Targets hinzufügen zu lassen. Für weitere Informationen bezüglich des dynamischen Hinzufügens von Hetzner Dedicated und Cloud Server Targets aus Ihrem Hetzner Account, nutzen Sie unser Prometheus Service Discovery Tutorial.