全部產品
Search
文件中心

Container Service for Kubernetes:通過阿里雲Prometheus監控ACK Edge叢集

更新時間:Oct 10, 2025

可通過阿里雲Prometheus監控查看ACK Edge叢集預先配置的監控大盤和監控效能指標。本文介紹如何在ACK Edge叢集中接入阿里雲Prometheus監控。

前提條件

  • 建立ACK Edge叢集,且版本為1.18.8-aliyunedge.1及以上。

  • 確保ACK Edge叢集已安裝的ack-arms-prometheus版本為1.1.4及以上,如不滿足,請及時升級ack-arms-prometheus版本

  • 如果叢集版本小於1.26,需要檢查確保叢集kube-system/edge-tunnel-server-cfg的ConfigMap中,已經對Node Exporter的連接埠9100、GPU Exporter的連接埠9445開啟了轉寄配置,具體配置資訊如下:

    http-proxy-ports: 9445
    https-proxy-ports: 9100

阿里雲Prometheus監控介紹

阿里雲Prometheus監控全面對接開源Prometheus生態,支援類型豐富的組件監控,提供多種開箱即用的預置監控大盤,且提供全面託管的Prometheus服務。藉助阿里雲Prometheus監控,無需自行搭建Prometheus監控系統,無需關心底層資料存放區、資料展示、系統營運等問題。

ACK Edge叢集支援使用容器監控基礎版。

查看阿里雲Prometheus Grafana大盤

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

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

    說明

    僅首次登入時,需要根據頁面提示,單擊安裝組件下面的開始安裝,控制台會自動安裝組件並檢查監控大盤。安裝完成後跳轉到Prometheus監控詳情頁面。

    Prometheus監控頁面,可通過內建的監控大盤,例如節點監控、應用監控、GPU監控分別查看到叢集中節點、應用及GPU的監控資料。

配置Prometheus監控警示

為監控任務建立警示可在滿足警示條件時通過電話、郵件、簡訊、DingTalk、企業微信和Webhook等渠道即時警示,主動協助發現異常。警示規則被觸發時會向指定的連絡人分組發送通知,而在建立連絡人分組之前必須先建立連絡人。建立連絡人時,可指定連絡人用於接收通知的手機號和郵箱地址;也可以在通知策略中指定對應的接收群用於接收警示,便於及時對警示進行管理。

步驟一:建立連絡人

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

  2. 連絡人頁簽單擊建立連絡人

  3. 建立連絡人對話方塊中配置參數後,單擊確認

    參數

    說明

    姓名

    自訂連絡人姓名。

    手機號

    設定連絡人的手機號後,可以通過電話和簡訊的方式接收警示通知。

    說明

    僅驗證過的手機號可以在通知策略中使用電話的通知方式,驗證手機號的操作,請參見驗證手機號

    郵箱

    設定連絡人的郵箱地址後,可以通過郵箱接收警示通知。

    重要

    最多可添加100個連絡人。

步驟二:建立Prometheus警示規則

通過靜態閾值建立Prometheus警示規則

