Prometheus Operator 提供 Prometheus 及相關監控元件的 Kubernetes 原生部署與管理。這個專案的目的是簡化和自動化 Kubernetes 叢集基於 Prometheus 的監控堆疊的配置。
Prometheus算子包括但不限於下列功能:
Kubernetes 自訂資源:使用 Kubernetes 自訂資源來部署和管理 Prometheus、Alertmanager 及相關元件。
簡化的部署配置:配置 Prometheus 的基礎知識,例如版本、持久性、保留策略和來自本機 Kubernetes 資源的副本。
Prometheus Target Configuration :根據熟悉的 Kubernetes 標籤查詢自動產生監控目標配置;無需學習 Prometheus 特定的配置語言。
有關 Prometheus Operator 的介紹,請參閱入門指南。
操作員本身被認為已做好生產準備。請參閱自訂資源定義 (CRD) 版本以了解每個 CRD 的狀態:
monitoring.coreos.com/v1
:穩定的CRD 和 API,以向後相容的方式進行更改。
monitoring.coreos.com/v1beta1
:不穩定的CRD 和 API,可能會發生變化,但團隊致力於避免它們。我們鼓勵接受破壞性變更風險的使用者在生產中使用。
monitoring.coreos.com/v1alpha1
:不穩定的CRD 和 API,變更可能會頻繁發生,我們建議避免在關鍵任務環境中使用它。
Prometheus Operator 使用 Kubernetes 自訂資源來簡化 Prometheus、Alertmanager 和相關監控元件的部署和配置。
kube-prometheus 提供了基於 Prometheus 和 Prometheus Operator 的完整群集監控堆疊的範例配置。這包括部署多個Prometheus 和Alertmanager 實例、指標導出器(例如用於收集節點指標的node_exporter)、將Prometheus 連結到各種指標端點的抓取目標配置,以及用於通知群集中潛在問題的範例警報規則。
prometheus-community/kube-prometheus-stack Helm 圖表提供了與 kube-prometheus 類似的功能集。此圖表由 Prometheus 社群維護。有關更多信息,請參閱圖表的自述文件
Prometheus Operator 至少需要 Kubernetes 版本1.16.0
。如果您剛開始使用 Prometheus Operator,強烈建議您使用最新的穩定版本。
Prometheus Operator 的一個核心功能是監視 Kubernetes API 伺服器中特定物件的更改,並確保目前的 Prometheus 部署與這些物件相符。操作員根據以下自訂資源定義 (CRD) 進行操作:
Prometheus
,定義所需的 Prometheus 部署。
PrometheusAgent
,它定義了所需的 Prometheus 部署,但在代理模式下運行。
Alertmanager
,定義所需的 Alertmanager 部署。
ThanosRuler
,定義所需的 Thanos Ruler 部署。
ServiceMonitor
,它以聲明方式指定應如何監控 Kubernetes 服務群組。 Operator 會根據 API 伺服器中物件的目前狀態自動產生 Prometheus 抓取配置。
PodMonitor
,以宣告方式指定應如何監控 pod 群組。 Operator 會根據 API 伺服器中物件的目前狀態自動產生 Prometheus 抓取配置。
Probe
,以宣告方式指定入口群組或靜態目標應如何監視。 Operator 根據定義自動產生 Prometheus scrape 配置。
ScrapeConfig
,以聲明方式指定要新增至 Prometheus 的抓取配置。此 CustomResourceDefinition 有助於抓取 Kubernetes 叢集外部的資源。
PrometheusRule
,定義一組所需的 Prometheus 警報和/或記錄規則。 Operator 產生一個規則文件,可供 Prometheus 實例使用。
AlertmanagerConfig
,以聲明方式指定 Alertmanager 配置的子部分,允許將警報路由到自訂接收器並設定禁止規則。
Prometheus Operator 會自動偵測 Kubernetes API 伺服器中對上述任何物件的更改,並確保匹配的部署和配置保持同步。
要了解有關 Prometheus Operator 引入的 CRD 的更多信息,請查看設計頁面。
為了防止無效的 Prometheus 警報和記錄規則導致已部署的 Prometheus 實例出現故障,提供了准入 Webhook 以在初始建立或更新時驗證PrometheusRule
資源。
有關此功能的更多信息,請參閱用戶指南。
注意:本快速入門不提供整個監控堆疊;如果這就是您正在尋找的內容,請參閱 kube-prometheus 項目。如果您想要整個堆疊,但已經套用了bundle.yaml
,請先刪除該bundle( kubectl delete -f bundle.yaml
)。
若要快速嘗試叢集內的 Prometheus Operator,請選擇一個版本並執行下列命令,該命令會在default
命名空間中部署該 Operator:
kubectl create -f bundle.yaml
如果您想將 Prometheus Operator 部署在不同的命名空間中,您還需要kustomize
:
NAMESPACE=my_namespace kustomize 編輯設定命名空間 $NAMESPACE && kubectl create -k 。
注意:如果部署在預設命名空間以外的命名空間中,請確保調整 ClusterRoleBinding 中的命名空間。
要在叢集外部運行 Operator:
製作 scripts/run-external.sh
若要刪除運算子和 Prometheus,請先刪除您在每個命名空間中建立的任何自訂資源。操作員將自動關閉並刪除 Prometheus 和 Alertmanager Pod 以及關聯的 ConfigMap。
for n in $(kubectl get 命名空間 -o jsonpath={..metadata.name});做 kubectl 刪除 --all --namespace=$n prometheus,servicemonitor,podmonitor,alertmanagerdone
幾分鐘後,您可以繼續刪除操作員本身。
kubectl刪除-fbundle.yaml
Operator 會自動在您建立 Prometheus 或 Alertmanager 資源的每個命名空間中建立服務,並定義三個自訂資源定義。您現在可以清理這些。
for n in $(kubectl get 命名空間 -o jsonpath={..metadata.name});做 kubectl delete --ignore-not-found --namespace=$n 服務 prometheus 操作的alertmanager-operateddonekubectl delete --ignore-not-found customresourcedefinitions prometheus.monitoring.coreos.com servicemonitors.monitoring.coreos.com podmonitors.monitoring.coreos.com Alertmanagers.monitoring.coreos.com prometheusrules.monitoring.coreos.com Alertmanagerconfigs.monitoring.coreos.com scrapeconfigs.monitoring.coreos.com
參見測試
請參閱貢獻。
如果您發現與 Prometheus Operator 相關的安全漏洞,請不要透過開啟 GitHub 問題來報告,而是請向 MAINTAINERS.md 文件中找到的專案的維護人員發送電子郵件。
查看故障排除文件以了解常見問題和常見問題 (FAQ)。
prometheus-operator 組織徽標由 Bianca Cheng Costanzo 創建和貢獻。