通知管理

功能概览

通过通知功能,您可以将平台的监控和告警能力集成起来,及时向通知接收人发送预警信息,提醒相关人员采取必要措施以解决问题或避免故障。

主要功能

  • 通知服务器:通知服务器提供向平台上的接收组发送通知消息的服务,例如邮件服务器。
  • 接收组:接收组是具有相似逻辑特征的一组通知接收人,通过对接收通知消息的实体进行分类,可以降低维护成本。
  • 通知模板:通知模板是一种标准化结构,由自定义内容、内容变量和内容格式参数组成。用于规范通知规则的告警通知消息内容和格式。例如,自定义邮件通知的主题和内容。
  • 通知规则:通知规则是一组用于定义如何向特定联系人发送通知消息的规则。在告警、巡检和登录认证等需要通知外部服务的场景中,必须使用通知规则。

通知服务器

通知服务器提供向平台上的接收人发送通知消息的服务。平台当前支持以下通知服务器:

  • 企业通讯工具服务器:支持集成企业微信、钉钉和飞书内置应用,用于向个人发送通知。
  • 邮件服务器:通过邮件服务器使用电子邮件发送通知。
  • Webhook 类型服务器:支持集成企业微信群机器人、钉钉群机器人、飞书群机器人,或向您指定的服务器发送 WebHook。
WARNING

只能添加一个企业通讯工具服务器。

企业通讯工具服务器

企业微信

  1. 按照以下示例配置通知服务器参数。填写完成后,切换到 集群管理 > 资源管理 中的 global 集群,并创建资源对象。

    # WeChat Work corpId, corpSecret, agentId acquisition methods can be referenced in the official documentation: https://developer.work.weixin.qq.com/document/path/90665
    apiVersion: v1
    kind: Secret
    type: NotificationServer
    metadata:
      labels:
        cpaas.io/notification.server.type: CorpWeChat
        cpaas.io/notification.server.category: Corp
      name: platform-corp-wechat-server
      namespace: cpaas-system
    data:
      displayNameZh: 企业微信 # Server's Chinese display name, encoded in base64 by default
      displayNameEn: WeChat # Server's English display name, encoded in base64 by default
      corpId: # Corporate ID, encoded in base64 by default
      corpSecret: # Application secret, encoded in base64 by default
      agentId: # Corporate application ID, encoded in base64 by default
  2. 创建完成后,需要在平台的 用户角色管理 > 用户管理 中,或者在用户的 个人信息 中更新用户的 企业微信 ID,以确保用户能够正常接收消息。

钉钉

  1. 按照以下示例配置通知服务器参数。填写完成后,切换到 集群管理 > 资源管理 中的 global 集群,并创建资源对象。

    # DingTalk appKey, appSecret, agentId acquisition method: https://open-dev.dingtalk.com/fe/app#/corp/app
    apiVersion: v1
    kind: Secret
    type: NotificationServer
    metadata:
      labels:
        cpaas.io/notification.server.type: CorpDingTalk
        cpaas.io/notification.server.category: Corp
      name: platform-corp-dingtalk-server
      namespace: cpaas-system
    data:
      displayNameZh: 钉钉 # Server's Chinese display name, encoded in base64 by default
      displayNameEn: DingTalk # Server's English display name, encoded in base64 by default
      appKey: # Application key, encoded in base64 by default
      appSecret: # Application secret, encoded in base64 by default
      agentId: # Application agent_id, encoded in base64 by default
  2. 创建完成后,需要在平台的 用户角色管理 > 用户管理 中,或者在用户的 个人信息 中更新用户的 钉钉 ID,以确保用户能够正常接收消息。

飞书

  1. 按照以下示例配置通知服务器参数。填写完成后,切换到 集群管理 > 资源管理 中的 global 集群,并创建资源对象。

    # Feishu appId, appSecret acquisition methods: https://open.feishu.cn/app/
    apiVersion: v1
    kind: Secret
    type: NotificationServer
    metadata:
      labels:
        cpaas.io/notification.server.type: CorpFeishu
        cpaas.io/notification.server.category: Corp
      name: platform-corp-feishu-server
      namespace: cpaas-system
    data:
      displayNameZh: 飞书 # Server's Chinese display name, encoded in base64 by default
      displayNameEn: Feishu # Server's English display name, encoded in base64 by default
      appId: # Application ID, encoded in base64 by default
      appSecret: # Application secret, encoded in base64 by default
  2. 创建完成后,需要在平台的 用户角色管理 > 用户管理 中,或者在用户的 个人信息 中更新用户的 飞书 ID,以确保用户能够正常接收消息。

