通知管理

功能概述

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

主要功能

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

通知服务器

通知服务器为平台上的接收者提供发送通知消息的服务。目前,平台支持以下通知服务器:

  • 企业通信工具服务器:支持集成企业微信、钉钉和飞书内置应用,向个人发送通知。
  • 邮件服务器:通过邮件服务器使用电子邮件发送通知。
  • 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:Secure Socket Layer(SSL)是一种标准安全技术。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. 单击创建接收者组,并按照以下说明配置相关参数。

    参数描述
    Email为整个接收者组添加一个电子邮件地址。平台会向此电子邮件地址以及该组中所有联系人的电子邮件地址发送通知。
    Webhook URL/WeChat 群机器人/DingTalk 群机器人/Feishu 群机器人根据已配置的通知服务器填写相应通知方式的 URL。配置完成后,该组中的联系人将通过此方式收到通知。
    联系人配置单击添加联系人,将现有平台用户添加到接收者组。请确保所选联系人的联系信息(电话、电子邮件、接口回调)准确无误,以避免遗漏消息通知。
  4. 单击添加。

将接收者组与标头 Secret 关联

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

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

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

  3. 在 global 集群的控制平面节点上编辑相应的接收者组(NotificationGroup)资源。

    kubectl edit notificationgroups.ait.alauda.io -n cpaas-system <notification-group-name>
  4. 将 cpaas.io/notification.webhook.config 注解添加到 metadata.annotations。其值必须是为自定义请求标头创建的 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}}。为方便用户快速获取关键信息,可以为变量指定自定义显示名称,例如:Alert Level: {{ .externalLabels.severity }}。

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

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

显示名称变量说明
告警状态{{ .externalLabels.status }}例如:告警中。
告警级别{{ .externalLabels.severity }}例如:严重。
告警集群{{ .labels.alert_cluster }}例如:发生告警的集群 1。
告警对象{{ .externalLabels.object }}发生告警的资源类型和名称,例如节点 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(六级标题)。设置标题级别。
段落<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. 切换到规则页签,参考通知规则创建通知规则。