靜態閾值檢查類型提供了系統預設的警示指標,通過選擇已有的警示指標,可通過語義化的方式快速建立對應指標項的警示規則。

  1. 登入ARMS控制台

  2. 在左側導覽列,選擇Prometheus監控 > Prometheus警示規則

  3. Prometheus警示規則頁面,單擊建立Prometheus警示規則

  4. 建立Prometheus警示規則版面設定如下警示參數,設定完成後單擊儲存

    參數

    說明

    樣本

    警示名稱

    警示的名稱。

    生產叢集-容器CPU使用率警示

    檢測類型

    選擇靜態閾值

    靜態閾值

    Prometheus執行個體

    選擇需要建立警示的Prometheus執行個體。

    生產叢集

    警示分組

    選擇警示分組。

    不同Prometheus類型支援的警示分組不同,警示分組備選項會隨著選擇的Prometheus執行個體類型的不同產生變化。

    Kubernetes負載

    警示指標

    選擇想要配置警示的指標,每個警示分組對應不同的指標。

    容器CPU使用率

    警示條件

    基於警示指標預置內容設定警示事件產生條件。

    當容器CPU使用率大於80%時,滿足警示條件。

    篩選條件

    根據警示指標,設定當前配置的警示規則適用的範圍,即所有符合篩選條件的資源滿足此條警示規則時,均會產生警示事件。

    可選篩選條件包括:

    • 遍曆:警示規則適用於當前Prometheus執行個體下的所有資源。篩選條件預設為遍曆。

    • 等於:選擇該條件後,需要繼續輸入具體資源名稱。所建立的警示規則將僅適用於對應資源。不支援同時填寫多個資源。

    • 不等於:選擇該條件後,需要繼續輸入具體資源名稱。所建立的警示規則將適用於除該資源之外的其他資源。不支援同時填寫多個資源。

    • 正則匹配:選擇該條件後,按需輸入Regex匹配相應的資源名稱。所建立的警示規則將適用於符合該Regex的所有資源。

    • 正則不匹配:選擇該條件後,按需輸入Regex匹配相應的資源名稱。所建立的警示規則將過濾符合該Regex的所有資源。

    說明
    • 完成篩選條件設定後,會彈出資料預覽地區。

    • 請將篩選條件字元限制在300個字元以內。

    遍曆

    資料預覽

    資料預覽地區展示警示條件對應的PromQL語句,並以時序曲線的形式展示當前警示規則配置的監控指標的值。

    預設僅展示一個資源的即時值,您可以在該地區的篩選框中選擇目標資源以及時間區間來查看不同時間區間和不同資源的值。

    說明
    • 警示閾值將會以一條紅色直線的形式顯示在時序曲線中,滿足警示閾值的時序曲線顯示為深紅色,不滿足警示閾值的時序曲線顯示為藍色。

    • 將滑鼠懸浮於時序曲線上,可以查看對應時間點的資源詳情。

    • 在時序曲線上選中一段時間,可以查看對應時間段的時序曲線。

    期間

    • 當警示條件滿足時,直接產生警示事件:任何一個資料點滿足閾值,就會產生警示事件。

    • 當警示條件滿足持續N分鐘時,才產生警示事件:即只有當滿足閾值的時間大於等於N分鐘時,才產生警示事件。

    1

    警示等級

    自訂警示等級。預設警示等級為預設,警示嚴重程度從預設、P4、P3、P2、P1逐級上升。

    預設

    警示內容

    使用者收到的警示資訊。您可以使用Go template文法在警示內容中自訂警示參數變數。

    命名空間:{{$labels.namespace}} / Pod: {{$labels.pod_name}} / 容器:{{$labels.container}} CPU使用率{{$labels.metrics_params_opt_label_value}} {{$labels.metrics_params_value}}%, 當前值{{ printf "%.2f" $value }}%

    警示通知

    • 極簡模式:可以設定通知對象、通知時段重複策略

    • 普通模式

      • 不指定通知策略:若選擇此選項,當完成建立警示規則後,您可以在通知策略頁面建立通知策略並指定匹配規則和匹配條件(如警示規則名稱等)來匹配該警示規則。當該警示規則被觸發產生警示事件後,警示資訊會被發送給通知策略中指定的連絡人或連絡人群組。更多資訊,請參見通知策略

      • 指定某個通知策略:若選擇此項,ARMS會自動在對應的通知策略添加一條匹配規則,匹配規則內容為警示規則ID(以警示規則名稱的方式呈現),以確保當前警示規則產生的警示事件一定可以被選擇的通知策略匹配到。

      重要

      快速指定通知策略只能保證當前警示規則產生的警示事件一定能夠被所選的通知策略匹配到並且產生對應的警示。但是,當前警示規則產生的事件同時也可能被其它設定了模糊比對的通知策略匹配到並且產生警示。警示規則產生的警示事件和通知策略之間是多對多的匹配關係。

    不指定通知規則

    進階設定

    警示檢查周期

    指警示規則每隔N分鐘進行一次檢查,判斷資料是否滿足警示條件。預設1分鐘,最少設定1分鐘。

    1

    資料完整後再檢查

    標籤

    設定警示標籤,設定的標籤可用作通知策略匹配規則的選項。

    注釋

    設定警示的注釋。

通過自訂PromQL建立Prometheus警示規則

如果需要對靜態閾值中系統預設指標之外的指標進行監控,可使用自訂PromQL檢測類型來建立警示規則。

建立Prometheus警示規則版面設定以下警示參數,設定完成後單擊儲存

參數

說明

樣本

警示名稱

警示的名稱。

Pod的CPU使用率大於8%

檢測類型

設定為自訂PromQL

自訂PromQL

Prometheus執行個體

選擇需要建立警示的Prometheus執行個體。

參考警示分組

選擇警示分組。

不同Prometheus類型支援的警示分組不同,警示分組備選項會隨著選擇的Prometheus執行個體類型的不同產生變化。

Kubernetes負載

參考警示指標

可選。參考指標中包括了常見指標的自訂PromQL配置方法,您可以選擇已有的類似指標來進行填充,然後參考對應指標的配置方式進行修改以完成警示配置。

參考指標參數會根據選擇的Prometheus執行個體類型自動過濾支援的警示指標。

