将报警配置功能接入注册集群

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

ACK One注册集群中接入报警配置功能,第一时间感知容器服务异常事件和容器指标异常。

前提条件

在注册集群中配置云监控组件

步骤一:为云监控组件配置RAM权限

通过onectl配置

  1. 在本地安装配置onectl。具体操作,请参见通过onectl管理注册集群

  2. 为云监控组件配置RAM权限。

    onectl ram-user grant --addon alicloud-monitor-controller

    预期输出:

    Ram policy ack-one-registered-cluster-policy-alicloud-monitor-controller granted to ram user ack-one-user-ce313528c3 successfully.

通过控制台配置

在注册集群中安装组件前,需先获取AccessKey用来访问云服务。设置AccessKey前,需创建RAM用户并为其添加访问相关云资源的权限。

  1. 创建RAM用户

  2. 创建自定义权限策略。权限策略模板如下所示:

    {
                "Action": [
                    "log:*",
                    "arms:*",
                    "cms:*",
                    "cs:UpdateContactGroup"
                ],
                "Resource": [
                    "*"
                ],
                "Effect": "Allow"
    }
  3. RAM用户授权

  4. RAM用户创建AccessKey

    警告

    建议您参见AccessKey网络访问限制策略配置网络策略,将AccessKey调用来源控制在可信的网络环境内,提升AccessKey的安全性。

  5. 使用AccessKey在注册集群中创建名为alibaba-addon-secretSecret资源。

    安装云监控组件时将自动引用此AccessKey访问对应的云服务资源。

    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>'
    说明

    <your access key id><your access key secret>为上一步获取的AccessKey信息。

步骤二:安装与升级云监控组件

通过onectl安装

安装云监控组件。

onectl addon install alicloud-monitor-controller

预期输出:

Addon alicloud-monitor-controller, version **** installed.

通过控制台安装

控制台会自动检测报警配置环境是否符合要求,并会引导进行开通、安装或升级组件。

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 报警配置

  3. 报警配置页面,按照页面指引进行组件的安装或升级。

  4. 安装升级完成后,进入报警配置页面配置报警信息。

    页签

    说明

    报警规则管理

    • 启动状态:用于打开或关闭目标报警规则集。

    • 编辑通知对象:设置报警通知的联系人分组。

    设置前,需先创建联系人和分组,并将联系人加入分组。通知对象仅支持联系人分组,如需通知单人,可将该联系人单独建组后选择该分组。

    报警历史

    目前可查看最近1天内发送的最新100条历史记录。

    • 单击报警规则列下的链接,可以跳转到对应监控系统中查看详细规则配置。

    • 单击排查现场,可以快速定位到异常发生的资源页面(异常事件、指标异常的资源)。

    • 单击智能分析,可通过计算 AI 助手协助分析问题并提供处理指导。

    联系人管理

    对联系人进行管理,可创建、编辑或删除联系人。

    联系方式:

    • 电话/短信:设置联系人的手机号码后,可以通过电话和短信的方式接收告警通知。

      仅验证过的手机号码可以在通知策略中使用电话的通知方式,验证手机号的操作,请参见验证手机号
    • 邮箱:设置联系人的邮箱地址后,可以通过邮箱接收告警通知。

    • 机器人:钉钉机器人企业微信机器人飞书机器人

      钉钉机器人需要追加安全关键字: 报警、分派。
    邮箱和机器人设置前,可以先在云监控控制台报警服务 > 报警联系人验证,以便接收报警信息。

    联系人分组管理

    对联系人分组进行管理,可创建、编辑或删除联系人分组。编辑通知对象仅支持选择联系人分组。

    当无联系人分组时,控制台会在阿里云账号注册信息中同步创建一个默认联系人分组。

接入报警配置功能

步骤一:开启默认报警规则

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 报警配置

  3. 报警规则管理页签,开启对应报警规则集。

    报警规则管理

