Prometheus Metriken Server
Prometheus: Metriken-Server einrichten
Prometheus ist ein Open-Source-Monitoring-System, das Metriken von Targets scraped und in einer Zeitreihen-Datenbank speichert. Ideal für Server, Container und Microservices.
Architektur
- Prometheus Server: Sammelt und speichert Metriken
- Exporters: Stellen Metriken bereit (Node, MySQL, etc.)
- Alertmanager: Verarbeitet Alerts
- Grafana: Visualisierung (optional)
Installation
# Benutzer erstellen
sudo useradd --no-create-home --shell /bin/false prometheus
# Prometheus herunterladen
cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v2.48.0/prometheus-2.48.0.linux-amd64.tar.gz
tar xvf prometheus-2.48.0.linux-amd64.tar.gz
# Dateien verschieben
sudo mv prometheus-2.48.0.linux-amd64/prometheus /usr/local/bin/
sudo mv prometheus-2.48.0.linux-amd64/promtool /usr/local/bin/
sudo mkdir /etc/prometheus /var/lib/prometheus
sudo mv prometheus-2.48.0.linux-amd64/consoles /etc/prometheus/
sudo mv prometheus-2.48.0.linux-amd64/console_libraries /etc/prometheus/
# Berechtigungen
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
Konfiguration
sudo nano /etc/prometheus/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
# - "alerts.yml"
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: "node"
static_configs:
- targets: ["localhost:9100"]
Systemd Service
sudo nano /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
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 \
--storage.tsdb.retention.time=30d
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus
Node Exporter installieren
# Download
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvf node_exporter-1.7.0.linux-amd64.tar.gz
sudo mv node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
# Service erstellen
sudo nano /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=prometheus
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
PromQL Grundlagen
# Aktuelle CPU-Auslastung
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# RAM-Nutzung
node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes
# Disk I/O
rate(node_disk_read_bytes_total[5m])
# Netzwerk Traffic
rate(node_network_receive_bytes_total[5m])
# HTTP Requests pro Sekunde
rate(http_requests_total[5m])
# Top 5 nach CPU
topk(5, sum by (instance) (rate(node_cpu_seconds_total[5m])))
Alerting Rules
# /etc/prometheus/alerts.yml
groups:
- name: server_alerts
rules:
- alert: HighCPU
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "High CPU on {{ $labels.instance }}"
description: "CPU > 80% for 5 minutes"
- alert: DiskSpaceLow
expr: (node_filesystem_avail_bytes / node_filesystem_size_bytes) * 100 < 10
for: 5m
labels:
severity: critical
annotations:
summary: "Low disk space on {{ $labels.instance }}"
Weitere Exporter
| Exporter | Port | Metriken |
|---|---|---|
| node_exporter | 9100 | Server (CPU, RAM, Disk) |
| mysqld_exporter | 9104 | MySQL/MariaDB |
| postgres_exporter | 9187 | PostgreSQL |
| nginx_exporter | 9113 | Nginx |
| blackbox_exporter | 9115 | HTTP/DNS Probes |
Zugriff
# Web UI
http://SERVER-IP:9090
# Targets prüfen
http://SERVER-IP:9090/targets
# Metriken-Endpunkt
http://SERVER-IP:9090/metrics
Weitere Hilfe
- 📖 Prometheus Dokumentation
- 📧 E-Mail: support@enjyn.de