Pod磁碟使用率警示

自訂PromQL語句

使用PromQL語句設定警示規則運算式。

命名空間:{{$labels.namespace}}/Pod: {{$labels.pod_name}}/磁碟裝置:{{$labels.device}} 使用率超過90%,當前值{{ printf "%.2f" $value }}%max(container_fs_usage_bytes{pod!="", namespace!="arms-prom",namespace!="monitoring"}) by (pod_name, namespace, device)/max(container_fs_limit_bytes{pod!=""}) by (pod_name,namespace, device) * 100 > 90

資料預覽

資料預覽地區展示警示條件對應的PromQL語句,並以時序曲線的形式展示當前警示規則配置的監控指標的值。

預設僅展示一個資源的即時值,您可以在該地區的篩選框中選擇目標資源以及時間區間來查看不同時間區間和不同資源的值。

說明
  • 將滑鼠懸浮於時序曲線上,可以查看對應時間點的資源詳情。

  • 在時序曲線上選中一段時間,可以查看對應時間段的時序曲線。

期間

  • 當警示條件滿足時,直接產生警示事件:任何一個資料點滿足閾值,就會產生警示事件。

  • 當警示條件滿足持續N分鐘時,才產生警示事件:即只有當滿足閾值的時間大於等於N分鐘時,才產生警示事件。

1

警示等級

自訂警示等級。預設警示等級為預設,警示嚴重程度從預設、P4、P3、P2、P1逐級上升。

預設

警示內容

使用者收到的警示資訊。您可以使用Go template文法在警示內容中自訂警示參數變數。

命名空間:{{$labels.namespace}}/Pod: {{$labels.pod_name}}/磁碟裝置:{{$labels.device}} 使用率超過90%,當前值{{ printf "%.2f" $value }}%

警示通知

  • 極簡模式:可以設定通知對象、通知時段重複策略

  • 普通模式

    • 不指定通知策略:若選擇此選項,當完成建立警示規則後,您可以在通知策略頁面建立通知策略並指定匹配規則和匹配條件(如警示規則名稱等)來匹配該警示規則。當該警示規則被觸發產生警示事件後,警示資訊會被發送給通知策略中指定的連絡人或連絡人群組。更多資訊,請參見通知策略

    • 指定某個通知策略:若選擇此項,ARMS會自動在對應的通知策略添加一條匹配規則,匹配規則內容為警示規則ID(以警示規則名稱的方式呈現),以確保當前警示規則產生的警示事件一定可以被選擇的通知策略匹配到。

    重要

    快速指定通知策略只能保證當前警示規則產生的警示事件一定能夠被所選的通知策略匹配到並且產生對應的警示。但是,當前警示規則產生的事件同時也可能被其它設定了模糊比對的通知策略匹配到並且產生警示。警示規則產生的警示事件和通知策略之間是多對多的匹配關係。

不指定通知規則

進階設定

警示檢查周期

指警示規則每隔N分鐘進行一次檢查,判斷資料是否滿足警示條件。預設1分鐘,最少設定1分鐘。

1

資料完整後再檢查

標籤

設定警示標籤,設定的標籤可用作通知策略匹配規則的選項。

注釋

設定警示的注釋。

常見問題

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

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

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

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

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

    說明

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

ACK Edge叢集如何?監控資料的擷取?

在邊緣計算情境中,邊緣節點處在相對封閉的線下IDC環境中,雲上VPC和邊緣側處於不同的網路平面內。部署在雲上的Prometheus Agent無法直接通過Endpoint訪問到邊緣側的Node Exporter、GPU Exporter,從而擷取相應的監控指標。從ack-arms-prometheus 1.1.4版本開始,藉助ACK Edge叢集內建的雲邊營運通訊組件Tunnel,ack-arms-prometheus可以自動打通雲邊之間的監控資料擷取鏈路。

為什麼GPU監控無法部署?

如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的命名空間,會導致資源刪除後有殘留配置,影響再次安裝。可執行以下操作,完整地手動刪除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
    kubectl delete ClusterRole o11y:addon-controller:role
    kubectl delete ClusterRole arms-aliyunserviceroleforarms-clusterrole
  • 刪除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
    kubectl delete ClusterRoleBinding o11y:addon-controller:rolebinding
    kubectl delete ClusterRoleBinding arms-kube-state-metrics-agent
    kubectl delete ClusterRoleBinding arms-node-exporter-agent
    kubectl delete ClusterRoleBinding arms-aliyunserviceroleforarms-clusterrolebinding
  • 刪除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

手動刪除ARMS-Prometheus資源後,請在Container Service管理主控台營運管理>組件管理中,重新安裝ack-arms-prometheus組件。