步骤二:手动配置报警规则

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 报警配置

  3. 报警规则管理页签,单击编辑通知对象可设置关联的通知对象;打开启动状态开关可开启对应报警规则集。

    功能特性

    说明

    报警规则管理

    • 容器服务报警规则功能会默认生成容器场景下的报警模板(包含异常事件报警、异常指标报警)。

    • 报警规则被分类为若干个报警规则集,可为报警规则集关联多个联系人分组,并启动或关闭报警规则集。

    • 报警规则集中包含多个报警规则,一个报警规则对应单个异常的检查项。多个报警规则集可以通过一个YAML资源配置到对应集群中,修改YAML会同步生成报警规则。

    • 关于报警规则YAML配置,请参见如何通过CRD配置报警规则

    • 关于默认报警规则模板,请参见容器服务报警管理

    报警历史

    目前可查看最近发送100条历史记录。单击对应报警规则类型的链接,可跳转到对应监控系统中查看详细规则配置;单击对应报警排查现场的链接可快速定位到异常发生的资源页面(异常事件、指标异常的资源)。报警历史查看

    联系人管理

    对联系人进行管理,可创建、编辑或删除联系人。

    联系人分组管理

    对联系人分组进行管理,可创建、编辑或删除联系人分组。当无联系人分组时,控制台会从阿里云账号注册信息中同步创建一个默认联系人分组。

如何通过CRD配置报警规则

报警配置功能开启时,会默认在kube-system命名空间下创建一个AckAlertRule类型的资源配置,包含默认报警规则模板。容器服务报警规则集可通过此资源配置在集群中。

控制台

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 报警配置

  3. 报警规则管理页签,单击右上角编辑报警配置,然后单击目标规则列右侧操作列下的YAML,即可查看当前集群中的AckAlertRule资源配置。

  4. 可参考默认报警规则模板说明,根据实际需求修改 YAML 文件内容。

    报警规则配置 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(云监控指标)、metric-prometheus(Prometheus指标)。
              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: '85'                                # CPU 使用率阈值,85%(默认)    
                - key: CMS_ESCALATIONS_CRITICAL_Times
                  value: '3'                                # 连续 3 次超过阈值触发报警
                - key: CMS_RULE_SILENCE_SEC                 # 初次上报报警后静默期时长 
                  value: '900'    

    rules.thresholds(参数见下表)可自定义报警阈值。例如上述示例配置:当集群节点 CPU 使用率超过 85%,连续 3 次达到阈值,且距离上一次报警已超过 900 秒时,将触发报警通知。

    参数名

    是否必选

    说明

    默认值

    CMS_ESCALATIONS_CRITICAL_Threshold

    必选

    报警配置阈值。未配置时规则将同步失败并关闭。

    • unit:表示单位,可配置为percentcountqps

    • value:阈值。

    根据默认报警模板配置而定。

    CMS_ESCALATIONS_CRITICAL_Times

    可选

    云监控规则重试判断次数。未配置时取默认值。

    3

    CMS_RULE_SILENCE_SEC

    可选

    云监控持续发送异常触发规则时,初次上报报警后静默期时长(单位:秒),防止过于频繁报警。未配置时取默认值。

    900

kubectl

  1. 使用以下命令编辑报警规则的 YAML 文件。

    kubectl edit ackalertrules default -n kube-system
  2. 可参考默认报警规则模板说明,根据实际需求修改 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: '85'                                # CPU 使用率阈值,85%(默认)    
                - key: CMS_ESCALATIONS_CRITICAL_Times
                  value: '3'                                # 连续 3 次超过阈值触发报警
                - key: CMS_RULE_SILENCE_SEC                 # 初次上报报警后静默期时长 
                  value: '900'    

    通过 rules.thresholds,可灵活自定义报警阈值。例如上述示例配置:当集群节点 CPU 使用率超过 85%,连续 3 次达到阈值,且距离上一次报警已超过 900 秒时,将触发报警通知。

    参数名

    是否必选

    说明

    默认值

    CMS_ESCALATIONS_CRITICAL_Threshold

    必选

    报警配置阈值。未配置时规则将同步失败并关闭。

    • unit:表示单位,可配置为percentcountqps

    • value:阈值。

    根据默认报警模板配置而定。

    CMS_ESCALATIONS_CRITICAL_Times

    可选

    云监控规则重试判断次数。未配置时取默认值。

    3

    CMS_RULE_SILENCE_SEC

    可选

    云监控持续发送异常触发规则时,初次上报报警后静默期时长(单位:秒),防止过于频繁报警。未配置时取默认值。

    900

默认报警规则模板

在以下情况下注册集群会默认创建相应报警规则:

  • 开启默认报警规则功能。

  • 未开启默认报警规则,首次进入报警规则页面。

默认创建的报警规则如下表所示。

报警项

规则说明

报警来源

Rule_Type

ACK_CR_Rule_Name

SLS_Event_ID

集群巡检发现异常

自动巡检机制捕捉到潜在异常,需分析具体问题与日常维护策略。

日志服务

event

cis-sched-failed

sls.app.ack.cis.schedule_task_failed