Zum Hauptinhalt springen

Installation und Konfiguration der Monitoring-Lösung Prometheus

info

Dieses Tutorial wurde ursprünglich von Florian Bauer am 2021-08-11 in hetzneronline/community-content veröffentlicht. Die letzten Änderungen wurden am 2023-12-05 gemacht.

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, 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 Security Group für den zu überwachenden Server
  • Freigabe des TCP-Ports 3000 in der Security Group 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 Jobs
  • static_configs beinhaltet die Konfiguration für Hosts mit statischer IP
  • targets 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://prometheus.example.com:3000/

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.

Grafana: &quot;Configuration&quot; menu with selected &quot;Data sources&quot; menuitem

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.

Grafana: &quot;Dashboards&quot; menu with selected &quot;+ Import&quot; menuitem

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:

Grafana: Import dashboard &quot;Node Exporter Full&quot;

Nun ist das Dashboard importiert und zeigt die bisher gespeicherten Daten des zu überwachenden Servers an.

Grafana: &quot;Node Exporter Full&quot; dashboard with data

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.

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.