報警配置功能提供容器場景報警能力的統一管理,包括容器服務異常事件報警,以及容器場景指標報警,支持在創建集群時默認開啟報警功能。容器服務的報警規則支持通過集群內部署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
如何接入報警配置功能
步驟一:開啟默認報警規則
可在註冊集群開啟對應報警規則。
- 在目標集群左側導航欄選擇運維管理 > 報警配置配置管理。
- 在報警規則管理頁籤,打開啟動狀態可開啟對應報警規則集。
步驟二:手動配置報警規則
可進行報警規則、聯繫人和聯繫人分組管理。
- 登錄容器服務管理控制檯。
- 在控制檯左側導航欄中,單擊集群。
- 在集群列表頁面中,單擊目標集群名稱或者目標集群右側操作列下的詳情。
- 在集群管理頁左側導航欄,選擇運維管理 > 報警配置。
功能特性 | 說明 |
報警規則管理 |
|
報警歷史 | 目前可查看最近發送的近100條歷史記錄。單擊對應報警報警規則類型的鏈接,可跳轉到對應監控系統中查看詳細規則配置;單擊對應報警排查現場的鏈接可快速定位到異常發生的資源頁面(異常事件、指標異常的資源)。 |
聯繫人管理 | 對聯繫人進行管理,可創建、編輯或刪除聯繫人。 |
聯繫人分組管理 | 對聯繫人分組進行管理,可創建、編輯或刪除聯繫人分組。當無聯繫人分組時,控制檯會從您的阿里雲賬號註冊信息中同步創建一個默認聯繫人分組。 |
- 在報警規則管理頁籤,單擊編輯聯繫人分組可設置關聯的聯繫人分組;打開啟動狀態可開啟對應報警規則集。
如何通過CRD配置報警規則
報警配置功能開啟時,會默認在kube-system Namespace下創建一個AckAlertRule類型的資源配置,包含默認報警規則模板。容器服務報警規則集可通過此資源配置在集群中。
- 登錄容器服務管理控制檯。
- 在控制檯左側導航欄中,單擊集群。
- 在集群列表頁面中,單擊目標集群名稱或者目標集群右側操作列下的詳情。
- 在集群管理頁左側導航欄,選擇運維管理 > 報警配置。
- 在報警規則管理頁籤中,單擊右上角編輯報警配置,可查看當前集群中的AckAlertRule資源配置,並可通過YAML文件修改。報警規則配置的YAML文件示例如下:
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 |