Der Prometheus-Operator ermöglicht die native Kubernetes-Bereitstellung und -Verwaltung von Prometheus und zugehörigen Überwachungskomponenten. Der Zweck dieses Projekts besteht darin, die Konfiguration eines Prometheus-basierten Überwachungsstapels für Kubernetes-Cluster zu vereinfachen und zu automatisieren.
Der Prometheus-Operator umfasst unter anderem die folgenden Funktionen:
Benutzerdefinierte Kubernetes-Ressourcen : Verwenden Sie benutzerdefinierte Kubernetes-Ressourcen, um Prometheus, Alertmanager und verwandte Komponenten bereitzustellen und zu verwalten.
Vereinfachte Bereitstellungskonfiguration : Konfigurieren Sie die Grundlagen von Prometheus wie Versionen, Persistenz, Aufbewahrungsrichtlinien und Replikate aus einer nativen Kubernetes-Ressource.
Prometheus-Zielkonfiguration : Generieren Sie automatisch Überwachungszielkonfigurationen basierend auf bekannten Kubernetes-Label-Abfragen. Es ist nicht erforderlich, eine Prometheus-spezifische Konfigurationssprache zu erlernen.
Eine Einführung in den Prometheus-Operator finden Sie im Leitfaden „Erste Schritte“.
Der Betreiber selbst gilt als produktionsbereit. Den Status der einzelnen CRDs entnehmen Sie bitte den Versionen der Custom Resource Definition (CRD):
monitoring.coreos.com/v1
: stabile CRDs und API, Änderungen werden abwärtskompatibel vorgenommen.
monitoring.coreos.com/v1beta1
: Instabile CRDs und API, Änderungen können auftreten, aber das Team konzentriert sich darauf, sie zu vermeiden. Wir empfehlen die Verwendung in der Produktion für Benutzer, die das Risiko von fehlerhaften Änderungen in Kauf nehmen.
monitoring.coreos.com/v1alpha1
: Instabile CRDs und API, Änderungen können häufig auftreten, und wir empfehlen, die Verwendung in geschäftskritischen Umgebungen zu vermeiden.
Der Prometheus-Operator nutzt benutzerdefinierte Kubernetes-Ressourcen, um die Bereitstellung und Konfiguration von Prometheus, Alertmanager und zugehörigen Überwachungskomponenten zu vereinfachen.
kube-prometheus bietet Beispielkonfigurationen für einen vollständigen Cluster-Überwachungsstapel basierend auf Prometheus und dem Prometheus-Operator. Dazu gehören die Bereitstellung mehrerer Prometheus- und Alertmanager-Instanzen, Metrik-Exportprogramme wie der node_exporter zum Sammeln von Knotenmetriken, eine Scrape-Zielkonfiguration, die Prometheus mit verschiedenen Metrik-Endpunkten verknüpft, und Beispielalarmierungsregeln für die Benachrichtigung über potenzielle Probleme im Cluster.
Das Helm-Diagramm prometheus-community/kube-prometheus-stack bietet einen ähnlichen Funktionsumfang wie kube-prometheus. Dieses Diagramm wird von der Prometheus-Community gepflegt. Weitere Informationen finden Sie in der Readme-Datei des Diagramms
Der Prometheus-Operator erfordert mindestens Kubernetes Version 1.16.0
. Wenn Sie gerade erst mit dem Prometheus Operator beginnen, wird dringend empfohlen, die neueste stabile Version zu verwenden.
Eine Kernfunktion des Prometheus-Operators besteht darin, den Kubernetes-API-Server auf Änderungen an bestimmten Objekten zu überwachen und sicherzustellen, dass die aktuellen Prometheus-Bereitstellungen mit diesen Objekten übereinstimmen. Der Operator agiert anhand der folgenden benutzerdefinierten Ressourcendefinitionen (CRDs):
Prometheus
, das eine gewünschte Prometheus-Bereitstellung definiert.
PrometheusAgent
, der eine gewünschte Prometheus-Bereitstellung definiert, die jedoch im Agent-Modus ausgeführt wird.
Alertmanager
, der eine gewünschte Alertmanager-Bereitstellung definiert.
ThanosRuler
, das eine gewünschte Thanos Ruler-Bereitstellung definiert.
ServiceMonitor
, der deklarativ angibt, wie Gruppen von Kubernetes-Diensten überwacht werden sollen. Der Operator generiert automatisch eine Prometheus-Scrape-Konfiguration basierend auf dem aktuellen Status der Objekte im API-Server.
PodMonitor
, der deklarativ angibt, wie eine Gruppe von Pods überwacht werden soll. Der Operator generiert automatisch eine Prometheus-Scrape-Konfiguration basierend auf dem aktuellen Status der Objekte im API-Server.
Probe
, die deklarativ angibt, wie Gruppen von Ingressen oder statischen Zielen überwacht werden sollen. Der Operator generiert automatisch eine Prometheus-Scrape-Konfiguration basierend auf der Definition.
ScrapeConfig
, das deklarativ Scrape-Konfigurationen angibt, die zu Prometheus hinzugefügt werden sollen. Diese CustomResourceDefinition hilft beim Scraping von Ressourcen außerhalb des Kubernetes-Clusters.
PrometheusRule
, das einen gewünschten Satz von Prometheus-Benachrichtigungs- und/oder Aufzeichnungsregeln definiert. Der Operator generiert eine Regeldatei, die von Prometheus-Instanzen verwendet werden kann.
AlertmanagerConfig
, das deklarativ Unterabschnitte der Alertmanager-Konfiguration angibt, die Weiterleitung von Warnungen an benutzerdefinierte Empfänger ermöglicht und Sperrregeln festlegt.
Der Prometheus-Operator erkennt automatisch Änderungen am Kubernetes-API-Server an den oben genannten Objekten und stellt sicher, dass übereinstimmende Bereitstellungen und Konfigurationen synchron bleiben.
Um mehr über die vom Prometheus-Operator eingeführten CRDs zu erfahren, schauen Sie sich die Designseite an.
Um zu verhindern, dass ungültige Prometheus-Warnungs- und Aufzeichnungsregeln Fehler in einer bereitgestellten Prometheus-Instanz verursachen, wird ein Zulassungs-Webhook bereitgestellt, um PrometheusRule
Ressourcen bei der ersten Erstellung oder Aktualisierung zu validieren.
Weitere Informationen zu dieser Funktion finden Sie im Benutzerhandbuch.
Hinweis: In dieser Schnellstartanleitung wird kein vollständiger Überwachungsstapel bereitgestellt. Wenn Sie danach suchen, sehen Sie sich das Kube-Prometheus-Projekt an. Wenn Sie den gesamten Stapel möchten, aber bundle.yaml
bereits angewendet haben, löschen Sie zuerst das Bundle ( kubectl delete -f bundle.yaml
).
Um schnell nur den Prometheus-Operator innerhalb eines Clusters auszuprobieren, wählen Sie eine Version aus und führen Sie den folgenden Befehl aus, der den Operator im default
-Namespace bereitstellt:
kubectl create -f bundle.yaml
Wenn Sie den Prometheus-Operator in einem anderen Namespace bereitstellen möchten, benötigen Sie außerdem kustomize
:
NAMESPACE=my_namespace kustomize edit set namespace $NAMESPACE && kubectl create -k .
Hinweis: Stellen Sie sicher, dass Sie den Namespace im ClusterRoleBinding anpassen, wenn Sie in einem anderen Namespace als dem Standard-Namespace bereitstellen.
So führen Sie den Operator außerhalb eines Clusters aus:
machen scripts/run-external.sh
Um den Operator und Prometheus zu entfernen, löschen Sie zunächst alle benutzerdefinierten Ressourcen, die Sie in jedem Namespace erstellt haben. Der Betreiber wird die Prometheus- und Alertmanager-Pods sowie die zugehörigen ConfigMaps automatisch herunterfahren und entfernen.
für n in $(kubectl get namespaces -o jsonpath={..metadata.name}); Tun kubectl delete --all --namespace=$n prometheus,servicemonitor,podmonitor,alertmanagerdone
Nach ein paar Minuten können Sie den Operator selbst entfernen.
kubectl delete -f bundle.yaml
Der Operator erstellt automatisch Dienste in jedem Namespace, in dem Sie eine Prometheus- oder Alertmanager-Ressource erstellt haben, und definiert drei benutzerdefinierte Ressourcendefinitionen. Sie können diese jetzt bereinigen.
für n in $(kubectl get namespaces -o jsonpath={..metadata.name}); Tun kubectl delete --ignore-not-found --namespace=$n service prometheus-operated Alertmanager-operateddonekubectl delete --ignore-not-found customresourcedefinitions prometheuses.monitoring.coreos.com servicemonitors.monitoring.coreos.com podmonitors.monitoring.coreos.com alarmmanagers.monitoring.coreos.com prometheusrules.monitoring.coreos.com alarmmanagerconfigs.monitoring.coreos.com scrapeconfigs.monitoring.coreos.com
Siehe TESTEN
Siehe BEITRAGEN.
Wenn Sie eine Sicherheitslücke im Zusammenhang mit dem Prometheus-Operator finden, melden Sie diese bitte nicht durch Öffnen eines GitHub-Problems, sondern senden Sie stattdessen eine E-Mail an die Betreuer des in der Datei MAINTAINERS.md gefundenen Projekts.
Sehen Sie sich die Fehlerbehebungsdokumentation für häufige Probleme und häufig gestellte Fragen (FAQ) an.
Das Logo der prometheus-Betreiberorganisation wurde von Bianca Cheng Costanzo erstellt und beigesteuert.