好的,下面是一个示例 Prometheus 配置文件中针对 Nginx 的告警规则:
groups:
- name: nginx.rules
rules:
- alert: HighRequestRate
expr: sum(rate(nginx_http_requests_total{status=~"2.."}[5m])) by (server) > 1000
for: 10m
labels:
severity: warning
annotations:
summary: High request rate on {{ $labels.server }}
description: The request rate is {{ $value }} per second on {{ $labels.server }}.
- alert: High5xxErrorRate
expr: sum(rate(nginx_http_requests_total{status=~"5.."}[5m])) / sum(rate(nginx_http_requests_total[5m])) by (server) > 0.05
for: 10m
labels:
severity: critical
annotations:
summary: High 5xx error rate on {{ $labels.server }}
description: The error rate is {{ printf "%.2f" $value }}%% on {{ $labels.server }}.
这个配置文件定义了两个告警规则。第一个告警规则 HighRequestRate
检测每台服务器在过去五分钟内的请求速率是否超过了1000次/秒,并且持续时间达到了10分钟。如果是,那么将会触发一个warning级别的告警。
第二个告警规则 High5xxErrorRate
检测每台服务器在过去五分钟内的500错误率是否超过了总请求数量的5%。如果是,那么将会触发一个critical级别的告警。
你可以将这个配置文件保存为 nginx.rules.yml
,然后在 Prometheus 配置文件中引入它:
rule_files:
- "nginx.rules.yml"
当 Prometheus 检测到 Nginx 监控数据中符合上述规则时,就会触发告警,并且可以通过 Alertmanager 进行通知处理。