4.1 Installation von Prometheus
Prometheus ist ein leistungsstarkes Open-Source-Monitoring- und Benachrichtigungssystem, das entwickelt wurde, um Metriken aus verschiedenen Quellen, einschließlich Docker-Containern, zu sammeln und zu speichern. In dieser Vorlesung werden wir uns den Prozess der Einrichtung des Container-Monitorings mit Prometheus genauer ansehen, einschließlich der Installation, Einrichtung der Metrikensammlung und Integration mit Docker.
1. Herunterladen und Installieren von Prometheus
Lade zunächst die neueste Version von Prometheus von der offiziellen Website herunter:
wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz
Entpacke das Archiv:
tar xvfz prometheus-*.tar.gz
cd prometheus-*
Verschiebe die Binärdateien nach /usr/local/bin
:
sudo mv prometheus /usr/local/bin/
sudo mv promtool /usr/local/bin/
4.2 Einrichten der Prometheus-Konfigurationsdatei
Prometheus verwendet eine Konfigurationsdatei namens prometheus.yml
, um die Quellen für Metriken und die Einstellungen zur Datenerfassung zu definieren. Erstellt oder bearbeitet die Datei prometheus.yml
:
global:
scrape_interval: 15s # Intervall für das Sammeln von Metriken
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'cadvisor'
static_configs:
- targets: ['localhost:8080']
Diese Konfigurationsdatei enthält zwei Aufträge (jobs):
prometheus
: Zur Erfassung von Metriken direkt von Prometheus.cadvisor
: Zur Erfassung von Metriken von cAdvisor, der verwendet wird, um Docker-Container zu überwachen.
5.3 Starten von Prometheus
Starte Prometheus mit der erstellten Konfigurationsdatei:
prometheus --config.file=prometheus.yml
Prometheus wird unter der Adresse http://localhost:9090 verfügbar sein.
5.4 Installation und Konfiguration von cAdvisor
cAdvisor
(Container Advisor) — ist ein Tool zur Überwachung von Containern, das Metriken für Docker-Container sammelt und bereitstellt. Um es zu verwenden, folge diesen Schritten:
Starte cAdvisor
in einem Docker-Container:
docker run -d \
--name=cadvisor \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--privileged \
gcr.io/cadvisor/cadvisor:latest
cAdvisor
wird unter der Adresse http://localhost:8080 verfügbar sein.
5.5 Aktualisierung der Prometheus-Konfiguration für cAdvisor
Stelle sicher, dass die Prometheus-Konfiguration ein Job für cAdvisor enthält. Ein Beispiel für die Konfiguration wurde oben angegeben.
Starte Prometheus neu, um die Änderungen anzuwenden:
prometheus --config.file=prometheus.yml
5.6 Überprüfung der Metrik-Sammlung
Gehe zur Web-Oberfläche von Prometheus unter der Adresse http://localhost:9090 und stelle sicher, dass Prometheus Metriken von cAdvisor sammelt. Führe dazu die folgende Abfrage in Prometheus aus:
container_cpu_usage_seconds_total
Du solltest die Daten sehen, die von den Docker-Containern gesammelt wurden.
5.7 Hinzufügen zusätzlicher Metriken
Du kannst zusätzliche Metriken in die Konfigurationsdatei von Prometheus hinzufügen, um mehr Daten über deine Container zu sammeln. Beispiel für zusätzliche Metriken:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
Dafür musst du node_exporter
installieren, der Metriken über den Zustand des Hostsystems bereitstellt.
Lade node_exporter
herunter und installiere ihn:
wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
sudo mv node_exporter-1.2.2.linux-amd64/node_exporter /usr/local/bin/
Starte node_exporter:
node_exporter &
Jetzt ist node_exporter
unter http://localhost:9100 verfügbar.
5.8 Erstellen von Alert-Regeln
Prometheus unterstützt das Erstellen von Alert-Regeln, um Administratoren über Probleme zu informieren. Füge die Alert-Regeln zur Konfigurationsdatei prometheus.yml
hinzu:
rule_files:
- "alert.rules"
alerting:
alertmanagers:
- static_configs:
- targets:
- "localhost:9093"
Erstelle eine Datei alert.rules
mit einem Beispiel für Regeln:
groups:
- name: beispiel
rules:
- alert: HighCPUUsage
expr: container_cpu_usage_seconds_total{job="cadvisor"} > 0.85
for: 1m
labels:
severity: warnung
annotations:
summary: "Hohe CPU-Auslastung erkannt"
description: "Der Container verwendet mehr als 85% CPU für mehr als 1 Minute."
GO TO FULL VERSION