Nicht nur für Firmen zahlt es sich aus, die laufenden Server, Geräte und das Netzwerk zu monitoren – also zu beobachten. Wir haben auf der Linux Bibel neben vielen kleinen Tools, auch schon das große Monitoring-System Zabbix kennengelernt – in diesem Beitrag geht es um das Monitoring mit Prometheus.
Prometheus ist nicht so Hardware-lastig wie Zabbix, für manche Dinge vor allem nicht so kompliziert und umständlich, vor allem, wenn es um einfache Dinge geht. Man muss auch sagen – wird es spezieller, als rein nur normale Rechner zu monitoren, kann es schon auch komplizierter werden.
Inhaltsverzeichnis
Prometheus installieren
Unter auf Debian basierenden Linux-Distributionen installieren Sie diese Software wie üblich ganz einfach über die Paket-Verwaltung durch das Paket „prometheus„. Etwa am einfachsten als root am Terminal mit dem Befehl:
apt install prometheus
Ich habe hier Prometheus auf einem Raspberry Pi installiert. Die Software braucht auch einen Webserver – hierzu installiere ich den schlanken Nginx:
apt install nginx
Jetzt muss der Webserver darauf konfiguriert werden, dass Prometheus auch angezeigt wird – hierzu öffnen wir dessen Konfigurationsdatei. In diesem Fall mit dem professionellen Editor Vim:
vim /etc/nginx/conf.d/prometheus.conf
Hier fügen wir folgenden Code ein:
server {
listen 80;
server_name prometheus.robert.org;
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;
}
}
Den server_name
passen Sie natürlich entsprechend an, den Port, wenn gewünscht ebenfalls, anschließend starten Sie den Server neu:
systemctl restart nginx.service
Anschließend rufen Sie Prometheus über den Webbrowser auf – etwa auf dem lokalen Rechner mit „http://localhost:80“ oder auf einem anderen Rechner, mit der IP-Adresse des Rechners „http://192.168.1.105:80“ – zuletzt geben Sie nach einem Doppelpunkt den Port an:
Damit wäre Prometheus betriebsbereit, wir müssen nur noch entsprechende zu überwachende Systeme einfügen. Wollen wir als Erstes gleich einmal den Prometheus-Host angeben – hierzu ist unter Debian mit Prometheus auch gleich der passende Exporter installiert, dieser läuft auch bereits, wie der Befehl:
systemctl status prometheus-node-exporter.service
zeigt:
Wir müssen Prometheus jetzt nur noch anweisen, den Exporter zu nutzen – dies erledigen wir wieder als root am Terminal mit dem gewünschten Editor über die Datei „/etc/prometheus/prometheus.yml„:
vim /etc/prometheus/prometheus.yml
Hier scrollen Sie erst einmal ganz hinunter und finden folgenden Code:
- job_name: node
# If prometheus-node-exporter is installed, grab stats about the local
# machine by default.
static_configs:
- targets: ['localhost:9100']
Unter Debian ist dieser Exporter bereits aktiv, Sie müssen also nichts weiter tun. Wichtig ist, von dieser Datei schon einmal gehört zu haben – es ist die zentrale Konfigurationsdatei. Im Webbrowser klicken Sie jetzt auf „Status → Targets“ – hier sehen Sie bereits den aktiven Exporter, der lokale Rechner wird also bereits überwacht:
Die Funktion können wir auch überprüfen, indem Sie auf „Prometheus“ klicken und im Feld „Execute“ etwa folgenden Befehl eingeben:
node_memory_MemAvailable_bytes
Anschließend klicken Sie auf „Execute„, im Feld darunter erhalten Sie den aktuellen Wert:
Sie könnten jetzt in der Prometheus-Oberfläche entsprechende Graphen einfügen, dies ist jedoch weder bequem noch schön. Verbinden Sie doch die Software Grafana mit Prometheus. Doch – dazu mehr später, jetzt wollen wir einen weiteren Host einfügen. Für normale Betriebssysteme (Linux, macOS, BSD, Windows-Zeugs und so weiter) nutzen man sogenannte Node-Exporter, die man auf den entsprechenden Hosts installiert. Diese finden Sie auf GitHub – laden Sie den passenden herunter. Einen Exporter für Windows finden Sie unter Prometheus-Exporter.
Unter Linux starten Sie den Exporter entweder beim Start des Systems per Script, über Cron oder auch über Systemd. Zum Test lässt sich dieser nach dem Entpacken auch einfach mit dem Befehl:
./node_exporter
starten. Jetzt wechseln Sie wieder auf Ihren Prometheus-Server und öffnen die Konfigurationsdatei, scrollen ganz nach unten – hier finden Sie die Zeile:
- targets: ['localhost:9100']
Hier fügen Sie die IP-Adresse des entsprechenden Hosts ein – und den Port 9100 – dieser muss über die Firewall freigeschaltet sein:
- targets: ['localhost:9100','192.168.1.101:9100']
Anschließend starten Sie Prometheus neu:
systemctl restart prometheus.service
Jetzt finden Sie in der Prometheus-GUI unter den „Targets“ den neuen Host:
Für weiteres Monitoring (eigentlich geht so gut wie alles) finden Sie unter Prometheus-Exporter entsprechende Exporter und die passenden Anleitungen.
Grafana als GUI für Prometheus
Gleich einmal zu Beginn – die Konfiguration von Prometheus wird über die Konfigurationsdatei gemacht – siehe Link oben, Grafana zeigt gemonitorte Werte an. Sie finden die Software unter Grafana zum Download, inklusive entsprechenden Anleitungen. Unter Debian laden Sie einfach das entsprechende Debian-Paket herunter – etwa:
wget https://dl.grafana.com/oss/release/grafana_8.2.3_arm64.deb
apt install ./grafana_8.2.3_arm64.deb
Jetzt aktivieren und starten Sie Grafana:
systemctl enable --now grafana-server.service
Anschließend wechseln Sie im Browser auf den Host mit dem Port 3000:
Hier loggen Sie sich mit dem Benutzer admin und dem Passwort admin ein, anschließend werden Sie aufgefordert das Passwort zu ändern:
Hier klicken Sie links auf das Zahnrad und wählen „Data sources„, klicken auf den Schalter „Add data source„:
Hier zeigt sich gleich einmal Prometheus, klicken Sie darauf:
Unter „HTTP → URL“ geben Sie die lokale Adresse ein „http://localhost:9090“ und klicken ganz unten auf „Save & Test„. Was Sie jetzt noch benötigen, ist ein passendes Dashboard – könnte man selbst erstellen, schneller geht es natürlich mit vorgefertigten. Solche für Prometheus finden Sie unter Grafana Dashboards. Ein passendes für alle möglichen Hosts wäre etwa Node exporter full with node name. Hier kopieren Sie die ID unten rechts – jetzt klicken Sie in Grafana links auf das Plus und wählen „Import„, fügen die ID ein und klicken auf „Load„:
Unten wählen Sie „Prometheus“ und klicken auf „Import„:
Schon wird der erste Host angezeigt, oben können Sie zwischen den überwachten Hosts wechseln. Rechts oben passen Sie das Intervall für die automatische Aktualisierung der Anzeige an, scrollen Sie hinunter, finden Sie weitere Daten, die Sie nur ausklappen müssen:
Es dauert ein wenig, bis sich die ganzen Ausgaben mit Daten füllen, ist dann in Grafana aber sehr übersichtlich – geradezu hübsch. In Grafana finden Sie in den Einstellungen auch den Alert-Manager, über diesen können Sie sich bei Problemen informieren lassen (mehr hierzu unter Grafana).
Grundsätzlich ist Prometheus ein System für die Echtzeit-Überwachung, gespeichert und angezeigt werden nur die letzten acht Stunden. Möchten Sie Daten über längere Zeit speichern, verbinden Sie Prometheus zusätzlich mit einer Timescale-DB.
Noch keine Reaktion