监控告警
通过配置 告警接收器 与 告警规则,Kubegems平台会在告警触发时将相关告警信息分发至对应渠道,同时,每条告警也会发送至平台内部,用以平台通知、存档。
告警规则
告警规则配置平台的告警策略,告警触发时按配置发送给对应的接收器
- 点击左上角,选择可观测性
- 在可观测性栏目,选择配置中心-监控配置
- 选择对应的项目-环境后,点击监控告警规则
小知识
你会关注到每个告警规则名称后跟了个状态栏,这是表示告警规则当前状态,分为三类:
- inactive : 表示当前告警规则正常,没有触发迹象
- pending : 表示当前时刻已经到达触发条件,但仍在评估中,如果在持续的 评估时间 内一直致满足触发条件,状态便会转为 firing
- firing : 表示当前告警规则正在告警
- 创建/编辑告警规则
- 配置告警规则触发条件
由模板生成:
由promql生成:
- 配置告警规则接收器
注意
告警规则按照环境进行了隔离,环境A中的接收器无法接受到环境B中产生的告警消息。原因是每条告警消息分发时按namespace
做了强制匹配,环境A的接收器收到的告警消息中,若没有对应的namespace
label会直接drop。
但若你是管理员用户,你会注意到有个system(平台全局)
的空间,在这里你能为所有namespace的资源(包括没有namespace标签的资源如node、cluster)配置告警规则而没有任何限制,这里的接收器也不会做强制的namespace匹配。
我们也在system(平台全局)
空间中预置了一系列告警规则,你可以自行修改。
告警规则字段及说明:
字段名 | 释义 |
---|---|
名称 | 告警规则名 |
命名空间 | 告警规则所在命名空间,kubegems-monitoring 为全局告警命名空间,其中配置的告警规则没有namespace 限制,其他命名空间的告警规则只对该命名空间生效 |
模式 | 告警规则支持两张模式配置:由模板生成 (指定资源-规则), 由promql生成 (填入原生promql),两种模式需要配置的字段互斥 |
资源、规则 | 也就是选择查询的模板及单位,普通用户只能选择有namespace 属性的模板 |
标签筛选 | 进一步筛选你关心的告警源(仅在由模板生成时有效) |
查询语句 | 触发告警规则的promql,如果不是在system空间,必须包含namespace选择器 |
抑制标签 | 当有多个告警级别时,通过此处配置的一个或多个标签来做告警抑制,更多请参考 https://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule |
评估时间 | 告警触发持续多久后才发送告警消息 |
告警级别 | 告警级别有重要 、紧急 , 同一条告警规则,告警级别不能重复,且当两个告警级别都触发是,紧急 的告警规则会抑制重要 的告警规则,避免不同等级告警重复发送 |
告警消息 | 配置告警消息的发送内容,如果为空,Kubegems会在你保存时自动生成告警消息,填写告警规消息时,你可以指定变量,详见告警消息引用变量规则 |
接收器 | 选择 告警渠道 作为此告警规则的接收器,你可以添加多个接收器 |
发送间隔 | 告警触发后,每隔多久向指定接收器发送一次告警,如30s 、5m 、1h |
注意
由于kubegems 使用alertmanager
作为告警分发,对于告警分发由多个时间参数控制,这里的发送间隔
会被应用为repeat_interval
, 除此之外还有group_wait
、group_interval
,我们默认设置为30s
。
你可以翻阅 alertmanager文档 了解更多
- 启用/禁用告警规则 你可以在告警规则列表,边界地启用/禁用指定告警规则。
若一条告警规则被禁用,他在 firing
状态下也不会发送告警信息。
告警消息引用变量规则
- 集群名称:
{{ $externalLabels.cluster }}
- 标签名: 你可以在 配置告警规则触发条件 时查看支持哪些标签,你可以这样引用该标签变量:
{{ $labels.<label_name> }}
- 触发值:
{{ $value }}
更多信息参考: https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/#templating