接入阿里雲Prometheus監控以全面採集ACK叢集的控制面、節點和應用指標,並通過可視化大盤和即時警示提升叢集效能管理效率。
快速選型
阿里雲Prometheus監控全面對接開源Prometheus生態,提供全託管的監控服務。無需關心底層資料存放區、資料展示、系統營運等問題。
Pro版(推薦):指標儲存周期90天,並提供全託管的採集器,生產級SLA達99.95%。提供可定製化的Grafana大盤,並預置了Container Service各組件的警示規則。
基礎版:指標儲存周期7天。需自我維護採集器,僅提供基礎的監控大盤。
開啟Prometheus監控
已有叢集中開啟
建立叢集時開啟
配置警示通知
為關鍵計量配置警示規則,發生異常時,會自動通過郵件、簡訊或DingTalk等渠道發送通知。
登入ARMS控制台,在左側導覽列選擇。
在通知對象頁面選擇通知方式,建立警示通知對象。
在ARMS控制台左側導覽列,選擇。
在Prometheus警示規則頁面,單擊建立Prometheus警示規則。
詳細規則配置,請參見配置Prometheus警示規則。
採集自訂監控指標
Prometheus監控支援多種方式採集自訂指標(例如請求QPS、處理延遲等),請參見管理容器環境自訂採集規則。
關閉Prometheus監控
在目的地組群詳情頁左側導覽列,單擊組件管理。
在組件管理頁面,單擊日誌與監控頁簽,找到ack-arms-prometheus組件。單擊卸載,然後在彈框中單擊確認。
計費說明
叢集規模監控費用:基礎版免費,Pro版根據叢集節點規模隨用隨付。
Prometheus執行個體費用:採集基礎指標,在預設情況下不收取費用。採集自訂指標,根據寫入量、上報量、儲存量及儲存周期等隨用隨付。
如需瞭解詳細的計費規則與定價,請參見容器監控計費。
預設採集的基礎指標
啟用Prometheus監控功能後,將自動採集容器監控基礎指標。詳細的基礎指標說明請參見指標說明。
容器基礎資源監控kubelet。
叢集應用狀態監控kube-state-metrics。
叢集節點基礎資源監控node-exporter。
叢集節點GPU監控ack-gpu-exporter。
託管版叢集控制面組件監控指標API Server、etcd、kube-scheduler、kube-controller-manager、cloud-controller-manager。
叢集CoreDNS基礎監控指標。
叢集Ingress-Controller基礎監控指標。
需啟用功能後自動上報的基礎指標:
常見問題
Prometheus監控頁面顯示未找到相關監控大盤
如開啟Prometheus監控後,在目的地組群詳情頁的頁面上,看到未找到相關監控大盤的提示,按照以下操作步驟解決。

