Prometheus

56142
下载
Prometheus 是一个开源的监控和告警系统,专注于时间序列数据的采集与存储。由 SoundCloud 开发,配备高级查询语言PromQL,便于数据挖掘与分析,并无缝对接多种可视化平台。

告警规则


告警规则允许你基于 Prometheus 表达式语言表达式定义告警条件,并向外部服务发送有关触发告警的通知。每当告警表达式在给定时间点的结果为一个或多个向量元素时,这些元素的标签集将被视为活跃的。

定义告警规则

告警规则与记录规则可以以相同的方式在 Prometheus 中配置。

以下是一个包含告警的规则文件示例:

groups:
- name: example
rules:
- alert: HighRequestLatency
expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
for: 10m
labels:
severity: page
annotations:
summary: 高请求延迟

可选的for子句使得 Prometheus 在首次遇到新表达式输出向量元素后等待一段时间,然后才将告警设置为 firing(触发)状态。也就是,Prometheus 将在每次评估期间检查告警是否持续活跃10分钟以上,然后触发告警。活跃但尚未进入 firing 状态的元素会处于 pending(等待)状态。
没有for子句的告警规则将在首次评估时立即激活。

labels子句允许指定一组附加标签,用于附加到告警上。现有的冲突标签将被覆盖。标签值可以进行模板化。

annotations子句指定一组用于存储更详细信息(如告警描述或运行手册链接)的元数据标签。注释值可以进行模板化。

模板化

标签和注释值可以使用控制台模板进行模板化。$labels变量持有告警实例的标签键/值对。配置的外部标签可以通过$externalLabels变量访问。$value变量持有告警实例计算的数值。

# 插入触发元素的标签值:
{{ $labels.<labelname> }}
# 插入触发元素的表达式数值:
{{ $value }}

示例:

groups:
- name: example
rules:
# 对于任何无法访问超过5分钟的实例发出告警。
- alert: InstanceDown
expr: up == 0
for: 5m
labels:
severity: page
annotations:
summary: "Instance {{ $labels.instance }} down"
description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes."
# 对于任何具有中位请求延迟 > 1秒的实例发出告警。
- alert: APIHighRequestLatency
expr: api_http_request_latencies_second{quantile="0.5"} > 1
for: 10m
annotations:
summary: "High request latency on {{ $labels.instance }}"
description: "{{ $labels.instance }} has a median request latency above 1s (current value: {{ $value }}s)"

运行时检查告警

要手动检查当前哪些告警处于活跃状态(pending 或 firing),跳转至 Prometheus 实例的“Alerts”选项卡。这将显示当前处于活动状态的告警的确切标签集。

对于状态为 pending 和 firing 的告警,Prometheus 还存储了合成时间序列(synthetic time series),形式为ALERTS{alertname="<alert name>", alertstate="<pending or firing>", <additional alert labels>}。样本在告警处于活跃状态时被设置为1,当告警不再活跃时,该序列会被标记为过期。

发送告警通知

Prometheus 的告警规则擅长确定当前出了什么问题,但它们并不是完备的通知解决方案。因此,我们还需要另一层服务来添加总结、通知速率限制、静默和解决告警依赖性等功能。在 Prometheus 的生态系统中,Alertmanager 承担了这一角色。因此,Prometheus 可以配置为定期将告警状态信息发送到 Alertmanager 实例,然后 Alertmanager 负责分发正确的通知。
Prometheus 可以配置自动通过其服务发现功能发现可用的 Alertmanager 实例。

该文档基于 Prometheus 官方文档翻译而成。


observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32