跳至主要内容

啟用 Prometheus Federator

需求​

預設情況下,Prometheus Federator 被設定並旨在與 rancher-monitoring 一起部署,後者會部署 Prometheus Operator 以及 Cluster Prometheus,每個 Project Monitoring Stack 預設設定為從中聯合命名空間範圍的指標。

有關安裝 rancher-monitoring 的說明,請參閱此頁面。

預設設定應該已經與您的 rancher-monitoring 堆疊相容。但是,為了最佳化叢集中 Prometheus Federator 的安全性和可用性,我們建議對 rancher-monitoring 進行這些額外的設定:

確保 cattle-monitoring-system 命名空間被放置到 System Project 中(或具有對叢集中其他 Project 存取權限的類似鎖定的 Project 中)​

Select Projects-Namespaces

Prometheus Operator 的安全模型期望其部署到的命名空間(例如,cattle-monitoring-system)除了 Cluster Admins 之外對任何人都有限制的存取權限,以避免透過 exec 進入 Pod(例如執行 Helm 操作的 Job)進行權限提升。此外,將 Prometheus Federator 和所有 Project Prometheus 堆疊部署到 System Project 中可確保每個 Project Prometheus 能夠存取並抓取所有 Project 中的工作負載,即使透過 Project Network Isolation 定義了網路策略也是如此。它還為 Project Owners、Project Members 和其他使用者提供有限的存取權限,使他們無法存取他們不應該存取的資料(即,被允許 exec 進入 Pod、設定抓取給定 Project 之外的命名空間的能力等)。

  1. 開啟 System 專案以檢查您的命名空間:

    在 Rancher UI 中點擊 Cluster > Projects/Namespaces。這將顯示 System 專案中的所有命名空間:

    Select Projects-Namespaces

  2. 如果您在 cattle-monitoring-system 命名空間中有現有的 Monitoring V2 安裝,但該命名空間不在 System 專案中,您可以將 cattle-monitoring-system 命名空間移動到 System 專案或移動到另一個存取受限的專案。要執行此操作,您可以:

    • 將命名空間拖放到 System 專案中,或

    • 選擇命名空間右側的 ⋮,點擊 Move,然後從 Target Project 下拉選單中選擇 System

      Move to a New Project

設定 rancher-monitoring 僅監視由 Helm chart 本身建立的資源​

由於每個 Project Monitoring Stack 都會監視其他命名空間並收集額外的自訂工作負載指標或儀表板,因此建議在所有選擇器上設定以下設定,以確保 Cluster Prometheus Stack 僅監視由 Helm Chart 本身建立的資源:

matchLabels:
release: "rancher-monitoring"

建議以下選擇器欄位具有此值:

  • .Values.alertmanager.alertmanagerSpec.alertmanagerConfigSelector
  • .Values.prometheus.prometheusSpec.serviceMonitorSelector
  • .Values.prometheus.prometheusSpec.podMonitorSelector
  • .Values.prometheus.prometheusSpec.ruleSelector
  • .Values.prometheus.prometheusSpec.probeSelector

啟用此設定後,您始終可以透過向 ServiceMonitors 或 PodMonitors 新增標籤 release: "rancher-monitoring" 來建立由 Cluster Prometheus 選取的 ServiceMonitors 或 PodMonitors,在這種情況下,即使這些 ServiceMonitors 或 PodMonitors 所在的命名空間不是系統命名空間,它們也會預設自動被 Project Monitoring Stacks 忽略。

備註

如果您不想允許使用者能夠在 Project 命名空間中建立聚合到 Cluster Prometheus 的 ServiceMonitors 和 PodMonitors,您還可以在 chart 上設定 namespaceSelectors 以僅針對系統命名空間(必須包含 cattle-monitoring-system 和 cattle-dashboards,rancher-monitoring 預設會將資源部署到其中;您還需要監視 default 命名空間以取得 apiserver 指標,或建立自訂 ServiceMonitor 以從位於 default 命名空間中的 Service 抓取 apiserver 指標),以限制您的 Cluster Prometheus 選取其他 Prometheus Operator CR。在這種情況下,建議啟用 .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors=true,以允許您定義可以從系統命名空間內監視非系統命名空間的 ServiceMonitors。

增加 Cluster Prometheus 的 CPU / 記憶體限制​

根據叢集的設定,通常建議為 Cluster Prometheus 提供大量專用記憶體,以避免由於記憶體不足錯誤(OOMKilled)而導致的重新啟動,這通常是由叢集中建立的流失率造成的,導致在一個時間區塊內生成並由 Prometheus 擷取大量高基數指標。這是預設 Rancher Monitoring 堆疊期望大約 4GB RAM 才能在正常大小的叢集中運行的原因之一。但是,當引入所有向同一個 Cluster Prometheus 發送 /federate 請求的 Project Monitoring Stacks 時,並且依賴 Cluster Prometheus "啟動" 來聯合其命名空間上的系統資料時,Cluster Prometheus 具有充足的 CPU / 記憶體分配就更加重要,以防止可能導致叢集中所有 Project Prometheis 出現資料差距的中斷。

備註

關於 Cluster Prometheus 應該設定多少記憶體沒有具體建議,因為這完全取決於使用者的設定(即遇到高流失率的可能性以及當時可能生成的指標規模);它通常因設定而異。

安裝 Prometheus Federator 應用程式​

  1. 點擊 ☰ > Cluster Management。
  2. 前往您要安裝 Prometheus Federator 的叢集並點擊 Explore。
  3. 點擊 Apps -> Charts。
  4. 點擊 Prometheus Federator chart。
  5. 點擊 Install。
  6. 在 Metadata 頁面上,點擊 Next。
  7. 在 Namespaces > Project Release Namespace Project ID 欄位中,預設使用 System Project,但可以使用具有類似限制存取的另一個專案來覆蓋。可以使用在本機上游叢集中執行的以下命令找到 Project ID:
kubectl get projects -A -o custom-columns="NAMESPACE":.metadata.namespace,"ID":.metadata.name,"NAME":.spec.displayName
  1. 點擊 Install。

**結果:**Prometheus Federator 應用程式已部署在 cattle-monitoring-system 命名空間中。