Prometheus作为云原生监控的事实标准,提供了强大的指标收集和告警功能。Alertmanager作为Prometheus的告警管理组件,负责处理、分组、路由和静默告警通知。本文将深入探讨如何在生产环境中配置和使用Prometheus与Alertmanager,构建高可用、可扩展的告警系统。
Prometheus告警配置
1. 告警规则配置
Prometheus通过告警规则文件定义告警条件和触发逻辑:
# alert-rules.yml
groups:
- name: example-alerts
rules:
# 服务可用性告警
- alert: ServiceDown
expr: up == 0
for: 2m
labels:
severity: critical
annotations:
summary: "服务 {{ $labels.job }} 不可用"
description: "服务 {{ $labels.job }} 实例 {{ $labels.instance }} 已经不可用超过2分钟"
runbook_url: "https://internal.wiki/runbooks/service-down"
# 高CPU使用率告警
- alert: HighCPUUsage
expr: rate(node_cpu_seconds_total{mode!="idle"}[2m]) > 0.8
for: 5m
labels:
severity: warning
annotations:
summary: "主机 {{ $labels.instance }} CPU使用率过高"
description: "主机 {{ $labels.instance }} 的CPU使用率持续5分钟超过80%"
value: "{{ $value }}"
# 高内存使用率告警
- alert: HighMemoryUsage
expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes > 0.85
for: 10m
labels:
severity: warning
annotations:
summary: "主机 {{ $labels.instance }} 内存使用率过高"
description: "主机 {{ $labels.instance }} 的内存使用率持续10分钟超过85%"
value: "{{ $value }}"
# 高磁盘使用率告警
- alert: HighDiskUsage
expr: (node_filesystem_size_bytes - node_filesystem_free_bytes) / node_filesystem_size_bytes > 0.9
for: 15m
labels:
severity: critical
annotations:
summary: "主机 {{ $labels.instance }} 磁盘使用率过高"
description: "主机 {{ $labels.instance }} 挂载点 {{ $labels.mountpoint }} 的磁盘使用率持续15分钟超过90%"
value: "{{ $value }}"
# HTTP错误率告警
- alert: HighHttpErrorRate
expr: rate(http_requests_total{code=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.05
for: 2m
labels:
severity: critical
annotations:
summary: "服务 {{ $labels.job }} HTTP错误率过高"
description: "服务 {{ $labels.job }} 的5xx错误率持续2分钟超过5%"
value: "{{ $value }}"
2025/8/31大约 7 分钟
