全部產品
Search
文件中心

Container Service for Kubernetes:阿里雲Prometheus監控

更新時間:Mar 29, 2025

您可以通過阿里雲Prometheus監控查看ACK Serverless叢集預先配置的監控大盤和監控效能指標。本文介紹如何在ACK Serverless中接入阿里雲Prometheus監控、如何配置Prometheus監控警示和自訂Prometheus監控指標,並通過Grafana展示。

阿里雲Prometheus監控介紹

阿里雲Prometheus監控全面對接開源Prometheus生態,支援類型豐富的組件監控,提供多種開箱即用的預置監控大盤,且提供全面託管的Prometheus服務。

叢集類型

支援的Prometheus監控組件

ACK Serverless叢集Pro版

支援安裝託管版和非託管版Prometheus監控組件。預設安裝託管版Prometheus監控組件。

  • 託管版: 為託管採集Agent(不佔用叢集資源),提供基礎與自訂指標,由阿里Prometheus雲端服務直接採集您叢集中的容器監控資料,提供開箱即用以及Serverless化的體驗。預設支援資料存放區時間長度為7天 。

  • 基礎版:為非託管採集Agent(預設單副本佔用叢集資源為3C4G),需部署Prometheus的採集組件、Kube-State-Metrics等組件至您的叢集中,提供基礎指標,支援資料存放區時間長度為7天。且至少需啟動2個預設單副本的Elastic Container Instance,ECI執行個體價格,請參見ECI執行個體概述

ACK Serverless叢集基礎版

僅支援非託管版Prometheus監控組件,為非託管採集Agent(預設單副本佔用叢集資源為3C4G),提供基礎指標,支援資料存放區時間長度為7天。

藉助阿里雲Prometheus監控,您無需自行搭建Prometheus監控系統,無需關心底層資料存放區、資料展示、系統營運等問題。關於阿里雲Prometheus監控的更多資訊,請參見什麼是Prometheus監控

前提條件

步驟一:開啟阿里雲Prometheus監控

建立叢集時開啟

在建立叢集的組件配置頁面,選中使用阿里雲可觀測監控 Prometheus 版。具體操作,請參見建立ACK Serverless叢集

image.png

說明

在建立叢集時,系統預設選中使用阿里雲可觀測監控 Prometheus 版。叢集建立完成,系統將自動設定阿里雲Prometheus監控服務。

叢集預設安裝託管版Prometheus監控組件,如需使用非託管版Prometheus監控組件,您需要在營運管理>組件中心頁面先卸載託管版的ack-arms-prometheus監控組件後,才可以查看和安裝非託管版組件ack-arms-prometheus

說明

如果不存在ack-arms-prometheus卡片,說明當前ACK Serverless叢集所在地區不支援開啟阿里雲Prometheus監控。

image.png

在已有叢集中開啟

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > Prometheus 監控

  3. Prometheus 監控頁面,按照頁面提示完成相關組件的安裝和監控大盤的檢查。

    控制台會自動安裝組件、檢查監控大盤。安裝完成後,您可以單擊各個頁簽查看相應監控資料。

查看阿里雲Prometheus Grafana大盤

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > Prometheus 監控

  3. Prometheus 監控頁面,單擊需要查看監控大盤,即可查看相應的監控資料。

配置Prometheus監控警示

為監控任務建立警示可在滿足警示條件時通過郵件、簡訊、DingTalk等渠道即時警示,主動協助您發現異常。警示規則被觸發時,系統會向您指定的警示通知對象發送通知。

1、建立通知對象

  1. 登入ARMS控制台,在左側導覽列選擇警示管理 > 通知對象

  2. 按照頁面提示,配置警示通知對象。

    關於配置流程和配置項詳細說明,請參見警示通知對象

2、配置警示規則

  1. 登入ARMS控制台。在左側導覽列選擇Prometheus監控 > 執行個體列表,進入可觀測監控 Prometheus 版的執行個體列表頁面。

  2. 在頁面頂部選擇目標ACK叢集所在的地區,然後單擊目標執行個體名稱進入對應執行個體頁面。

  3. 在左側導覽列,單擊警示規則,在警示規則列表為目標式通知對象配置警示規則。

    具體操作,請參見建立Prometheus警示規則

步驟四:自訂Prometheus監控指標並通過Grafana展示

