vmalert
vmalert 支持使用 Prometheus 风格的 YAML 配置定义 alerting rules 和 recording rules, 并通过 Prometheus HTTP API 查询 GreptimeDB,以评估规则表达式。
将 vmalert 与 GreptimeDB 集成时,推荐使用 1.148.4 或更高版本。
定义规则
vmalert 使用与 Prometheus 类似的 YAML 规则配置格式。支持的配置选项请参阅 vmalert 官方规则文档。
以下示例包含一条 alerting rule 和一条 recording rule,均使用 PromQL
表达式查询 GreptimeDB。示例假设数据库中已有 up 指标和
http_requests_total counter 指标,且两者均包含 job 标签。
其中 alerting rule 监控 job="api" 的目标,请按实际的 job 标签值调整。
将以下内容保存为 /etc/vmalert/greptimedb-rules.yaml:
groups:
- name: greptimedb
interval: 1m
rules:
- alert: InstanceDown
expr: up{job="api"} == 0
for: 5m
labels:
severity: warning
annotations:
summary: "API instance is down"
- record: job:http_requests:rate5m
expr: sum by (job) (rate(http_requests_total[5m]))
该规则组的执行间隔为 1 分钟,两条规则的作用分别如下:
InstanceDown:当某条job="api"的时间序列持续满足up == 0达到 5 分钟时,告警进入 firing 状态。job:http_requests:rate5m:计算过去 5 分钟的平均 HTTP 请求速率,按job汇总后通过远程写入端点保存到 GreptimeDB。该指标可用于流量仪表盘和告警, 无需重复计算请求速率。