监控告警规则:高 5xx 错误率 / 高 P95 延迟 / RAG 高重试率 / 内存超限
一句话:监控告警规则用于在指标异常时触发告警,帮助及时发现和处理问题。常见的告警规则包括高5xx错误率、高P95延迟、RAG高重试率、内存超限等。
1. 告警规则基础
1.1 什么是告警规则?
graph LR A[指标异常] --> B[触发告警] B --> C[通知团队] C --> D[处理问题] style A fill:#ffebee style D fill:#e8f5e8
告警规则:定义在什么条件下触发告警,以及如何通知相关人员。
1.2 Prometheus告警规则
# alert_rules.yml
groups:
- name: example
rules:
- alert: HighErrorRate
expr: sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) > 0.05
for: 5m
labels:
severity: critical
annotations:
summary: "高错误率告警"
description: "错误率超过5%,当前值: {{ $value }}"
2. 常见告警规则
2.1 高5xx错误率
groups:
- name: http
rules:
- alert: High5xxErrorRate
expr: sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) > 0.05
for: 5m
labels:
severity: critical
annotations:
summary: "高5xx错误率"
description: "5xx错误率超过5%,当前值: {{ $value }}"
2.2 高P95延迟
groups:
- name: http
rules:
- alert: HighP95Latency
expr: histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) > 2
for: 5m
labels:
severity: warning
annotations:
summary: "高P95延迟"
description: "P95延迟超过2秒,当前值: {{ $value }}"
2.3 RAG高重试率
groups:
- name: rag
rules:
- alert: HighRAGRetryRate
expr: rate(rag_retries_total[5m]) > 0.1
for: 5m
labels:
severity: warning
annotations:
summary: "RAG高重试率"
description: "RAG重试率超过10%,当前值: {{ $value }}"
2.4 内存超限
groups:
- name: system
rules:
- alert: HighMemoryUsage
expr: process_resident_memory_bytes / 1024 / 1024 > 1024
for: 5m
labels:
severity: warning
annotations:
summary: "内存使用过高"
description: "内存使用超过1GB,当前值: {{ $value }}MB"
3. 高级告警规则
3.1 多条件告警
groups:
- name: advanced
rules:
- alert: HighErrorRateAndLatency
expr: |
sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) > 0.05
and
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) > 2
for: 5m
labels:
severity: critical
annotations:
summary: "高错误率和高延迟"
description: "错误率和延迟同时过高"
3.2 预测性告警
groups:
- name: predictive
rules:
- alert: PredictedMemoryExhaustion
expr: predict_linear(process_resident_memory_bytes[1h], 3600) > 2 * 1024 * 1024 * 1024
for: 10m
labels:
severity: warning
annotations:
summary: "预测内存将耗尽"
description: "预测1小时后内存将超过2GB"
3.3 组合告警
groups:
- name: composite
rules:
- alert: ServiceDegraded
expr: |
(
sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) > 0.05
)
or
(
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) > 2
)
or
(
rate(llm_errors_total[5m]) > 0.1
)
for: 5m
labels:
severity: critical
annotations:
summary: "服务降级"
description: "多个指标异常,服务可能降级"
4. 告警通知
4.1 通知渠道
# prometheus.yml
alerting:
alertmanagers:
- static_configs:
- targets:
- alertmanager:9093
# alertmanager.yml
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'web.hook'
receivers:
- name: 'web.hook'
webhook_configs:
- url: 'http://127.0.0.1:5001/'
4.2 通知模板
# alertmanager.yml
templates:
- '/etc/alertmanager/*.tmpl'
# alertmanager.tmpl
{{ define "alertmanager.webhook.default.message" }}
{{ range .Alerts }}
告警名称: {{ .Labels.alertname }}
告警级别: {{ .Labels.severity }}
告警描述: {{ .Annotations.description }}
告警时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
{{ end }}
{{ end }}
5. 实际案例
5.1 AI应用告警规则
groups:
- name: ai-app
rules:
# LLM调用错误率
- alert: HighLLMErrorRate
expr: sum(rate(llm_requests_total{status="error"}[5m])) / sum(rate(llm_requests_total[5m])) > 0.1
for: 5m
labels:
severity: critical
annotations:
summary: "LLM调用错误率高"
description: "LLM调用错误率超过10%"
# RAG查询延迟
- alert: HighRAGLatency
expr: histogram_quantile(0.95, rate(rag_query_duration_seconds_bucket[5m])) > 5
for: 5m
labels:
severity: warning
annotations:
summary: "RAG查询延迟高"
description: "RAG查询P95延迟超过5秒"
# Token使用量
- alert: HighTokenUsage
expr: rate(llm_tokens_total[5m]) > 1000
for: 5m
labels:
severity: warning
annotations:
summary: "Token使用量高"
description: "Token使用速率超过1000/分钟"
5.2 电商系统告警规则
groups:
- name: ecommerce
rules:
# 订单错误率
- alert: HighOrderErrorRate
expr: sum(rate(order_errors_total[5m])) / sum(rate(orders_total[5m])) > 0.02
for: 5m
labels:
severity: critical
annotations:
summary: "订单错误率高"
description: "订单错误率超过2%"
# 支付延迟
- alert: HighPaymentLatency
expr: histogram_quantile(0.95, rate(payment_duration_seconds_bucket[5m])) > 3
for: 5m
labels:
severity: warning
annotations:
summary: "支付延迟高"
description: "支付P95延迟超过3秒"
6. 常见坑点
1. 告警阈值不合理
# 问题:阈值太低,频繁告警
- alert: HighErrorRate
expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.001 # 太敏感
# 解决:根据实际情况调整阈值
- alert: HighErrorRate
expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.05 # 合理阈值
2. 告警等待时间太短
# 问题:等待时间太短,导致告警风暴
- alert: HighErrorRate
for: 1m # 太短
# 解决:增加等待时间
- alert: HighErrorRate
for: 5m # 合理等待时间
3. 缺少告警升级
# 解决:设置告警升级机制
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'team-leads'
routes:
- match:
severity: critical
receiver: 'on-call'
核心要点
# 基础告警规则
- alert: AlertName
expr: 指标表达式
for: 等待时间
labels:
severity: critical/warning
annotations:
summary: "告警标题"
description: "告警描述"
# 常见告警
高5xx错误率: sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) > 0.05
高P95延迟: histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) > 2
内存超限: process_resident_memory_bytes / 1024 / 1024 > 1024
速记卡(面试闪卡)
Q1:一句话讲清「监控告警规则:高 5xx 错误率 / 高 P95 延迟 / RAG 高重试率 / 内存超限」到底是什么?
A:告警规则就是给系统装”烟雾报警器”:指标越界自动喊人,别等用户投诉才知情。
Q2:一、告警规则基础 —— 怎么理解? —— 怎么理解?
A:像给家里装烟雾报警器:你先定好”烟浓度超阈值就尖叫”,不用蹲门口死盯。Prometheus 的 alert rule 就是这条规则——expr 描述”什么算异常”,for 表示”持续多久才算数”,防一抖就误报。核心英文:alert rule(告警规则)。
Q3:二、四类典型告警 —— 怎么理解? —— 怎么理解?
A:像体检四项指标:5xx 错误率看”服务是不是在乱报错”,P95 延迟看”响应慢得像在睡觉”,RAG 重试率看”检索是不是反复扑空”,内存超限看”会不会撑爆进程”。每条都是一条 expr + 阈值。英文:error rate / latency P95 / retry rate / OOM。
Q4:三、高级玩法:组合与预测 —— 怎么理解? —— 怎么理解?
A:像保安不只盯一个点:多条件告警要”错误率 AND 延迟同时高”才叫;预测性告警用 predict_linear 推”按这势头一小时后会爆内存”,提前喊人;组合告警是”或”关系,任一异常就降级。英文:composite alert / predictive alerting。
Q5:四、通知与常见坑 —— 怎么理解? —— 怎么理解?
A:像报警器响了得有人接:Alertmanager 按 route 把告警发给 webhook 或邮件,group 防刷屏,severity 决定叫不叫 on-call。坑点:阈值太低变”狼来了”、for 太短炸出告警风暴、缺升级机制全压一人。英文:Alertmanager / routing / alert fatigue。
Q6:核心速记主线有哪些?
-
本质:告警规则=指标越界自动触发+通知,帮及时止损而非事后救火
-
四类常配:高 5xx 错误率、高 P95 延迟、RAG 高重试率、内存超限
-
关键参数:expr 定异常、for 防抖动、severity 分级、labels 打标
-
高级形态:多条件/预测性/组合告警,从”事后”转向”提前”
-
避坑:阈值合理、等待时长够、配升级路由,别养出告警疲劳
口诀
A:告警规则似烟感,越界自动把人喊;
四类常查错延满,P95重试内存缓;
组合预测提前防,阈值等待莫走偏;
通知升级层层传,线上安稳少慌乱。
相关链接
-
📋 目录:00-可观测性与监控
-
📚 学习清单:技术学习路线图 > 可观测性与监控