• 定义记录规则
    • " level="2">规则配置
    • " level="2">规则语法检查
    • " level="2">记录规则
      • " level="3"><rule_group>
      • " level="3"><rule>

    定义记录规则

    规则配置

    Prometheus 支持两种经过配置之后可以定期进行评估的规则:记录规则和告警规则。要将规则应用在 Prometheus 中,请创建一个包含必要规则语句的文件,并通过 Prometheus 配置中的rule_files字段加载该文件。规则文件使用 YAML

    通过发送SIGHUP信号到 Prometheus 进程,可以在运行时重新加载规则文件。仅当所有规则文件的格式正确时,才会应用更改。

    规则语法检查

    要在不启动 Prometheus 的情况下快速检查规则文件在语法上是否正确,请安装并运行 Prometheus 的promtool命令行工具:

    1. go get github.com/prometheus/prometheus/cmd/promtool
    2. promtool check rules /path/to/example.rules.yml

    当该文件语法合法时,检查器将已解析的规则文本表达式打印到标准输出,然后退出,状态码为 0。

    如果有任何语法错误或非法的输入参数,它将打印一条错误消息到标准错误,然后退出,状态码为 1。

    记录规则

    记录规则使您可以预先计算经常或计算量大的表达式,并将结果保存为一组新的时间序列。查询预计算结果通常比每次执行原始表达式要快得多。这对于每次刷新时都需要重复查询相同的表达式的仪表板特别有用。

    记录和告警规则存在于规则组中,组中的规则以定期的时间间隔顺序运行。记录和告警规则的名称必须是合法的数据指标名称

    规则文件的语法是:

    1. groups:
    2. [ - <rule_group> ]

    简单的示例规则文件如下:

    1. groups:
    2. - name: example
    3. rules:
    4. - record: job:http_inprogress_requests:sum
    5. expr: sum(http_inprogress_requests) by (job)

    <rule_group>

    1. # 组的名称。一个文件中必须唯一
    2. name: <string>
    3. # 评估组中规则的频率
    4. [ interval: <duration> | default = global.evaluation_interval ]
    5. rules:
    6. [ - <rule> ... ]

    <rule>

    记录规则的语法如下:

    1. # 要输出到的新的时间序列的名称。必须是合法的数据指标名称
    2. record: <string>
    3. # 要执行的 PromQL 表达式。每隔执行周期的时间,表达式都会在当前时间进行执行,并将结果记录为一组新的时间序列,其数据指标名称由 "record" 给出
    4. expr: <string>
    5. # 存储结果之前要添加或覆盖的标签
    6. labels:
    7. [ <labelname>: <labelvalue> ]

    告警规则的语法如下:

    1. # 告警名称。必须是合法的数据指标名称
    2. alert: <string>
    3. # 要执行的 PromQL 表达式。每隔执行周期的时间,表达式都会在当前时间进行执行,所有结果时间序列都会变成 pending/firing 告警
    4. expr: <string>
    5. # 一旦持续返回告警多长时间,则将其视为 firing 告警
    6. # 尚未触发足够长时间的告警被视为 pending
    7. [ for: <duration> | default = 0s ]
    8. # 为每个告警添加或覆盖的标签
    9. labels:
    10. [ <labelname>: <tmpl_string> ]
    11. # 为每个告警添加的注解
    12. annotations:
    13. [ <labelname>: <tmpl_string> ]