邮件服务器

  1. 在左侧导航栏中,单击 平台设置 > 通知服务器。

  2. 单击 立即配置。

  3. 参考以下说明配置相关参数。

    参数描述
    服务地址支持 SMTP 协议的通知服务器地址,例如 smtp.yeah.net。
    端口通知服务器的端口号。当勾选 使用 SSL 时,必须填写 SSL 端口号。
    服务器配置使用 SSL:SSL(Secure Socket Layer)是一种标准安全技术。SSL 开关用于控制是否在服务器与客户端之间建立加密连接。
    跳过不安全验证:insecureSkipVerify 开关用于控制是否验证客户端证书和服务器主机名。启用后,将不会验证证书以及证书中的主机名与服务器主机名的一致性。
    发件人邮箱通知服务器中的发件人邮箱账号,用于发送通知邮件。
    启用认证如果需要认证,请配置邮件服务器的用户名和授权码。
  4. 单击 确定。

Webhook 类型服务器

支持集成企业微信群机器人、钉钉群机器人、飞书群机器人,或向您指定的 Webhook 服务器发送 HTTP 请求。

企业微信群机器人

  1. 在左侧导航栏中,单击 集群管理 > 集群。

  2. 单击 global 集群旁边的操作按钮 > CLI 工具。

  3. 在 global 集群的主节点上执行以下命令:

    kubectl patch secret -n cpaas-system platform-wechat-server -p '{"data":{"enable":"dHJ1ZQo="}}'

    提示:dHJ1ZQo= 是 true 的 base64 编码值;如需禁用,请将 dHJ1ZQo= 替换为 ZmFsc2UK,即 false 的 base64 编码值。

钉钉群机器人

  1. 在左侧导航栏中,单击 集群管理 > 集群。

  2. 单击 global 集群旁边的操作按钮 > CLI 工具。

  3. 在 global 集群的主节点上执行以下命令:

    kubectl patch secret -n cpaas-system platform-dingtalk-server -p '{"data":{"enable":"dHJ1ZQo="}}'

    提示:dHJ1ZQo= 是 true 的 base64 编码值;如需禁用,请将 dHJ1ZQo= 替换为 ZmFsc2UK,即 false 的 base64 编码值。

飞书群机器人

  1. 在左侧导航栏中,单击 集群管理 > 集群。

  2. 单击 global 集群旁边的操作按钮 > CLI 工具。

  3. 在 global 集群的主节点上执行以下命令:

    kubectl patch secret -n cpaas-system platform-feishu-server -p '{"data":{"enable":"dHJ1ZQo="}}'

    提示:dHJ1ZQo= 是 true 的 base64 编码值;如需禁用,请将 dHJ1ZQo= 替换为 ZmFsc2UK,即 false 的 base64 编码值。

Webhook 服务器

  1. 在左侧导航栏中,单击 集群管理 > 集群。

  2. 单击 global 集群旁边的操作按钮 > CLI 工具。

  3. 在 global 集群的主节点上执行以下命令:

    kubectl patch secret -n cpaas-system platform-webhook-server -p '{"data":{"enable":"dHJ1ZQo="}}'

    提示:dHJ1ZQo= 是 true 的 base64 编码值;如需禁用,请将 dHJ1ZQo= 替换为 ZmFsc2UK,即 false 的 base64 编码值。

为 Webhook 通知配置自定义请求头

如果目标 Webhook 端点需要自定义 HTTP 请求头,请先在 cpaas-system 命名空间中创建一个 Secret,后续再将其与接收组关联。

  1. 在左侧导航栏中,单击 集群管理 > 集群。

  2. 单击 global 集群旁边的操作按钮 > CLI 工具。

  3. 在 global 集群的主节点上创建如下所示的 YAML 文件。

    apiVersion: v1
    kind: Secret
    metadata:
      name: webhook-header-secret
      namespace: cpaas-system
    type: NotificationSender
    data:
      X-Secret: <base64-encoded-header-value>
  4. 将 YAML 文件保存为 webhook-header.yaml,并应用资源。

    kubectl apply -f webhook-header.yaml
INFO
  1. data 下的每个键都用作 HTTP 请求头名称。
  2. data 下的每个值在应用到集群之前都必须进行 base64 编码。
  3. 如果端点需要多个请求头,请在 data 下添加更多键值对。

接收组

接收组是一组具有相似逻辑特征的通知接收人。例如,您可以将运维团队设置为接收组,以便在配置通知规则时进行快速选择和管理。

