Prometheus 告警规则配置

alert.rules是Prometheus中的自定义告警规则,基于PromQL表达式定义条件,当条件满足时触发告警。告警可通过Alertmanager进行复杂的通知配置,如通过多种通信渠道发送。规则配置包括告警名称、条件表达式、评估时间、标签和描述,并支持模板变量用于动态插入数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

告警规则(alert.rules)是什么

alert.rule即告警规则,在Prometheus中,通过用户自定义的条件进行告警,自定义条件可以由PromQL表达式定义,当满足告警条件后,Prometheus会通过web界面进行告警,如果同时有部署Alertmanager,则可利用Alertmanager进行更为复杂的通知,如钉钉、微信、飞书等个性化渠道进行通知。

配置解析

alert.rules风格跟yaml风格类似

groups:
- name: example # 组名称
  rules: # 告警规则
  - alert: HighErrorRate # 告警规则名称
    expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5 # 达成条件
    for: 10m # 评估时间 可选参数
    labels: # 自定义标签
      severity: page
    annotations: # 描述
      summary: High request latency
      description: description info

alert.rules配置调整后,同时需要在prometheus.yml中的rule_files进行配置才能让配置的规则生效。

prometheus.yml文件的相关配置如下

rule_files:
   - 'xxx_rules.yaml'

变量支持

在annotations的summary与description都是支持模版变量的,形式如下

annotations:
      summary: "High request latency on {{ $labels.instance }}"
      description: "{{ $labels.instance }} has a median request latency above 1s (current value: {{ $value }}s)"

其中模版变量支持两种类型,$labels.<labelname>$value$labels.<labelname>变量支持告警实例指定标签的值,$value则是获取当前PromQL计算的变量(expr里表达式的值)。

示例

同样以邮件发送为例,如果在一分钟内出现发送失败,或者发送错误就触发告警,并将客户名称显示出来。

告警规则配置

告警规则配置email.yaml

groups:
  - name: email
    rules:
      - alert: email_send_error
        expr: rate(email_send_counter_total{status="error"}[1m]) > 0
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "{{ $labels.client }} email send success"
          description: "client {{ $labels.client }} email send success total {{ $value }}"

      - alert: email_send_fail
        expr: rate(email_send_counter_total{status="fail"}[1m]) > 0
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "{{ $labels.client }} email send fail"
          description: "client {{ $labels.client }} email send error total {{ $value }}"

触发告警

短时间内调用api /email_count?client=aaa&status=fail

告警展示

在这里插入图片描述

### 自定义Prometheus告警规则 Prometheus 提供了一种灵活的方式来创建自定义告警规则。这些规则被定义在一个或多个YAML 文件中,通常命名为 `rules.yml` 或者类似的名称[^1]。 #### 告警规则文件结构 告警规则文件遵循特定的语法格式: ```yaml groups: - name: example rules: - alert: HighRequestLatency expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5 for: 10m labels: severity: page annotations: summary: "High request latency on {{ $labels.instance }}" description: "{{ $labels.instance }} has a median request latency above 0.5s (current value: {{ $value }}s)" ``` 这段配置表示当某个实例在过去5分钟内的平均请求延迟超过0.5秒,并持续这种情况达10分钟后触发告警告警级别设置为“page”,并且提供了简短描述和详细说明。 #### 创建新的告警规则 为了向现有Prometheus部署添加新规则,需编辑或新建一个 `.yml` 文件,在其中按照上述模板编写所需监控指标及其对应的条件表达式。完成后更新 Prometheus 的主要配置文件 (`prometheus.yml`) 来指向这个包含规则的新位置: ```yaml rule_files: - "path/to/rules/*.yml" ``` 这使得 Prometheus 能够加载并应用所定义的所有告警逻辑。 #### 测试与验证 一旦完成了规则文件的修改,建议先通过命令行工具如 `promtool` 对其有效性进行检验,确保不会因为错误而影响整个系统的正常运行。例如可以执行如下命令来检查规则文件是否有误: ```bash promtool check rules path/to/your_rule_file.yml ``` 如果一切顺利,则重启 Prometheus 实例使更改生效;如果有任何问题则根据提示修正后再试一次。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值