1 - 平台组件告警

本文档介绍了如何在 KubeCube 中配置平台级告警,包括配置集群内的 Alertmanager 、告警通知联系人、通知路由规则、告警规则。

简介

默认情况下,KubeCube 会在平台部署kubecube-monitoring Chart,该 Chart 包含 Alertmanager 组件和默认的 Alertmanager Config Secret配置以及平台基础组件的告警规则。默认情况下,KubeCube 创建的 Alertmanager Config Secret 不会因为 Chart 的升级或删除操作而被修改,以防用户的配置丢失。

准备工作

以平台管理员角色登录 KubeCube 平台。

配置 AlertManager

登录到 KubeCube 平台,点击【运维管理】,侧边栏选择【告警–全局告警配置】,列表页可以看到各个集群的AlertManager 的配置信息,点击【设置】按钮进行配置,

全局配置

am-global

若使用企业邮箱作为告警通知方式,需要在全局配置中配置以下字段:

  • smtp_smarthost : 邮箱服务器域名和端口信息,e.g. imap.163.com:465
  • smtp_from : 发件人邮箱
  • smtp_auth_username : 邮件服务器认证用户名
  • smtp_auth_password : 邮件服务器认证密码或授权码

若使用企业微信作为告警通知方式,需要在全局配置中配置以下字段:

  • wechat_api_url : 默认使用https://qyapi.weixin.qq.com/cgi-bin/
  • wechat_api_secret : 第三方企业应用的密钥
  • wechat_api_corp_id : 企业微信账号唯一 ID

通知方式

目前页面支持配置Email、WeChat、Webhook三种联系方式,其他联系方式如Slack、OpsEngine等会在后续版本支持 am-receivers

更多字段含义请参考Alertmanager官方文档中关于receivers的定义

通知路由规则

相关配置如下:

  • receiver : 选择上一步骤中定义的联系人
  • group_by : 当前 route 节点的分组规则
  • matchers : 当前 route 节点的匹配规则
  • group_wait : 告警组内的发送一条告警通知的等待时间
  • group_interval : 告警组内发送两条告警通知的间隔时间
  • repeat_interval : 相同告警发送的间隔时间

am-route

更多字段含义请参考Alertmanager官方文档中关于route的定义,当前页面暂不支持子路由的配置,会在后续版本提供支持。

管理告警规则

查看告警规则组

登录到 KubeCube 平台,点击【运维管理】,侧边栏选择【告警–告警规则】,列表页可以看到各个集群的PrometheusRule 的配置信息,默认情况下, KubeCube 为每个集群内置了基础资源以及平台组件的 PrometheusRule,

component-alerting

配置告警规则内容

可以点击【设置】按钮查看并配置每条告警规则的具体内容,包括

  • 表达式 : Promql表达式
  • for : 告警持续时长
  • 告警程度 : 可以在上述 通知方式中配置不同告警程度对应的 Receiver 来接收告警通知
  • Annotations
    • 摘要: 接收告警通知的摘要信息
    • 描述信息: 接收告警通知的具体描述信息,如发生故障的 Pod 所在的集群,空间等
    • Runbook Url: 针对该告警规则的运维排障文档,应作为最佳实践在企业内部进行维护
    • 也可以【展开更多配置】,添加更多自定义的Annotations(键-值对)
  • Labels: 为告警规则附带的标签信息(键-值对),可以配合通知路由规则 实现告警通知的高级配置

component-PrometheusRule

更多字段含义请参考Prometheus-Operator的API文档

2 - 通知策略管理

本文档介绍了如何在 KubeCube 中管理项目级别的告警联系人与通知策略。

准备工作

登录 KubeCube 平台并创建租户、项目、空间

联系人管理

推荐在一个告警通知策略内配置多个联系人,代表联系人组信息,而不是为每个联系人都创建一个通知策略。

  1. 登录到 KubeCube 控制台,选择租户项目后,侧边栏展开【告警】菜单,选择【告警策略组】,并点击创建.

  2. 弹出对话框后,填写告警联系人基本信息,目前页面支持配置Email、WeChat、Webhook三种联系方式,其他联系方式如Slack、OpsEngine等会在后续版本支持,如有需求可以通过列表页的【yaml配置】进行设置。

  • 名称: 标识联系人组的名称,如"frontend",在后续创建告警规则时作为关联。