INFO
  1. 平台支持多种通知服务器,并会根据通知服务器配置展示对应通知类型的相关配置项。
  2. 如果需要使用 Webhook 类型服务器作为通知接收人,必须在接收组中配置相关 URL。
  3. 如果 Webhook 端点需要自定义请求头,则必须将接收组关联到 cpaas-system 命名空间中类型为 NotificationSender 的 Secret。
  1. 在左侧导航栏中,单击 运维中心 > 通知。

  2. 切换到 接收组 选项卡。

  3. 单击 创建接收组,并按照以下说明配置相关参数。

    参数描述
    邮箱为整个接收组添加一个邮箱。平台将向该邮箱以及组内所有联系人的邮箱发送通知。
    Webhook URL/企业微信群机器人/钉钉群机器人/飞书群机器人请根据已配置的通知服务器填写对应的通知方式 URL。配置完成后,该组中的联系人将通过此方式接收通知。
    联系人配置单击 添加联系人 将平台中已有的用户添加到接收组中。请确保所选联系人的联系信息(电话、邮箱、接口回调)的准确性,以避免漏收消息通知。
  4. 单击 添加。

将接收组与 Header Secret 关联

如果已配置的 Webhook 端点需要自定义请求头,请将接收组与 为 Webhook 通知配置自定义请求头 中创建的 Secret 关联。

  1. 在左侧导航栏中,单击 集群管理 > 集群。

  2. 单击 global 集群旁边的操作按钮 > CLI 工具。

  3. 在 global 集群的主节点上编辑对应的接收组(NotificationGroup)资源。

    kubectl edit notificationgroups.ait.alauda.io -n cpaas-system <notification-group-name>
  4. 向 metadata.annotations 添加 cpaas.io/notification.webhook.config 注解。其值必须为用于自定义请求头的 Secret 名称。

    apiVersion: ait.alauda.io/v1beta1
    kind: NotificationGroup
    metadata:
      name: <notification-group-name>
      namespace: cpaas-system
      annotations:
        cpaas.io/notification.webhook.config: webhook-header-secret
INFO

Webhook URL 在接收组中配置,自定义请求头通过引用的 Secret 进行配置。

通知模板

通知模板是一种标准化结构,由自定义内容、内容变量和内容格式参数组成。用于规范通知规则的告警通知消息内容和格式。

平台管理员或运维人员可以根据不同的告警通知方式设置通知模板,自定义通知消息的内容和格式,帮助用户快速获取关键告警信息并提升运维效率。

平台管理员可以将平台通知模板设为公开。公开模板可在项目通知规则中被选用,因此项目管理员无需在每个项目中重复创建模板,即可复用平台维护的消息格式。

INFO

平台支持多种通知服务器,并会根据通知服务器配置展示对应通知类型的模板。如果未配置通知服务器,则默认不会展示对应的通知模板。

创建模板

  1. 在左侧导航栏中,单击 运维中心 > 通知。

  2. 切换到 模板 选项卡。

  3. 单击 创建模板。

  4. 在 基本信息 区域中,配置以下参数。

    参数描述
    消息类型根据通知用途选择消息类型。
    告警消息:发送由告警规则触发的告警消息,与平台告警功能配合使用;
    组件异常消息:发送由某些组件异常触发的通知信息。
    公开使模板可用于项目通知规则。该选项适用于平台通知模板。模板设为公开后,项目管理员在创建或更新通知规则时,可以从平台公开模板组中选择该模板。公开模板在模板列表中会带有只读的 公开 标签,并在详情页显示公开状态。当您将公开模板重新设为私有时,在提交更改前,请在对话框中确认影响。
  5. 在 模板配置 区域中,引用不同的模板类型以配置变量和内容格式参数。

INFO
  1. 模板内容只能由变量、变量显示名称以及平台支持的特殊格式标记语言组成。只要符合语法规则,变量和其他元素可以自由组合。
  2. 模板中只能使用平台支持的变量。您可以修改变量显示名称和内容格式,但不能修改变量本身。请参见 引用变量 和 电子邮件中的特殊格式标记语言。
  3. 平台根据实际运维场景,为各种通知类型提供默认通知模板内容,可满足大多数通知消息设置需求。如无特殊要求,您可以直接使用默认模板内容。
  4. 如果平台公开模板重新设为私有,它仍会在平台公开模板组中可见,但会处于禁用状态。该模板不能用于新建通知规则,但已在使用该模板的现有通知规则仍可继续发送通知。
  5. 如果平台公开模板被任何项目通知规则引用,则会受到删除保护。删除模板前,请先移除所有引用。
  1. 单击 创建。

