Die Prometheus-Konfigurationsdatei (prometheus.yml) ist
das Herzstück der Prometheus-Konfiguration. Sie definiert, wie
Prometheus Metriken sammelt, speichert und verarbeitet. Hier ist eine
detaillierte Anleitung zur Erstellung und Anpassung der
prometheus.yml.
Die prometheus.yml besteht aus mehreren Abschnitten, die
verschiedene Aspekte der Konfiguration abdecken:
Definiert globale Einstellungen, die für alle Scrape-Jobs und Regeln gelten.
Beispiel:
global:
scrape_interval: 15s # Wie oft Metriken gesammelt werden
evaluation_interval: 15s # Wie oft Regeln ausgewertet werdenDefiniert, welche Endpunkte (Targets) Prometheus abfragt und wie diese Abfragen durchgeführt werden.
Beispiel:
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']Listet die Dateien auf, die Alarm- und Aufzeichnungsregeln enthalten.
Beispiel:
rule_files:
- "alert.rules"
- "recording.rules"Definiert, wie Alarme verarbeitet und an den Alertmanager gesendet werden.
Beispiel:
alerting:
alertmanagers:
- static_configs:
- targets: ['localhost:9093']Der globale Abschnitt enthält Einstellungen, die auf alle Scrape-Jobs und Regeln angewendet werden.
Beispiel:
global:
scrape_interval: 15s # Standard-Scraping-Intervall
evaluation_interval: 15s # Intervall für die Auswertung von Regeln
external_labels:
monitor: 'my-monitor' # Labels, die allen gesammelten Metriken hinzugefügt werdenScrape-Konfigurationen definieren, welche Endpunkte abgefragt werden und wie diese konfiguriert sind.
Beispiel für statische Konfiguration:
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']Beispiel für dynamische Konfiguration mit Service Discovery:
scrape_configs:
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__address__]
action: replace
target_label: __address__
regex: (.+):\d+
replacement: $1:8080Regeldateien definieren Alarm- und Aufzeichnungsregeln.
Beispiel:
rule_files:
- "alert.rules"
- "recording.rules"Beispiel für eine alert.rules-Datei:
groups:
- name: example
rules:
- alert: HighCPUUsage
expr: node_cpu_seconds_total > 0.9
for: 5m
labels:
severity: critical
annotations:
summary: "High CPU usage detected"
description: "CPU usage has been above 90% for more than 5 minutes."Der Abschnitt für die Alarmierung definiert, wie Alarme an den Alertmanager gesendet werden.
Beispiel:
alerting:
alertmanagers:
- static_configs:
- targets: ['localhost:9093']Relabeling wird verwendet, um Labels zu ändern, bevor Metriken gespeichert oder gescraped werden.
Beispiel:
scrape_configs:
- job_name: 'web'
static_configs:
- targets: ['webserver1:80', 'webserver2:80']
relabel_configs:
- source_labels: [__address__]
target_label: instance
regex: (.*):\d+
replacement: $1rule_files, um
Regeldateien getrennt von der Hauptkonfigurationsdatei zu
verwalten.--config.file-Option, um
verschiedene Konfigurationsdateien auszuprobieren.Durch die sorgfältige Erstellung und Verwaltung der
prometheus.yml-Konfigurationsdatei können Sie
sicherstellen, dass Prometheus effizient und zuverlässig arbeitet, um
Ihre Überwachungsanforderungen zu erfüllen.
Die Konfigurationsoptionen und -parameter in Prometheus bieten eine
Vielzahl von Einstellungen, um das Verhalten von Prometheus an die
spezifischen Anforderungen Ihrer Überwachungsumgebung anzupassen. Hier
sind die wichtigsten Optionen und Parameter, die in der
prometheus.yml-Datei konfiguriert werden können.
Legt das Intervall fest, in dem Metriken von den Targets abgefragt werden.
Beispiel:
global:
scrape_interval: 15sBestimmt, wie oft Regeln ausgewertet werden.
Beispiel:
global:
evaluation_interval: 15sLabels, die allen gesammelten Metriken hinzugefügt werden.
Beispiel:
global:
external_labels:
region: 'us-east-1'Ein eindeutiger Name für den Scrape-Job.
Beispiel:
scrape_configs:
- job_name: 'prometheus'Statische Konfiguration von Targets.
Beispiel:
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']Konfiguration für die automatische Erkennung von Kubernetes-Targets.
Beispiel:
scrape_configs:
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: podRegeln zum Ändern von Labels, bevor Metriken gespeichert oder gescraped werden.
Beispiel:
scrape_configs:
- job_name: 'web'
static_configs:
- targets: ['webserver1:80', 'webserver2:80']
relabel_configs:
- source_labels: [__address__]
target_label: instance
regex: (.*):\d+
replacement: $1Regeln zum Ändern von Labels, nachdem Metriken gesammelt wurden.
Beispiel:
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
metric_relabel_configs:
- source_labels: [__name__]
regex: 'node_cpu_seconds_total'
action: dropGibt an, ob Labels von Targets beibehalten oder überschrieben werden sollen.
Beispiel:
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
honor_labels: trueListet die Dateien auf, die Regeln enthalten.
Beispiel:
rule_files:
- "alert.rules"
- "recording.rules"Regeln können in Gruppen organisiert werden, um ähnliche Regeln zusammenzufassen.
Beispiel:
groups:
- name: example
rules:
- alert: HighCPUUsage
expr: node_cpu_seconds_total > 0.9
for: 5m
labels:
severity: critical
annotations:
summary: "High CPU usage detected"
description: "CPU usage has been above 90% for more than 5 minutes."Definiert, wie Alarme an den Alertmanager gesendet werden.
Beispiel:
alerting:
alertmanagers:
- static_configs:
- targets: ['localhost:9093']Gibt an, ob aufgelöste Alarme gesendet werden sollen.
Beispiel:
alerting:
alertmanagers:
- static_configs:
- targets: ['localhost:9093']
send_resolved: trueErmöglicht die Angabe von Targets über Dateien.
Beispiel:
scrape_configs:
- job_name: 'file_sd'
file_sd_configs:
- files:
- 'targets.json'Konfiguration für die automatische Erkennung von Consul-Targets.
Beispiel:
scrape_configs:
- job_name: 'consul'
consul_sd_configs:
- server: 'localhost:8500'Konfiguration für die automatische Erkennung von DNS-Targets.
Beispiel:
scrape_configs:
- job_name: 'dns'
dns_sd_configs:
- names:
- 'prometheus.example.com'Konfiguration für TLS-Verbindungen.
Beispiel:
scrape_configs:
- job_name: 'secure'
static_configs:
- targets: ['secure.example.com:443']
tls_config:
ca_file: /etc/prometheus/certs/ca.crt
cert_file: /etc/prometheus/certs/client.crt
key_file: /etc/prometheus/certs/client.key
server_name: 'secure.example.com'
insecure_skip_verify: falseKonfiguration für Basic-Auth-Authentifizierung.
Beispiel:
scrape_configs:
- job_name: 'auth'
static_configs:
- targets: ['auth.example.com:80']
basic_auth:
username: 'user'
password: 'password'Verwendung eines Bearer Tokens für die Authentifizierung.
Beispiel:
scrape_configs:
- job_name: 'bearer_token'
static_configs:
- targets: ['bearer.example.com:80']
bearer_token: 'your_bearer_token'Konfiguration eines Proxy-Servers.
Beispiel:
scrape_configs:
- job_name: 'proxy'
static_configs:
- targets: ['proxy.example.com:80']
proxy_url: 'http://proxy.example.com:8080'Legt das Timeout für das Scraping von Metriken fest.
Beispiel:
scrape_configs:
- job_name: 'timeout'
static_configs:
- targets: ['timeout.example.com:80']
scrape_timeout: 10sBestimmt, ob HTTP oder HTTPS verwendet wird.
Beispiel:
scrape_configs:
- job_name: 'https'
static_configs:
- targets: ['secure.example.com:443']
scheme: httpsDiese Konfigurationsoptionen und -parameter ermöglichen eine flexible und leistungsfähige Anpassung von Prometheus, um den spezifischen Anforderungen Ihrer Überwachungsumgebung gerecht zu werden. Durch das Verständnis und die korrekte Anwendung dieser Einstellungen können Sie die Effizienz und Zuverlässigkeit Ihrer Monitoring-Lösung maximieren.