您可以在ACK叢集中快速啟用阿里雲Prometheus,以即時監控叢集和容器的健康情況,並查看可視化的Grafana監控資料大盤。您還可按需配置連絡人接收監控警示、配置Prometheus抓取自訂的監控指標等。
阿里雲Prometheus監控介紹
阿里雲Prometheus監控全面對接開源Prometheus生態,支援類型豐富的組件監控,提供多種開箱即用的預置監控大盤,且提供全面託管的Prometheus服務。藉助阿里雲Prometheus監控,您無需自行搭建Prometheus監控系統,無需關心底層資料存放區、資料展示、系統營運等問題。
阿里雲Prometheus服務提供的容器監控能力分為基礎版和Pro版。相較於容器叢集監控基礎版,容器叢集監控Pro版提供豐富的Grafana監控大盤、提供Container Service各組件的預設警示規則、額外提供Remote Write和資料投遞能力(通過EventBridge)等。關於容器叢集監控Pro版的更多優勢,請參見基礎版與Pro版區別。
相關計費
阿里雲Prometheus基礎指標費用
啟用阿里雲Prometheus監控功能後,ACK將採集叢集中的容器監控指標。預設採集的指標均為阿里雲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的計費說明,請參見計費說明。
阿里雲Grafana費用
啟用阿里雲Prometheus監控功能後,預設使用免費的共用版Grafana展示上報的監控資料。關於Grafana的計費說明,請參見計費規則。
步驟一:開啟阿里雲Prometheus監控
建立叢集時開啟
在已有叢集中開啟
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在Prometheus 監控頁面,按照頁面提示完成相關組件的安裝和監控大盤的檢查。
控制台會自動安裝組件、檢查監控大盤。安裝完成後,您可以單擊各個頁簽查看相應監控資料。
步驟二:查看阿里雲Prometheus Grafana大盤
在Container Service管理主控台的Prometheus 監控頁面,切換頁簽選擇需要查看的Grafana監控大盤,擷取相應的監控資料。
(可選)步驟三:配置Prometheus監控警示
為監控任務建立警示可在滿足警示條件時通過郵件、簡訊、DingTalk等渠道即時警示,主動協助您發現異常。警示規則被觸發時,系統會向您指定的警示通知對象發送通知。
1、建立通知對象
2、配置警示規則
登入ARMS控制台。在左側導覽列選擇 ,進入可觀測監控 Prometheus 版的執行個體列表頁面。
在頁面頂部選擇目標ACK叢集所在的地區,然後單擊目標執行個體名稱進入對應執行個體頁面。
在左側導覽列,單擊警示規則,在警示規則列表為目標式通知對象配置警示規則。
具體操作,請參見建立Prometheus警示規則。
(可選)步驟四:自訂Prometheus監控指標並通過Grafana展示
您可以配置Pod Annotation,使用預設服務發現自訂指標監控;也可以配置Service標籤,通過ServiceMonitor自訂指標監控。如果同時使用了兩種不同的配置方法,可能會導致資料來源被多次採集。
Pod Annotation:當您為Pod添加特定的Annotation時,阿里雲Prometheus監控可以自動探索這些Pod並開始採集它們暴露的指標。
Service標籤:定義一個
Service
對象,並為其添加特殊的標籤,然後建立一個ServiceMonitor
資源來指定如何監控這個Service
背後的所有Pod。
Pod Annotation
您可以在Deployment Pod Template中加入Annotation,以實現自訂監控。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載>無狀態,按照控制台指引建立一個工作負載。
下方以Deployment為例,介紹主要配置項。詳細資料,請參見建立無狀態工作負載Deployment。
在容器配置頁面,配置容器鏡像和所需資源,建立一個Web應用,暴露5000連接埠,然後單擊下一步。
在進階配置頁面,建立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
。
配置自訂指標。
登入ARMS控制台。
在左側導覽列,單擊接入管理。
在已接入環境頁簽,查看容器環境列表,單擊目標容器環境操作列的指標採集,進入指標採集頁面。
在指標採集頁簽,通過添加ServiceMonitor、PodMonitor配置可觀測監控Prometheus版的採集規則。
詳細資料,請參見管理容器環境自訂採集規則。
配置完成後,在接入管理的自監控頁簽下單擊Targets,查看自訂的指標是否配置成功,然後單擊Endpoint列的連結,增加訪問指標值。
關於指標配置的更多資訊,請參見DATA MODEL。
自訂指標監控。
在接入管理的指標探索頁簽,您可以通過選擇指標或者編寫PromQL查看、驗證您的監控資料。具體操作,請參見指標探索。
在接入管理的自監控頁簽下單擊大盤監控,查看自訂指標的Grafana大盤。
Service標籤
通過ServiceMonitor方式自訂指標監控時,您部署應用時無需配置Pod Annotation,可以通過為Service對象添加標籤來實現。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載>無狀態,按照控制台指引建立一個工作負載。
下方以Deployment為例,介紹主要配置項。詳細資料,請參見建立無狀態工作負載Deployment。
在容器配置頁面,配置容器鏡像和所需資源,並建立一個Web應用,暴露5000連接埠,然後單擊下一步。
在進階配置頁面,單擊服務(Service)地區的建立,根據頁面提示建立Service。
配置服務類型為負載平衡型服務,並設定連接埠映射,同時為Service添加標籤,例如Key為
app
,Value為custom-metrics-pindex
。該標籤將用於ServiceMonitor的Selector。
配置自訂指標。使Prometheus獲得Service的Scrape Endpoint。
登入ARMS控制台。
在左側導覽列,單擊接入管理。
在已接入環境頁簽,查看容器環境列表,單擊目標容器環境操作列的指標採集,進入指標採集頁面。
在指標採集頁簽,單擊Service Monitor,進入Service Monitor配置頁面,然後單擊新增,根據頁面展示資訊建立ServiceMonitor,然後單擊建立。
關於配置自訂指標的更多操作,請參見管理Kubernetes叢集服務發現。
在接入管理的自監控頁簽下,單擊Targets頁簽,可見Prometheus已經獲得服務Scrape Endpoint。
說明相較於Annotation的實現方式,通過ServiceMonitor定義自定指標時,Label能夠展示Namespace和Service名稱。
單擊Endpoint列的連結,增加訪問指標值。
關於指標配置的更多資訊,請參見DATA MODEL。
自訂指標監控。
在接入管理的指標探索頁簽,您可以通過選擇指標或者編寫PromQL查看、驗證您的監控資料。具體操作,請參見指標探索。
在接入管理的自監控頁簽下單擊大盤監控,可觀察自訂指標的Grafana圖形。
常見問題
如何查看ack-arms-prometheus組件版本?
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在組件管理頁面,單擊日誌與監控頁簽,找到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: #省略其他欄位。
手動刪除資源或將導致重新安裝阿里雲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
刪除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
手動刪除ARMS-Prometheus資源後,請在Container Service管理主控台的營運管理>組件管理中,重新安裝ack-arms-prometheus組件。
安裝ack-arms-prometheus組件時報錯xxx in use
登入Container Service管理主控台,在左側導覽列單擊叢集。
在叢集列表頁面中,單擊目的地組群名稱或者目的地組群右側操作列下的詳情。
在叢集管理頁面左側導覽列選擇
,檢查是否存在ack-arms-prometheus。存在:在Helm頁面刪除ack-arms-prometheus,並在組件管理頁面重新安裝ack-arms-prometheus。關於安裝ack-arms-prometheus的具體操作,請參見管理組件。:
不存在:
若沒有ack-arms-prometheus,表明刪除ack-arms-prometheus helm有資源殘留,需要手動清理。關於刪除ack-arms-prometheus殘留資源的具體操作,請參見阿里雲Prometheus監控常見問題。
在組件管理頁面安裝ack-arms-prometheus。關於安裝ack-arms-prometheus的具體操作,請參見管理組件。
執行以上步驟,如果仍無法安裝ack-arms-prometheus,請提交工單。
提示Component Not Installed後繼續安裝ack-arms-prometheus組件,安裝失敗
檢查是否已經安裝ack-arms-prometheus組件。
登入Container Service管理主控台,在左側導覽列單擊叢集。
在叢集列表頁面中,單擊目的地組群名稱或者目的地組群右側操作列下的詳情。
在叢集管理頁面左側導覽列選擇應用>Helm。
在Helm頁面檢查是否存在ack-arms-prometheus組件。
若Helm頁面已有ack-arms-prometheus,您需要在Helm頁面刪除ack-arms-prometheus,並在組件管理頁面重新安裝ack-arms-prometheus。關於安裝ack-arms-prometheus的具體操作,請參見管理組件。
若Helm頁面沒有ack-arms-prometheus組件,您需要進行以下操作:
若沒有ack-arms-prometheus,說明刪除ack-arms-prometheus helm有資源殘留,需要手動清理。關於刪除ack-arms-prometheus殘留資源的具體操作,請參見阿里雲Prometheus監控常見問題。
在組件管理頁面安裝ack-arms-prometheus。關於安裝ack-arms-prometheus的具體操作,請參見管理組件。
執行以上步驟,仍無法安裝ack-arms-prometheus,請提交工單。
檢查ack-arms-prometheus的日誌是否有報錯。
登入Container Service管理主控台,在左側導覽列單擊叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇
。在無狀態頁面頂部設定命名空間為arms-prom,然後單擊arms-prometheus-ack-arms-prometheus。
單擊日誌頁簽,查看日誌中是否有報錯。
若日誌中出現報錯,請提交工單。
檢查Agent是否安裝報錯。