引用变量

变量是通知消息(NotificationMessage)中标签或注解的键,格式为 {{.labelKey}}。为了方便用户快速获取关键信息,可以为变量设置自定义显示名称,例如:告警级别: {{ .externalLabels.severity }}。

当通知规则基于通知模板向用户发送通知消息时,模板中的变量会引用通知消息中对应的标签值(实际监控数据)。最终,监控数据将以标准化的内容格式发送给用户。

平台默认提供以下基础变量:

显示名称变量描述
告警状态{{ .externalLabels.status }}例如:Alerting。
告警级别{{ .externalLabels.severity }}例如:Critical。
告警集群{{ .labels.alert_cluster }}例如:发生告警的 Cluster 1。
告警对象{{ .externalLabels.object }}发生告警的资源类型和名称,例如 node 192.168.16.53。
规则名称{{ .labels.alert_resource }}告警规则名称,例如 cpaas-node-rules。
告警描述{{ .externalLabels.summary }}告警规则的描述。
触发值{{ .externalLabels.currentValue }}触发告警的监控值。
告警时间{{ dateFormatWithZone .startsAt "2006-01-02 15:04:05" "Asia/Chongqing" }}告警开始时间。
恢复时间{{ dateFormatWithZone .endsAt "2006-01-02 15:04:05" "Asia/Chongqing" }}告警结束时间。
指标名称{{ .labels.alert_indicator }}监控指标名称。

电子邮件中的特殊格式标记语言

在电子邮件通知中,下表列出了常见的 HTML 格式标签及其说明:

内容元素标签描述
文本-支持输入中英文文本内容。
字体<font color="#FF0000">Set Font Color</font>
<b>Bold Font</b>
设置字体格式。
标题<h1>Level 1 Title</h1>,最多支持 h6(header 6)。设置标题级别。
段落<p>Paragraph</p>插入普通段落文本。
引用<q>Quote</q>插入简短引用内容。
超链接<a href="//www.example.com">Hyperlink</a>插入超链接。

通知规则

通知规则是一组用于定义如何向特定联系人发送通知消息的规则。在告警、巡检和登录认证等需要通知外部服务的场景中,必须使用通知规则。

INFO

平台支持多种通知服务器,并会根据通知服务器配置展示对应通知类型的通知方式。如果未配置通知服务器,则默认不会展示对应的通知方式。

前提条件

要使用 企业通讯工具服务器 通知联系人,用户必须先在 个人信息 中填写其 WeChat Work ID,以修改自己的联系信息。

操作步骤

  1. 在左侧导航栏中,单击 运维中心 > 通知。

  2. 单击 创建规则,并按照以下说明配置相关参数。

    参数描述
    接收组接收组是一组逻辑上归类的通知接收人,平台将使用指定的通知方式向其发送通知。
    通知接收人可选择添加一个或多个通知接收人,平台将根据接收人在 个人信息 中配置的联系方式发送通知。
    通知方式支持 企业微信、钉钉、飞书、企业微信群机器人、钉钉群机器人、飞书群机器人、WebHook URL 等多种方式,并支持多选。
    注意:配置通知服务器后将显示部分参数。
    通知模板选择用于展示通知信息的通知模板。在项目视图中,模板按来源分组。您可以选择项目模板或平台公开模板。
  3. 单击 创建。

为项目设置通知规则

平台的通知规则、通知模板和接收组默认按租户隔离。作为项目管理员,您无法查看或使用其他项目或平台管理员配置的通知规则、私有通知模板或接收组。平台公开通知模板除外:您可以在创建或更新通知规则时选择它们,但不能在项目视图中编辑或删除它们。

前提条件

  1. 您已联系平台管理员完成通知服务器配置。

  2. 如果需要通过企业通讯工具进行通知,还需要确保待通知联系人已在 个人信息 中正确配置其通讯工具 ID。

操作步骤

  1. 在 项目管理 视图中,单击 项目名称。

  2. 在左侧导航栏中,单击 通知。

  3. 切换到 接收组 选项卡,参考 接收组 创建接收组。

TIP

如果您不需要通过接收组管理通知联系人,或者不需要通知 Webhook 类型通知服务器,可以跳过此步骤。

  1. 切换到 模板 选项卡,参考 通知模板 创建通知模板。如果已有合适的平台公开模板,则可以跳过此步骤,并在创建通知规则时选择该模板。

  2. 切换到 规则 选项卡,参考 通知规则 创建通知规则。