您可以配置Pod Annotation,使用預設服務發現自訂指標監控;也可以配置Service標籤,通過ServiceMonitor自訂指標監控。如果同時使用了兩種不同的配置方法,可能會導致資料來源被多次採集。

Pod Annotation

您可以在Deployment Pod Template中加入Annotation,以實現自訂監控。

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載>無狀態,按照控制台指引建立一個工作負載。

    下方以Deployment為例,介紹主要配置項。詳細資料,請參見使用鏡像建立無狀態應用

    1. 容器配置頁面,配置容器鏡像和所需資源,建立一個Web應用,暴露5000連接埠,然後單擊下一步

    2. 進階配置頁面,建立Service並添加Pod Annotation,完成後單擊建立

      • 建立Service。

        在服務(Service)地區,單擊建立,然後按頁面提示配置Service資訊。配置服務類型為負載平衡型服務,並設定連接埠映射

      • Pod註解地區,添加以下3個Annotation。

        • prometheus.io/scrape:設定為true,表示Prometheus將自動抓取(scrape)指標。

        • prometheus.io/port:本文設定為5000,表示Prometheus要抓取(scrape)的Endpoint連接埠為5000

        • prometheus.io/path:本文設定為/access,表示Prometheus要抓取(scrape)的Endpoint路徑為/access

  3. 配置自訂指標。

    1. 登入ARMS控制台

    2. 在左側導覽列,單擊接入管理

    3. 已接入環境頁簽,查看容器環境列表,單擊目標容器環境操作列的指標採集,進入指標採集頁面。

    4. 指標採集頁簽,通過添加ServiceMonitor、PodMonitor配置可觀測監控Prometheus版的採集規則。

      詳細資料,請參見管理容器環境自訂採集規則

    5. 配置完成後,在接入管理自監控頁簽下單擊Targets,查看自訂的指標是否配置成功,然後單擊Endpoint列的連結,增加訪問指標值。

      關於指標配置的更多資訊,請參見DATA MODEL

      image

  4. 自訂指標監控。

    接入管理指標探索頁簽,您可以通過選擇指標或者編寫PromQL查看、驗證您的監控資料。具體操作,請參見指標探索

  5. 接入管理自監控頁簽下單擊大盤監控,查看自訂指標的Grafana大盤。

Service標籤

通過ServiceMonitor方式自訂指標監控時,您部署應用時無需配置Pod Annotation,可以通過為Service對象添加標籤來實現。

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載>無狀態,按照控制台指引建立一個工作負載。

    下方以Deployment為例,介紹主要配置項。詳細資料,請參見使用鏡像建立無狀態應用

    1. 容器配置頁面,配置容器鏡像和所需資源,並建立一個Web應用,暴露5000連接埠,然後單擊下一步

    2. 進階配置頁面,單擊服務(Service)地區的建立,根據頁面提示建立Service。

      配置服務類型為負載平衡型服務,並設定連接埠映射,同時為Service添加標籤,例如Key為app,Value為custom-metrics-pindex。該標籤將用於ServiceMonitor的Selector。

  3. 配置自訂指標。使Prometheus獲得Service的Scrape Endpoint。

    1. 登入ARMS控制台

    2. 在左側導覽列,單擊接入管理

    3. 已接入環境頁簽,查看容器環境列表,單擊目標容器環境操作列的指標採集,進入指標採集頁面。

    4. 指標採集頁簽,單擊Service Monitor,進入Service Monitor配置頁面,然後單擊新增,根據頁面展示資訊建立ServiceMonitor,然後單擊建立

      關於配置自訂指標的更多操作,請參見管理Kubernetes叢集服務發現

      展開查看完整的樣本YAML

      apiVersion: monitoring.coreos.com/v1
      kind: ServiceMonitor
      metadata:
        # 填寫一個唯一名稱。
        name: custom-metrics-pindex
        # 填寫目標命名空間。
        namespace: default
      spec:
        endpoints:
        - interval: 30s
          # 填寫service.yaml中對應的Port的Name欄位的值。
          port: web
          # 填寫Service對應的Path的值。
          path: /access
        namespaceSelector:
          any: true
          # Nginx Demo的命名空間。
        selector:
          matchLabels:
            # 填寫service.yaml的Label欄位的值以定位目標service.yaml。
            app: custom-metrics-pindex
    5. 接入管理自監控頁簽下,單擊Targets頁簽,可見Prometheus已經獲得服務Scrape Endpoint。

      Scape Endpioint

      說明

      相較於Annotation的實現方式,通過ServiceMonitor定義自訂指標時,Label能夠展示Namespace和Service名稱。

  4. 單擊Endpoint列的連結,增加訪問指標值。

    關於指標配置的更多資訊,請參見DATA MODEL

    image

    image

  5. 自訂指標監控。

    接入管理指標探索頁簽,您可以通過選擇指標或者編寫PromQL查看、驗證您的監控資料。具體操作,請參見指標探索

  6. 接入管理自監控頁簽下單擊大盤監控,可觀察自訂指標的Grafana圖形。

