Die Konfiguration von Zieldefinitionen (Targets) und die Nutzung von Service Discovery Mechanismen sind zentrale Aspekte der Prometheus-Konfiguration. Diese bestimmen, welche Endpunkte überwacht werden und wie diese dynamisch entdeckt werden können.
Statische Zieldefinitionen sind direkt in der
prometheus.yml-Datei konfiguriert und eignen sich für
Umgebungen mit festen, wenig variierenden Endpunkten.
Beispielkonfiguration für statische Ziele:
scrape_configs:
- job_name: 'webservers'
static_configs:
- targets: ['webserver1:9090', 'webserver2:9090']
- job_name: 'databases'
static_configs:
- targets: ['db1:5432', 'db2:5432']Service Discovery ermöglicht die automatische Erkennung von Targets in dynamischen Umgebungen wie Cloud- und Container-Umgebungen. Prometheus unterstützt mehrere Service Discovery Mechanismen.
Kubernetes ist eine weit verbreitete Container-Orchestrierungsplattform, und Prometheus kann automatisch Pods, Services und Nodes entdecken.
Beispielkonfiguration:
scrape_configs:
- job_name: 'kubernetes-nodes'
kubernetes_sd_configs:
- role: node
- 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:8080Consul ist ein weit verbreiteter Service Discovery und Konfigurations-Management-Tool.
Beispielkonfiguration:
scrape_configs:
- job_name: 'consul-services'
consul_sd_configs:
- server: 'localhost:8500'
relabel_configs:
- source_labels: [__meta_consul_service]
action: replace
target_label: jobDNS-basierte Service Discovery ist nützlich in Umgebungen, in denen Dienste über DNS-Namen bekannt gegeben werden.
Beispielkonfiguration:
scrape_configs:
- job_name: 'dns-services'
dns_sd_configs:
- names: ['prometheus.example.com']
type: 'A'
port: 9090Zieldefinitionen können auch in Dateien hinterlegt und von Prometheus gelesen werden.
Beispielkonfiguration:
scrape_configs:
- job_name: 'file-sd'
file_sd_configs:
- files:
- '/etc/prometheus/targets.json'Beispiel targets.json:
[
{
"targets": ["localhost:9090", "localhost:9191"],
"labels": {
"job": "prometheus"
}
}
]Relabeling ermöglicht die Modifikation von Labels der gescrapten Metriken. Dies ist besonders nützlich, um dynamische Konfigurationen zu handhaben oder spezifische Labels hinzuzufügen bzw. zu ändern.
Beispiel für Relabeling-Konfiguration:
scrape_configs:
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_app]
action: replace
target_label: app
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: namespace
- source_labels: [__meta_kubernetes_pod_node_name]
action: replace
target_label: nodeDurch die korrekte Konfiguration von Zieldefinitionen und die effektive Nutzung von Service Discovery Mechanismen können Sie sicherstellen, dass Prometheus zuverlässig und effizient die benötigten Metriken sammelt und überwacht.