通过开启容器服务报警管理功能,您可以统一管理容器的报警,包括容器服务异常事件报警、集群相关基础资源的关键指标报警、集群核心组件及集群中应用的指标报警等。您还可以通过CRD方式修改集群中默认创建的报警规则,及时感知集群中异常变化。
功能介绍
集群异常事件报警,此类报警的数据链路同步自容器服务事件中心。需同时开启日志服务事件中心和Prometheus监控服务功能,请参见事件监控、使用阿里云Prometheus监控。
集群相关基础资源的关键指标报警,此类报警的数据链路同步自云监控基础资源监控。更多信息,请参见基础资源监控。
使用场景
集群运维
通过配置以下报警规则集,监控报警了解集群管控、存储、网络、弹性扩缩容等异常事件。例如:
集群资源异常报警规则集:感知集群基础资源的关键指标是否异常,例如CPU、Memory、网络等关键指标是否出现高水位情况,避免影响集群稳定性。
集群异常事件报警规则集:感知集群节点或容器节点异常,例如集群节点Docker进程异常、集群节点进程异常及集群容器副本启动失败等异常。
集群存储异常事件报警规则集:感知集群存储的变更与异常。
集群网络异常事件报警规则集:感知集群网络的变更与异常。
集群管控运维异常报警规则集:感知集群管控的变更与异常等。
应用开发
通过监控报警了解在集群中运行应用的异常事件、指标是否异常。例如,集群容器副本异常或者应用Deployment的CPU、内存水位指标是否超过阈值等。可通过开启报警配置功能中的默认报警规则模板,即可快速接收集群内应用容器副本的异常事件报警通知。例如,通过配置并订阅关注集群容器副本异常报警规则集感知所属应用的Pod是否异常。
应用管理
关注运行在集群上的应用健康、容量规划、集群运行稳定性及异常甚至是错误报警等贯穿应用生命周期的一系列问题。例如,通过配置并订阅关注集群重要事件报警规则集感知集群内所有Warning、Error等异常报警;关注集群资源异常报警规则集感知集群的资源情况,从而更好地做容量规划等。
多集群管理
当您有多个集群需要管理,为集群配置报警规则往往会是一个重复繁琐且难以同步的操作。容器服务报警配置功能,支持通过集群内部署CRD配置的方式管理报警规则。可通过维护多个集群中同样配置的CRD资源,来方便快捷地实现多集群中报警规则的同步配置。
步骤一:开启报警管理功能
仅ACK托管集群和ACK专有集群支持开启报警管理功能。
ACK托管集群
创建集群时开启
在组件配置页面,打开报警配置右侧使用默认报警模板配置报警的开关,并选择报警通知联系人分组。具体操作,请参见创建ACK托管集群。
创建集群时开启报警配置后,系统将会开启默认报警规则,并默认发送报警通知到默认的联系人分组,您也可以修改报警联系人或报警联系组。
已有集群中开启
若创建集群时未开启,您可以参考如下步骤开启。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在报警配置页面,根据控制台页面提示进行组件的安装和升级。
控制台会自动检查以下条件,引导进行开通、安装、升级组件。
若不符合条件,请按以下提示完成操作。
已开通SLS日志服务云产品。当您首次使用日志服务时,需要登录日志服务控制台,根据页面提示开通日志服务。
说明关于日志服务的详细计费,请参见按使用功能付费模式计费项。
已安装事件中心。具体操作,请参见事件监控。
集群托管组件alicloud-monitor-controller升级到最新版本。更多信息,请参见alicloud-monitor-controller。
安装升级完成后,进入报警配置页面配置报警信息。
在报警规则管理页签,打开启动状态开启对应报警规则集,单击编辑通知对象可设置关联的通知对象。
容器服务报警规则功能会默认生成容器场景下的报警模板(包含异常事件报警、异常指标报警)。
报警规则被分类为若干个报警规则集,可为报警规则集关联多个联系人分组,并启动或关闭报警规则集。
报警规则集中包含多个报警规则,一个报警规则对应单个异常的检查项。多个报警规则集可以通过一个YAML资源配置到对应集群中,修改YAML会同步生成报警规则。
关于报警规则YAML配置,请参见步骤二:通过CRD配置报警规则。默认报警规则模板,请参见默认报警规则模板。
在其他不同页签,可进行如下功能操作。
页签
说明
报警历史
目前可查看最近发送的近100条历史记录。单击报警规则列下的链接,可以跳转到对应监控系统中查看详细规则配置;单击排查现场,可以快速定位到异常发生的资源页面(异常事件、指标异常的资源)。
联系人管理
对联系人进行管理,可创建、编辑或删除联系人。
集群资源异常报警规则集中集群节点基础资源报警,联系人短信、邮箱等联系方式需要在云监控中先验证联系方式,才能正常接收集群基础资源报警信息。可在云监控控制台查看同步联系人,若验证信息过期,可删除云监控中对应联系人并重新刷新容器服务报警中心的联系人页面。
联系人分组管理
对联系人分组进行管理,可创建、编辑或删除联系人分组。当无联系人分组时,控制台会从您的阿里云账号注册信息中同步创建一个默认联系人分组。
ACK专有集群
ACK专有集群需要先为Worker RAM角色授权,再开启默认报警规则。
托管版集群已自动添加SLS报警功能资源的访问权限。
1、为Worker RAM角色授权
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择集群信息。
在集群信息页面,在集群资源区域,复制Worker RAM角色右侧的名称,并单击链接进入RAM访问控制控制台为该Worker RAM角色授权。
创建如下自定义权限策略。请参见通过脚本编辑模式创建自定义权限策略。
{ "Action": [ "log:*", "arms:*", "cms:*", "cs:UpdateContactGroup" ], "Resource": [ "*" ], "Effect": "Allow" }
在角色页面,搜索定位该Worker RAM角色,为其授予以上创建的自定义权限策略。具体操作,请参见方式一:在RAM角色页面为RAM角色授权。
通过日志查看报警功能访问权限是否已配置。
在目标集群管理页左侧导航栏,选择 。
选择命名空间为kube-system,单击无状态应用列表中alicloud-monitor-controller的名称链接。
单击日志页签,可看到授权成功的Pod日志。
2、开启默认报警配置规则
在目标集群页左侧导航栏,选择运维管理 > 报警配置。
在报警配置页面,配置如下报警信息。
在报警规则管理页签,打开启动状态开启对应报警规则集,单击编辑通知对象可设置关联的通知对象。
容器服务报警规则功能会默认生成容器场景下的报警模板(包含异常事件报警、异常指标报警)。
报警规则被分类为若干个报警规则集,可为报警规则集关联多个联系人分组,并启动或关闭报警规则集。
报警规则集中包含多个报警规则,一个报警规则对应单个异常的检查项。多个报警规则集可以通过一个YAML资源配置到对应集群中,修改YAML会同步生成报警规则。
关于报警规则YAML配置,请参见步骤二:通过CRD配置报警规则。默认报警规则模板,请参见默认报警规则模板。
在其他不同页签,可进行如下功能操作。
页签
说明
报警历史
目前可查看最近发送的近100条历史记录。单击报警规则列下的链接,可以跳转到对应监控系统中查看详细规则配置;单击排查现场,可以快速定位到异常发生的资源页面(异常事件、指标异常的资源)。
联系人管理
对联系人进行管理,可创建、编辑或删除联系人。
集群资源异常报警规则集中集群节点基础资源报警,联系人短信、邮箱等联系方式需要在云监控中先验证联系方式,才能正常接收集群基础资源报警信息。可在云监控控制台查看同步联系人,若验证信息过期,可删除云监控中对应联系人并重新刷新容器服务报警中心的联系人页面。
联系人分组管理
对联系人分组进行管理,可创建、编辑或删除联系人分组。当无联系人分组时,控制台会从您的阿里云账号注册信息中同步创建一个默认联系人分组。
步骤二:通过CRD配置报警规则
报警配置功能开启后,默认会在kube-system命名空间下创建一个名为AckAlertRule类型的CRD资源配置,包含默认报警规则模板。您可以通过修改此CRD资源来修改默认报警规则,以配置符合要求的容器服务报警规则。
默认报警规则模板
默认创建的报警规则模板如下表所示。
配置报警规则
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在报警规则管理页签,单击右上角编辑报警配置,然后单击目标规则列右侧操作列下的YAML,即可查看当前集群中的AckAlertRule资源配置。
参考默认报警规则模板说明,修改示例YAML文件。
报警规则配置的YAML文件示例如下:
apiVersion: alert.alibabacloud.com/v1beta1 kind: AckAlertRule metadata: name: default spec: groups: #以下是一个集群事件报警规则配置样例。 - name: pod-exceptions #报警规则分组名,对应报警模板中的Group_Name字段。 rules: - name: pod-oom #报警规则名。 type: event #报警规则类型(Rule_Type),枚举值为event(事件类型)、metric-cms(云监控指标类型)。 expression: sls.app.ack.pod.oom #报警规则表达式,当规则类型为event时,表达式的值为本文默认报警规则模板中Rule_Expression_Id值。 enable: enable #报警规则开启状态,枚举值为enable、disable。 - name: pod-failed type: event expression: sls.app.ack.pod.failed enable: enable #以下是一个集群基础资源报警规则配置样例。 - name: res-exceptions #报警规则分组名,对应报警模板中的Group_Name字段。 rules: - name: node_cpu_util_high #报警规则名。 type: metric-cms #报警规则类型(Rule_Type),枚举值为event(事件类型)、metric-cms(云监控指标类型)。 expression: cms.host.cpu.utilization #报警规则表达式,当规则类型为metric-cms时,表达式的值为本文默认报警规则模板中Rule_Expression_Id值。 contactGroups: #报警规则映射的联系人分组配置,由ACK控制台生成,同一个账号下联系人相同,可在多集群中复用。 enable: enable #报警规则开启状态,枚举值为enable、disable。 thresholds: #报警规则阈值,详情见文档如何更改报警规则阈值部分。 - key: CMS_ESCALATIONS_CRITICAL_Threshold unit: percent value: '1'
配置报警规则示例—通过CRD修改集群基础资源报警规则的阈值
由默认报警规则模板集可知集群资源异常报警规则集的Rule_Type为metric-cms,同步自云监控的基础资源报警规则,本示例通过在集群节点-CPU使用率规则的报警规则集对应的CRD中,增加thresholds
参数,配置基础监控报警规则的阈值、重试判断次数以及静默期配置。
apiVersion: alert.alibabacloud.com/v1beta1
kind: AckAlertRule
metadata:
name: default
spec:
groups:
#以下是一个集群基础资源报警规则配置样例。
- name: res-exceptions #报警规则分组名,对应报警模板中的Group_Name字段。
rules:
- name: node_cpu_util_high #报警规则名。
type: metric-cms #报警规则类型(Rule_Type),枚举值为event(事件类型)、metric-cms(云监控指标类型)。
expression: cms.host.cpu.utilization #报警规则表达式,当规则类型为metric-cms时,表达式的值为本文默认报警规则模板中Rule_Expression_Id值。
contactGroups: #报警规则映射的联系人分组配置,由ACK控制台生成,同一个账号下联系人相同,可在多集群中复用。
enable: enable #报警规则开启状态,枚举值为enable、disable。
thresholds: #报警规则阈值,更多信息,请参见如何通过CRD配置报警规则。
- key: CMS_ESCALATIONS_CRITICAL_Threshold
unit: percent
value: '1'
- key: CMS_ESCALATIONS_CRITICAL_Times
value: '3'
- key: CMS_RULE_SILENCE_SEC
value: '900'
参数名 | 说明 | 默认值 |
| 报警配置阈值。
此参数必填,未配置时规则将同步失败并关闭。 | 根据默认报警模板配置而定。 |
| 云监控规则重试判断次数。 可选参数,未配置时取默认值。 | 3 |
| 云监控持续发送异常触发规则时,初次上报报警后静默期时长(单位:秒),防止过于频繁报警。 可选参数,未配置时取默认值。 | 900 |
常见问题
报警规则同步失败且报错信息为The Project does not exist : k8s-log-xxx
问题现象:
报警中心中报警规则同步状态时,提示The Project does not exist : k8s-log-xxx
。
问题原因:
未创建SLS事件中心资源。
解决方案:
在日志服务管理控制台检查Project是否达到Quota上限,删除多余的Project,或提交工单申请扩大Project资源Quota限制。关于如何删除Project,请参见管理Project。
重新安装ack-node-problem-detector组件。
在容器服务管理控制台目标集群管理页左侧导航栏中,选择 。
若您需要通过YAML方式重新安装ack-node-problem-detector组件,请通过以下操作备份ack-node-problem-detector组件资源。
在Helm页面,单击ack-node-problem-detector组件右侧操作列的更新。更新完成后,单击ack-node-problem-detector组件右侧操作列详情。在ack-node-problem-detector组件详情页,单击所有资源信息的查看YAML,并保存各资源的YAML到本地。
在Helm页面,单击ack-node-problem-detector组件右侧操作列的删除。
在集群管理页左侧导航栏中,选择
。单击日志与监控页签,在ack-node-problem-detector组件的卡片中单击安装。
在提示对话框中确认版本信息后单击确定。安装成功后,对应组件卡片区域会提示已安装,且可查看组件当前版本。
由于无订阅的联系人组导致报警规则同步失败
问题现象:
当报警中心中报警规则同步状态出现类似报错信息this rule have no xxx contact groups reference
。
问题原因:
报警规则无订阅的联系人组。
解决方案:
已创建联系人,并将联系人加入联系人分组中。
在对应报警规则集右侧单击编辑通知对象,为该组报警规则配置订阅的联系人分组。