重新安裝Prometheus監控組件。
重新安裝組件:
確認卸載完成後,單擊安裝,然後在彈框中單擊確認。
等待安裝完成後,返回到Prometheus監控頁面查看問題是否已解決。
如果問題仍未解決,請繼續以下操作。
檢查Prometheus執行個體接入。
在ARMS控制台左側導覽列,單擊接入管理。
在已接入環境頁簽,查看容器環境列表,確認是否存在與叢集名稱相同的容器環境。
沒有相應容器環境:參見通過ARMS或Prometheus控制台接入。
有相應容器環境:單擊目標容器環境操作列的探針設定,進入探針設定頁面。
檢查安裝探針是否正常運行。
如何調整指標儲存時間長度?
請參考調整指標儲存時間長度。
如何查看ack-arms-prometheus組件版本?
在ACK叢集列表頁面,單擊目的地組群名稱,在叢集詳情頁左側導覽列,單擊組件管理。
在組件管理頁面,單擊日誌與監控頁簽,找到ack-arms-prometheus組件。
在組件下方顯示目前的版本資訊,如有新版本需要升級,可單擊版本右側升級完成組件升級。
說明當已安裝的組件版本不是最新版本時,才會顯示升級操作。
為什麼GPU監控無法部署?
如GPU節點上存在汙點,可能導致GPU監控無法部署。可通過以下步驟查看GPU節點的汙點情況。
執行以下命令,查看目標GPU節點的汙點情況。
如GPU節點擁有自訂的汙點,可找到汙點相關的條目。本文以
key為test-key、value為test-value、effect為NoSchedule為例說明:kubectl describe node cn-beijing.47.100.***.***預期輸出:
Taints:test-key=test-value:NoSchedule通過以下兩種方式處理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: #省略其他欄位。
如何完整地手動刪除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
如何通過Helm方式卸載阿里雲Prometheus?
如通過Helm方式手動部署,或遇到環境、Helm版本問題導致的資源殘留,需通過此方式卸載。
在ACK叢集列表頁面,單擊目的地組群名稱,在叢集詳情頁左側導覽列,選擇。
在Helm頁面,定位arms-prometheus組件,然後單擊操作列的刪除,按照頁面提示勾選清除發布記錄並刪除應用。
安裝ack-arms-prometheus組件時報錯xxx in use
在ACK叢集列表頁面,單擊目的地組群名稱,在叢集詳情頁左側導覽列,選擇。
在Helm頁面,檢查是否存在ack-arms-prometheus。
存在:在Helm頁面刪除ack-arms-prometheus,並在組件管理頁面重新安裝ack-arms-prometheus。關於安裝ack-arms-prometheus的具體操作,請參見管理組件。
不存在:
若沒有ack-arms-prometheus,表明刪除ack-arms-prometheus Helm Release時有資源殘留,需完整地手動刪除ARMS-Prometheus。
提示Component Not Installed後繼續安裝ack-arms-prometheus組件,安裝失敗
檢查是否已經安裝ack-arms-prometheus組件。
在ACK叢集列表頁面,單擊目的地組群名稱,在叢集詳情頁左側導覽列,選擇。
在Helm頁面,檢查是否存在ack-arms-prometheus。
存在:在Helm頁面刪除ack-arms-prometheus,並在組件管理頁面重新安裝ack-arms-prometheus。關於安裝ack-arms-prometheus的具體操作,請參見管理組件。
不存在:
若沒有ack-arms-prometheus,表明刪除ack-arms-prometheus Helm Release時有資源殘留,需完整地手動刪除ARMS-Prometheus。
檢查ack-arms-prometheus的日誌是否有報錯。
在叢集詳情頁左側導覽列,選擇。
在無狀態頁面頂部設定命名空間為arms-prom,然後單擊arms-prometheus-ack-arms-prometheus。
單擊日誌頁簽,查看日誌中是否有報錯。
檢查Agent是否安裝報錯。
登入ARMS控制台。在左側導覽列,單擊接入管理。
在已接入環境頁簽,查看容器環境列表,單擊目標容器環境操作列的探針設定,進入探針設定頁面。
如何為ACK專有叢集進行監控策略授權?
在ACK叢集列表頁面,單擊目的地組群名稱,在叢集詳情頁左側導覽列,單擊叢集資訊。
在基本資料頁簽下,單擊Worker RAM 角色右側的KubernetesWorkerRole-***,然後在RAM角色頁面的許可權管理頁簽,單擊權限原則列下的k8sWorkerRole****。
在權限原則詳情頁面的策略內容頁簽下,單擊編輯策略內容。
在指令碼編輯框中的Statement欄位中增加以下授權規則,修改完成後單擊確定。
{ "Version": "1", "Statement": [ { "Action": [ "arms:Describe*", "arms:List*", "arms:Get*", "arms:Search*", "arms:Check*", "arms:Query*", "arms:ListEnvironments", "arms:DescribeAddonRelease", "arms:InstallAddon", "arms:DeleteAddonRelease", "arms:ListEnvironmentDashboards", "arms:ListAddonReleases", "arms:CreateEnvironment", "arms:UpdateEnvironment", "arms:InitEnvironment", "arms:DescribeEnvironment", "arms:InstallEnvironmentFeature", "arms:ListEnvironmentFeatures", "cms:CreateIntegrationPolicy", "cms:ListAddonReleases", "cms:UpdateAddonRelease", "cms:CreateAddonRelease", "cms:GetPrometheusInstance", "cms:ListIntegrationPolicyStorageRequirements" ], "Resource": "*", "Effect": "Allow" } ] }