報警配置功能提供容器場景報警能力的統一管理,包括容器服務異常事件報警,以及容器場景名額報警,支援在建立叢集時預設開啟報警功能。容器服務的報警規則支援通過叢集内部署CRD的方式配置管理。本文介紹如何接入報警配置功能及授予報警功能資源的通路權限。
功能使用場景
容器服務報警配置功能集合容器場景的監控報警能力,提供報警的統一配置管理,有如下幾個典型的使用場景:
- 叢集運維可以通過監控報警第一時間了解叢集管控、存儲、網絡、彈性擴縮容等異常事件。例如,可通過配置并檢視叢集異常事件報警規則集感覺叢集節點或容器節點通用異常;通過配置并檢視叢集存儲異常事件報警規則集感覺叢集存儲的變更與異常;通過配置并檢視叢集網絡異常事件報警規則集感覺叢集網絡的變更與異常;通過配置并檢視叢集管控運維異常報警規則集感覺叢集管控的變更與異常等。
- 應用開發可以通過監控報警第一時間了解在叢集中運作應用的異常事件、名額是否異常。例如,叢集容器副本異常或者應用Deployment的CPU、記憶體水位名額是否超過門檻值等。可通過開啟報警配置功能中的預設報警規則模闆,即可快速接受叢集内應用容器副本的異常事件報警通知。例如,通過配置并訂閱關注叢集容器副本異常報警規則集感覺所屬應用的Pod是否異常。
- 應用管理關注運作在叢集上的應用健康、容量規劃、叢集運作穩定性及異常甚至是錯誤報警等貫穿應用生命周期的一系列問題。例如,通過配置并訂閱關注叢集重要事件報警規則集感覺叢集内所有Warning、Error等異常報警;關注叢集資源異常報警規則集感覺叢集的資源情況,進而更好地做容量規劃等。
- 多叢集管理當您有多個叢集需要管理,為叢集配置報警規則往往會是一個重複繁瑣且難以同步的操作。容器服務報警配置功能,支援通過叢集内部署CRD配置的方式管理報警規則。可通過維護多個叢集中同樣配置的CRD資源,來友善快捷地實作多叢集中報警規則的同步配置。
前提條件
- 您需要建立一個注冊叢集,并将自建Kubernetes叢集接入注冊叢集。具體操作,請參見 建立阿裡雲注冊叢集并接入自建Kubernetes叢集 。
步驟一:在自建叢集中配置報警元件RAM權限
在注冊叢集中安裝元件前,您需要在接入叢集中設定AK用來通路雲服務的權限。設定AK前,您需要建立RAM使用者并為其添加通路相關雲資源的權限。
{
"Action": [
"log:*",
"arms:*",
"cs:UpdateContactGroup"
],
"Resource": [
"*"
],
"Effect": "Allow"
}
- 為RAM使用者添權重限。有關如何為RAM使用者授權的具體步驟,請參見 為RAM使用者授權
- 為RAM使用者建立AK。有關如何為子賬戶建立AK,請參見 擷取AccessKey
- 使用AK在自建Kubernetes叢集中建立名為alibaba-addon-secret的Secret資源,步驟二中安裝事件中心相關元件時将自動引用此AK通路對應的雲服務資源。
kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=<your access key id>' --from-literal='access-key-secret=<your access key secret>'
您需要将上述代碼中和替換為您擷取的AK資訊。
步驟二:元件安裝與更新
控制台會自動檢測報警配置環境是否符合要求,并會引導進行開通或安裝、更新元件。
- 登入 容器服務管理控制台
- 在控制台左側導航欄中,單擊叢集。
- 在叢集清單頁面中,單擊目标叢集名稱或者目标叢集右側操作列下的詳情。
- 在叢集管理頁左側導航欄,選擇運維管理 > 報警配置。
- 在報警配置頁面控制台會自動檢查以下條件。若不符合條件,請按以下提示完成操作。
-
- 已開通SLS日志服務雲産品。當您首次使用日志服務時,需要登入 日志服務控制台 ,根據頁面提示開通日志服務。
- 已安裝事件中心。具體操作,請參見 事件監控
- 叢集托管元件alicloud-monitor-controller更新到最新版本。更多資訊,請參見 alicloud-monitor-controller
自建Kubernetes叢集如何接入事件通知告警
如何接入報警配置功能
步驟一:開啟預設報警規則
可在注冊叢集開啟對應報警規則。
- 在目标叢集左側導航欄選擇運維管理 > 報警配置配置管理。
- 在報警規則管理頁簽,打開啟動狀态可開啟對應報警規則集。
步驟二:手動配置報警規則
可進行報警規則、聯系人和聯系人分組管理。
功能特性 | 說明 |
報警規則管理 |
|
報警曆史 | 目前可檢視最近發送的近100條曆史記錄。單擊對應報警報警規則類型的連結,可跳轉到對應監控系統中檢視詳細規則配置;單擊對應報警排查現場的連結可快速定位到異常發生的資源頁面(異常事件、名額異常的資源)。 |
聯系人管理 | 對聯系人進行管理,可建立、編輯或删除聯系人。 |
聯系人分組管理 | 對聯系人分組進行管理,可建立、編輯或删除聯系人分組。當無聯系人分組時,控制台會從您的阿裡雲賬号注冊資訊中同步建立一個預設聯系人分組。 |
- 在報警規則管理頁簽,單擊編輯聯系人分組可設定關聯的聯系人分組;打開啟動狀态可開啟對應報警規則集。
報警配置功能開啟時,會預設在kube-system Namespace下建立一個AckAlertRule類型的資源配置,包含預設報警規則模闆。容器服務報警規則集可通過此資源配置在叢集中。
apiVersion: alert.alibabacloud.com/v1beta1
kind: AckAlertRule
metadata:
name: default
spec:
groups:
- name: pod-exceptions ## 報警規則集名。
rules:
- name: pod-oom ## 報警規則名。
type: event ## 報警規則類型,枚舉值為event(事件類型)、metric(名額類型)。
expression: sls.app.ack.pod.oom ## 報警規則表達式,當規則類型為event時,表達式的值為SLS日志服務事件報警sls_event_id。
enable: enable ## 報警規則開啟狀态,枚舉值為enable、disable。
- name: pod-failed
type: event
expression: sls.app.ack.pod.failed
enable: enable
在以下情況下ACK會預設建立相應報警規則:
- 開啟預設報警規則功能。
- 未開啟預設報警規則,首次進入報警規則頁面。
預設建立的報警規則如下表所示。
規則集類型 | 規則名 | ACK_CR_Rule_Name | SLS_Event_ID |
critical-events叢集重要事件報警規則集 | 叢集error事件 | error-event | sls.app.ack.error |
叢集warning事件 | warn-event | sls.app.ack.warn | |
cluster-error叢集異常事件報警規則集 | 叢集節點docker程序異常 | docker-hang | sls.app.ack.docker.hang |
叢集驅逐事件 | eviction-event | sls.app.ack.eviction | |
叢集GPU的XID錯誤事件 | gpu-xid-error | sls.app.ack.gpu.xid_error | |
叢集節點重新開機 | node-restart | sls.app.ack.node.restart | |
叢集節點時間服務異常 | node-ntp-down | sls.app.ack.ntp.down | |
叢集節點PLEG異常 | node-pleg-error | sls.app.ack.node.pleg_error | |
叢集節點程序異常 | ps-hang | sls.app.ack.ps.hang | |
res-exceptions叢集資源異常報警規則集 | 叢集節點檔案句柄過多 | node-fd-pressure | sls.app.ack.node.fd_pressure |
叢集節點磁盤空間不足 | node-disk-pressure | sls.app.ack.node.disk_pressure | |
叢集節點程序數過多 | node-pid-pressure | sls.app.ack.node.pid_pressure | |
叢集節點排程資源不足 | node-res-insufficient | sls.app.ack.resource.insufficient | |
叢集節點IP資源不足 | node-ip-pressure | sls.app.ack.ip.not_enough | |
pod-exceptions叢集容器副本異常報警規則集 | 叢集容器副本OOM | pod-oom | sls.app.ack.pod.oom |
叢集容器副本啟動失敗 | pod-failed | sls.app.ack.pod.failed | |
叢集鏡像拉取失敗事件 | image-pull-back-off | sls.app.ack.image.pull_back_off | |
cluster-ops-err叢集管控運維異常報警規則集 | 無可用LoadBalancer | slb-no-ava | sls.app.ack.ccm.no_ava_slb |
同步LoadBalancer失敗 | slb-sync-err | sls.app.ack.ccm.sync_slb_failed | |
删除LoadBalancer失敗 | slb-del-err | sls.app.ack.ccm.del_slb_failed | |
删除節點失敗 | node-del-err | sls.app.ack.ccm.del_node_failed | |
添加節點失敗 | node-add-err | sls.app.ack.ccm.add_node_failed | |
建立VPC網絡路由失敗 | route-create-err | sls.app.ack.ccm.create_route_failed | |
同步VPC網絡路由失敗 | route-sync-err | sls.app.ack.ccm.sync_route_failed | |
安全巡檢發現高危風險配置 | si-c-a-risk | sls.app.ack.si.config_audit_high_risk | |
托管節點池指令執行失敗 | nlc-run-cmd-err | sls.app.ack.nlc.run_command_fail | |
托管節點池未提供任務的具體指令 | nlc-empty-cmd | sls.app.ack.nlc.empty_task_cmd | |
托管節點池出現未實作的任務模式 | nlc-url-m-unimp | sls.app.ack.nlc.url_mode_unimpl | |
托管節點池發生未知的修複操作 | nlc-opt-no-found | sls.app.ack.nlc.op_not_found | |
托管節點池銷毀節點發生錯誤 | nlc-des-node-err | sls.app.ack.nlc.destroy_node_fail | |
托管節點池節點排水失敗 | nlc-drain-node-err | sls.app.ack.nlc.drain_node_fail | |
托管節點池重新開機ECS未達到終态 | nlc-restart-ecs-wait | sls.app.ack.nlc.restart_ecs_wait_fail | |
托管節點池重新開機ECS失敗 | nlc-restart-ecs-err | sls.app.ack.nlc.restart_ecs_fail | |
托管節點池重置ECS失敗 | nlc-reset-ecs-err | sls.app.ack.nlc.reset_ecs_fail | |
托管節點池自愈任務失敗 | nlc-sel-repair-err | sls.app.ack.nlc.repair_fail | |
cluster-network-err叢集網絡異常事件報警規則集 | Terway資源無效 | terway-invalid-res | sls.app.ack.terway.invalid_resource |
Terway配置設定IP失敗 | terway-alloc-ip-err | sls.app.ack.terway.alloc_ip_fail | |
解析ingress帶寬配置失敗 | terway-parse-err | sls.app.ack.terway.parse_fail | |
Terway配置設定網絡資源失敗 | terway-alloc-res-err | sls.app.ack.terway.allocate_failure | |
Terway回收網絡資源失敗 | terway-dispose-err | sls.app.ack.terway.dispose_failure | |
Terway虛拟模式變更 | terway-virt-mod-err | sls.app.ack.terway.virtual_mode_change | |
Terway觸發PodIP配置檢查 | terway-ip-check | sls.app.ack.terway.config_check | |
Ingress重載配置失敗 | ingress-reload-err | sls.app.ack.ingress.err_reload_nginx | |
cluster-storage-err叢集存儲異常事件報警規則集 | 雲盤容量少于20Gi限制 | csi_invalid_size | sls.app.ack.csi.invalid_disk_size |
容器資料卷暫不支援包年包月類型雲盤 | csi_not_portable | sls.app.ack.csi.disk_not_portable | |
挂載點正在被程序占用,解除安裝挂載點失敗 | csi_device_busy | sls.app.ack.csi.deivce_busy | |
無可用雲盤 | csi_no_ava_disk | sls.app.ack.csi.no_ava_disk | |
雲盤IOHang | csi_disk_iohang | sls.app.ack.csi.disk_iohang | |
磁盤綁定的PVC發生slowIO | csi_latency_high | sls.app.ack.csi.latency_too_high | |
磁盤容量超過水位門檻值 | disk_space_press | sls.app.ack.csi.no_enough_disk_space |