Email配置

create-amc-email

  • 是否接收告警恢复通知
  • 收件人: 收件人的邮箱地址
  • 更多配置: 注意:以下配置默认使用集群全局配置,可以询问集群管理员获知。
    • smarthost: 邮箱服务器域名和端口信息,e.g. imap.163.com:465
    • from: 发件人邮箱
    • authUsername: 邮件服务器认证用户名
    • authPassword: 邮件服务器认证密码,需要提前在项目空间(kubecube-project-)创建一个Secret,再指定Secret和key
      • Secret: 选择已创建的Secret的名称
      • key: 选择指定Secret的key

更多配置请参考EmailConfig

WeChat配置

create-amc-wechat

  • 是否接收告警恢复通知
  • toUser: 接收告警通知的企业微信用户名
  • toParty: 接收告警通知的企业微信用户组
  • toTag: 接收告警通知的企业微信用户标签
  • 更多配置: 注意:以下配置默认使用集群全局配置,可以询问集群管理员获知。
    • apiURL: 微信第三方通知的apiURL
    • corpID: 企业微信账号唯一 ID,可以在我的企业中查看。
    • agentID: 第三方企业应用的 ID,可以在已创建的第三方企业应用详情页面查看。
    • apiSecret: 需要根据第三方企业应用的密钥,提前在项目空间(kubecube-project-)创建一个Secret,再指定Secret和key
      • Secret: 选择已创建的Secret的名称
      • key: 选择指定Secret的key

更多配置请参考企业微信文档以及WeChatConfig

Webhook配置

create-amc-webhook

  • 是否接收告警恢复通知
  • url: Webhook的url,用来接受HTTP POST请求
  • max_alerts: Alertmanager一次发往webhook通知中,包含告警的最大数量,当超过该值,告警会被截断,默认为全部发送。

更多配置参考WebhookConfig

高级功能

KubeCube 告警通知策略组支持高级策略配置,如

  • 配置告警组内的发送一条告警通知的等待时间(group_wait)
  • 配置告警组内发送两条告警通知的间隔时间(group_interval)
  • 配置相同告警发送的间隔时间(repeat_interval)
  • 配置嵌套的告警路由策略
  • 配置告警抑制规则

如果需要实现更灵活的自定义通知策略,可以通过点击【列表】页面的【yaml设置】进行设置与修改,相关字段请参考AlertmanagerConfig-CRD文档, 具体字段含义请参考Alertmanager配置

3 - 告警规则管理

本文档介绍了如何在 KubeCube 中管理项目级告警规则。

准备工作

  1. 登录 KubeCube 平台并创建租户、项目、空间
  2. 创建告警通知策略

告警规则管理

创建告警规则

  1. 登录到 KubeCube 控制台,选择租户项目后,侧边栏展开【告警】菜单,选择【告警规则】,并点击创建.
  2. 填写告警规则基本信息:

create-alertrule

  • 告警名称: 告警规则名称
  • 表达式:promql表达式,具体配置方式请参考prometheus文档
  • 持续时间:代表告警规则表达式持续被触发的时长,如果达到该期望时间,就触发一条告警。
  • 告警程度:告警程度信息
  • 通知策略组:选择告警触发后需要通知的联系人与相应的通知策略。
  • 告警描述信息: 告警触发后发送的告警描述信息,具体配置方式请参考Prometheus告警规则模版配置

告警状态查询

list-alertrule

在告警规则列表页面,可以查看项目下所有告警规则的状态,状态包含以下三种:

  • normal: 代表该告警规则未触发告警
  • pending: 代表告警规则被触发,但未达到期望持续时间。
  • firing:代表告警规则被触发,并达到期望持续时间。

点击【告警名称】的状态,可以查看触发该告警规则的具体对象信息,如空间信息,Pod信息等,静默功能将在后续版本中支持。