第六章、Prometheus告警
发布日期:2021-05-17 08:32:02 浏览次数:20 分类:精选文章

本文共 3237 字,大约阅读时间需要 10 分钟。

Prometheus 告警配置与故障监控实践

一、告警配置前的准备工作

在开始配置之前,需要完成以下准备工作:

1. 安装Prometheus和Alertmanager

Prometheus和Alertmanager均需要在服务器上预先安装并配置。例如,在172.16.3.225服务器上执行以下命令:

#下载并安装Alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
tar zxf alertmanager-0.21.0.linux-amd64.tar.gz
cd alertmanager-0.21.0.linux-amd64

2. 配置Prometheus.yml

编辑prometheus.yml文件,确保配置中包含了Alertmanager的地址和告警规则路径。修改后的文件结构如下:

global:
scrape_interval: 1m # 描绘间隔
evaluation_interval: 1m # 评估间隔
Alertmanager配置:
scrape_config:
- scrape_targets: ['http://127.0.0.1:9093']
- targets: ['http://127.0.0.1:9093']
- application: prometheus
rules_path: 'rules/*.yml' #告警规则存储路径

3. 部署配置完成后,执行以下步骤

启动Prometheus服务:

./prometheus --config.file=prometheus.yml

启动Alertmanager服务:

./alertmanager --config.file=alertmanager.yml

二、告警规则配置

在Prometheus中,可以通过创建告警规则来定义哪些指标会触发告警。以下是一个常用的CPU使用率过高的告警规则示例:

groups:
- name: cpu_usage_rules
rules:
- alert: HighCPUUsage
expr: 70 > irate(node_cpu_seconds_total{mode="idle"}[5m])
for: 1m
labels:
severity: 'warning'
entity: cpu
annotations:
summary: '节点({.entity}) CPU空闲率过低'
description: '节点 ({.entity}) CPU空闲率为 {:.value}%'

3. 部署命令示例

172.16.3.225服务器上执行以下命令:

# 创建告警规则文件夹
mkdir -p rules

4. 启用告警规则

编辑prometheus.yml文件,将以下配置添加到Alertmanager部分:

receivers:
- name: 'alertmanager'
email_configs:
- to: 'admin@example.com'

保存并退出后,重启服务:

systemctl restart prometheus

三、告警管理

1. 告警触发条件

Prometheus的告警触发条件主要由以下参数决定:

  • 指标阈值
  • 时间间隔
  • 指标持续状态

这些参数通过Prometheus.yml文件中的scrape_intervalevaluation_interval来控制。

2. 告警收敛控制

通过配置inhibit_rules,可以限制重复或不必要的告警,避免监控信息过载。例如,设置如下配置:

inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'instance']

3. 查看告警状态

通过访问Alertmanager的网页界面,可以实时查看告警状态。访问地址为http://172.16.3.225:9093/#/alerts

四、监控测试报警

1. 关闭Docker和MySQL监控

在测试过程中,关闭不必要的监控服务:

# 停止Docker监控
docker stop cadvisor
# 停止MySQL监控
systemctl stop mysqld_exporter

2. 查看告警配置结果

通过查看Prometheus的告警状态,确保配置生效:

# 查看最新告警
curl http://localhost:9090/api/prometheus/well-known-targets

五、告警案例:实际应用中的监控策略

1. 监控硬件故障

通过检查硬件设备的关键指标来触发告警。例如:

  • 设备温度(node温度
  • 磁盘状态(node磁盘健康
  • 网络连接处于死锁状态(node网络连接

配置示例:

groups:
- name: hardware_health
rules:
- alert: DeviceTemperatureOverLimit
expr: 80 > node_temperature{device="ethernet0"}
for: 1m
labels:
entity: device
type: network
annotations:
summary: '设备 {entity}: 温度超标'
description: '设备 {entity} 的温度已达到 {value} ℃'

2. 监控应用性能

除了硬件设备,应用性能指标同样需要实时监控。例如,检查数据库连接池的使用情况:

groups:
- name: db_connection_pool
rules:
- alert: ConnectionPoolOverload
expr: (node_filesystem_free_bytes{fstype="ext4"} / node_filesystem_size_bytes{fstype="ext4"} * 25) > node_filesystem_size_bytes{fstype="ext4"}
for: 5m
labels:
entity: database
pool_size: '100'
annotations:
summary: '数据库 {entity}: 连接池超载'
description: '数据库 {entity} 的连接池使用率超过 {value}%'

3. 应用自定义告警规则

根据实际需求,定制自己的告警规则。例如:

  • 负载均衡服务器负载过高
  • 用户登录失败次数过多
  • 日志系统文件占用异常

这些规则可以根据具体场景进行调整。

结论

通过以上配置和优化,可以实现对生产环境中的关键系统的实时监控和告警管理。从最初的配置到最终的优化,每一步都离不开实际应用中的实践经验积累。通过合理配置告警规则和监控指标,可以有效降低系统故障率,提高整体运维效率。

上一篇:Kubernetes修改Pod数量
下一篇:Jenkins介绍及部署

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年05月18日 19时35分20秒