普罗米修斯-告警规则

普罗米修斯告警规则是Prometheus监控系统中用于定义告警条件的核心配置,通过Alertmanager组件实现告警通知。告警规则基于PromQL查询表达式,当指标数据满足特定条件时触发告警。

告警规则基本结构

告警规则通常以YAML格式配置,包含以下关键字段:

复制代码
groups:
- name: example
  rules:
  - alert: HighRequestLatency
    expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
    for: 10m
    labels:
      severity: page
    annotations:
      summary: "High request latency (instance {{ $labels.instance }})"
      description: "{{ $labels.job }} has a high request latency above 0.5s (current value: {{ $value }}s)"

核心配置参数

alert:告警名称,用于标识告警类型

expr:PromQL表达式,定义告警触发条件,例如:

  • up == 0:服务不可用

  • node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10:内存使用率超过90%

  • rate(http_requests_total{code="500"}[5m]) / rate(http_requests_total[5m]) * 100 > 5:5xx错误率超过5%

for:持续时间,表示条件持续满足多长时间才触发告警,避免瞬时抖动

labels:标签集合,用于告警路由和分组,常见标签包括:

  • severity: critical/warning/info

  • team: devops/backend/frontend

annotations :告警详情,支持模板变量,如{``{ $labels.instance }}、{``{ $value }}

常用告警规则示例

1. 服务可用性告警

复制代码
- alert: ServiceDown
  expr: up == 0
  for: 1m
  labels:
    severity: critical
  annotations:
    summary: "服务 {{ $labels.job }} 已下线"
    description: "实例 {{ $labels.instance }} 已超过1分钟不可用"

2. CPU使用率告警

复制代码
- alert: HighCpuUsage
  expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: "CPU使用率过高 (instance {{ $labels.instance }})"
    description: "CPU使用率超过80% (当前值: {{ $value }}%)"

3. 内存使用率告警

复制代码
- alert: HighMemoryUsage
  expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 85
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: "内存使用率过高 (instance {{ $labels.instance }})"
    description: "内存使用率超过85% (当前值: {{ $value }}%)"

4. 磁盘使用率告警

复制代码
- alert: HighDiskUsage
  expr: (node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_avail_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100 > 80
  for: 10m
  labels:
    severity: warning
  annotations:
    summary: "磁盘使用率过高 (instance {{ $labels.instance }})"
    description: "根分区使用率超过80% (当前值: {{ $value }}%)"

5. 网络错误率告警

复制代码
- alert: HighNetworkErrorRate
  expr: rate(node_network_receive_errs_total[5m]) / rate(node_network_receive_packets_total[5m]) * 100 > 1
  for: 2m
  labels:
    severity: warning
  annotations:
    summary: "网络接收错误率过高 (instance {{ $labels.instance }})"
    description: "网络接收错误率超过1% (当前值: {{ $value }}%)"

告警规则最佳实践

  1. 合理设置for持续时间:避免瞬时抖动触发告警,建议根据业务场景设置1-10分钟

  2. 使用标签分组 :通过group_by在Alertmanager中实现告警分组,避免告警风暴

  3. 设置告警静默:对于计划内维护,提前设置静默规则

  4. 告警分级:根据影响范围设置不同严重级别(critical/warning/info)

  5. 定期评审告警规则:清理无效告警,优化告警阈值

  6. 测试告警规则 :使用promtool验证规则语法,确保告警能正常触发

告警规则文件加载

告警规则文件通常通过Prometheus配置文件中的rule_files字段加载:

复制代码
rule_files:
  - "rules/*.yml"
  - "first_rules.yml"

配置完成后,需要重启Prometheus服务或通过/-/reload端点热加载配置。

相关推荐
ZENERGY-众壹18 小时前
光伏监控平台实测,三款时序数据库在 50 万测点下的真实表现
数据库·架构·运维开发·时序数据库·光伏运维
曹牧2 天前
在Win7上找回SVN密码
运维开发
迪康Defender7 天前
终端安全运维:浅谈迪康端点安全一体化管理系统工具箱实用能力
运维·安全·信息可视化·自动化·运维开发·学习方法·远程工作
迪康Defender10 天前
终端安全行为分析:审计日志如何转化为业务报表?落地实践与避坑指南
运维·经验分享·安全·信息可视化·自动化·安全威胁分析·运维开发
迪康Defender13 天前
终端安全审批体系设计:如何平衡安全管控与业务连续性
运维·服务器·安全·运维开发·学习方法·业界资讯·远程工作
rememberme00113 天前
Windows Server 服务器监控部署文档(Prometheus + Grafana)
运维开发·数据可视化
daxiangxm16 天前
GEO策略:让AI直接引用你的内容
开发语言·团队开发·运维开发·个人开发·数据库开发
迪康Defender18 天前
终端安全事后追溯能力解析:本地审计模块设计思路与落地实践
运维·开发语言·人工智能·安全·php·安全威胁分析·运维开发
森叶24 天前
零成本上线插件官网:万网域名 + Cloudflare Pages + Nuxt 4 全流程实录
运维开发
我命由我123451 个月前
Git 推送报错:error: src refspec main does not match any
运维·git·gitee·github·运维开发·学习方法·版本控制