报警配置功能提供容器场景报警能力的统一管理,包括容器服务异常事件报警,以及容器场景指标报警,支持在创建集群时默认开启报警功能。容器服务的报警规则支持通过集群内部署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 |