常見問題

如何查看ack-arms-prometheus組件版本?

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > 組件管理

  3. 組件管理頁面,單擊日誌與監控頁簽,找到ack-arms-prometheus組件。

    在組件下方顯示目前的版本資訊,如有新版本需要升級,可單擊版本右側升級完成組件升級。

    說明

    當已安裝的組件版本不是最新版本時,才會顯示升級操作。

為什麼GPU監控無法部署?

說明

該問題僅非託管Prometheus會涉及。

如果您的GPU節點上存在汙點,可能導致GPU監控無法部署。您可以通過以下步驟查看GPU節點的汙點情況。

  1. 執行以下命令,查看目標GPU節點的汙點情況。

    如果您的GPU節點擁有自訂的汙點,可找到汙點相關的條目。本文以keytest-keyvaluetest-valueeffectNoSchedule為例說明:

    kubectl describe node cn-beijing.47.100.***.***

    預期輸出:

    Taints:test-key=test-value:NoSchedule
  2. 通過以下兩種方式處理GPU節點的汙點。

    • 執行以下命令,刪除GPU節點的汙點。

      kubectl taint node cn-beijing.47.100.***.*** test-key=test-value:NoSchedule-
    • 對GPU節點的汙點進行容忍度聲明,允許Pod調度到該汙點的節點上。

      # 1.執行以下命令,編輯ack-prometheus-gpu-exporter。
      kubectl edit daemonset -n arms-prom ack-prometheus-gpu-exporter
      
      # 2. 在YAML中添加如下欄位,聲明對汙點的容忍度。
      #省略其他欄位。
      #tolerations欄位添加在containers欄位上面,且與containers欄位同級。
      tolerations:
      - key: "test-key"
        operator: "Equal"
        value: "test-value"
        effect: "NoSchedule"
      containers:
       #省略其他欄位。

手動刪除資源或將導致重新安裝阿里雲Prometheus失敗,如何完整地手動刪除ARMS-Prometheus?

說明

該問題僅非託管Prometheus會涉及。

只刪除阿里雲Prometheus的命名空間,會導致資源刪除後有殘留配置,影響再次安裝。您可以執行以下操作,完整地手動刪除ARMS-Prometheus殘餘配置。

  • 刪除arms-prom命名空間。

    kubectl delete namespace arms-prom
  • 刪除ClusterRole。

    kubectl delete ClusterRole arms-kube-state-metrics
    kubectl delete ClusterRole arms-node-exporter
    kubectl delete ClusterRole arms-prom-ack-arms-prometheus-role
    kubectl delete ClusterRole arms-prometheus-oper3
    kubectl delete ClusterRole arms-prometheus-ack-arms-prometheus-role
    kubectl delete ClusterRole arms-pilot-prom-k8s
    kubectl delete ClusterRole gpu-prometheus-exporter
  • 刪除ClusterRoleBinding。

    kubectl delete ClusterRoleBinding arms-node-exporter
    kubectl delete ClusterRoleBinding arms-prom-ack-arms-prometheus-role-binding
    kubectl delete ClusterRoleBinding arms-prometheus-oper-bind2
    kubectl delete ClusterRoleBinding arms-kube-state-metrics
    kubectl delete ClusterRoleBinding arms-pilot-prom-k8s
    kubectl delete ClusterRoleBinding arms-prometheus-ack-arms-prometheus-role-binding
    kubectl delete ClusterRoleBinding gpu-prometheus-exporter
  • 刪除Role及RoleBinding。

    kubectl delete Role arms-pilot-prom-spec-ns-k8s
    kubectl delete Role arms-pilot-prom-spec-ns-k8s -n kube-system
    kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s
    kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s -n kube-system