通知服务是通知您告警事件的服务。您可以配置通知服务,以将告警通知发送给最适合采取措施的人员。

Rancher 集成了多种通知服务,包括:

  • Slack: 将告警通知发送到您的 Slack 频道。
  • Email: 选择电子邮件收件人以接收告警通知。
  • PagerDuty: 通过电话,短信或个人电子邮件将告警发送给员工。
  • WebHooks: 将告警发送到 Webhook 服务器。
  • WeChat: 向您的企业微信联系人发送告警通知。

基于角色的访问控制

通知程序是在集群级别配置的。可确保仅集群所有者需要配置通知程序,而项目所有者则可以仅在其项目范围内使用已经定义好的通知作为告警接收者。无需考虑 SMTP 服务器访问或云帐户访问权限等问题。

添加通知接收者

设置通知接收者,以便您可以开始配置和发送告警。

  1. 全局视图中,打开要添加通知的集群。

  2. 在主菜单中,选择工具>通知。然后点击添加通知

  3. 选择要用作接收者的服务,然后填入所需配置。

    • Slack

      1. 输入通知接收者的名称
      2. From Slack,创建一个 Webhook。有关说明,请参见 Slack 文档
      3. 在 Rancher 中,输入您的 Slack Webhook URL
      4. 以以下格式输入要发送告警的频道名称: #<channelname>。 支持公有和私有频道。
      5. 点击测试。如果测试成功,则您配置的 Slack 频道将收到 Slack setting validated
    • 邮件

      1. 输入通知接收者的名称
      2. 发件人字段中,输入要发送通知的邮件服务器上可用的电子邮件地址。
      3. 主机字段中,输入 SMTP 服务器的 IP 地址或主机名。示例: smtp.email.com
      4. 端口字段中,输入用于电子邮件服务的端口。通常,TLS 使用587 ,而 SSL 使用465。如果您使用的是 TLS,请确保勾选使用 TLS
      5. 输入通过 SMTP 服务器进行身份验证的用户名密码
      6. 默认收件人字段中,输入要接收通知的电子邮件地址。
      7. 单击测试。如果测试成功,Rancher 将打印 settings validated,并且您会收到测试通知电子邮件。
    • PagerDuty

      1. 输入通知接收者的名称
      2. 从 PagerDuty 创建一个 Prometheus 集成。有关说明,请参阅 PagerDuty 文档
      3. 从 PagerDuty 中,复制 Prometheus 集成的 Integration Key
      4. 在 Rancher 中,在 Service Key 中输入密钥。
      5. 点击 测试。如果测试成功,则您的 PagerDuty 端点将输出 PagerDuty setting validated.
    • WebHook

      1. 输入通知接收者的名称
      2. 输入您的 Webhook URL
      3. 点击 测试。如果测试成功,您配置的 Webhook 地址将会收到 Webhook setting validated
    • WeChat

      自 v2.2.0 起可用

      1. 输入通知接收者的名称
      2. 企业 ID 字段中,输入您公司的 “EnterpriseID”,您可以在企业微信的设置页面获取。
      3. 从企业微信中,在应用页面创建一个应用程序,然后将应用的AgentIdSecret填入应用代理 ID应用密钥字段。
      4. 选择接收者类型然后在默认接收者字段中输入相应的 ID,例如,您要接收通知的参与者 ID,标签 ID 或部门 ID。您可以从联系人页面获取联系信息。
  4. 自 v2.3.0 起可用 - 如果希望通知已解决的告警,请勾选发送已解决的告警

  5. 点击添加以完成添加通知接收者。

结果: 您的通知接收者已添加到 Rancher。

管理通知

设置通知程序后,您可以对其进行管理。从全局视图中,打开要管理通知者的集群。选择工具>通知程序。您可以:

  • 编辑初始配置。
  • 克隆通知,快速设置略有不同的通知。
  • 删除不再需要的通知。

Webhook 类型告警通知的 Payload 示例

  1. {
  2. "receiver": "c-2a3bc:kube-components-alert",
  3. "status": "firing",
  4. "alerts": [
  5. {
  6. "status": "firing",
  7. "labels": {
  8. "alert_name": "Scheduler is unavailable",
  9. "alert_type": "systemService",
  10. "cluster_name": "mycluster (ID: c-2a3bc)",
  11. "component_name": "scheduler",
  12. "group_id": "c-2a3bc:kube-components-alert",
  13. "logs": "Get http://127.0.0.1:10251/healthz: dial tcp 127.0.0.1:10251: connect: connection refused",
  14. "rule_id": "c-2a3bc:kube-components-alert_scheduler-system-service",
  15. "severity": "critical"
  16. },
  17. "annotations": {},
  18. "startsAt": "2020-01-30T19:18:13.321684733Z",
  19. "endsAt": "0001-01-01T00:00:00Z",
  20. "generatorURL": ""
  21. }
  22. ],
  23. "groupLabels": {
  24. "component_name": "scheduler",
  25. "rule_id": "c-2a3bc:kube-components-alert_scheduler-system-service"
  26. },
  27. "commonLabels": {
  28. "alert_name": "Scheduler is unavailable",
  29. "alert_type": "systemService",
  30. "cluster_name": "mycluster (ID: c-2a3bc)"
  31. }
  32. }

后续操作

创建通知程序接收者后,设置告警以接收 Rancher 告警事件。