2026-07-12 20:41:52
在CentOS上搭建监控告警系统需部署Prometheus、Node Exporter、Alertmanager和Grafana,通过配置监控指标、告警规则及邮件通知实现自动化告警,并合理设置阈值与抑制策略避免告警风暴。
一、核心组件安装与配置Prometheus(监控数据收集与规则评估)
安装:下载二进制文件并解压至目录(如/opt/prometheus),创建配置文件prometheus.yml。
配置示例:
global: scrape_interval: 15s evaluation_interval: 15sscrape_configs: - job_name: 'linux' static_configs: - targets: ['localhost:9100']关键参数:
scrape_interval:数据抓取频率(默认15秒)。
targets:指定Node Exporter的地址(如localhost:9100)。
Node Exporter(系统指标采集)
安装:下载二进制文件并运行./node_exporter(默认监听9100端口)。
防火墙配置:确保Prometheus服务器可访问该端口(如firewall-cmd --add-port=9100/tcp --permanent)。
Alertmanager(告警路由与通知)
安装:下载二进制文件并创建配置文件alertmanager.yml。
邮件通知配置示例:
route: receiver: 'default'receivers: - name: 'default' email_configs: - to: 'your_email@example.com' from: 'alertmanager@example.com' smarthost: 'smtp.example.com:587' auth_username: 'alertmanager' auth_password: 'your_password' require_tls: true关键参数:
smarthost:SMTP服务器地址。
auth_username/password:邮箱认证信息。
Grafana(数据可视化)
安装:下载安装包(如RPM包)并执行yum install grafana-*,启动服务(systemctl start grafana-server)。
配置数据源:登录Grafana(默认端口3000),添加Prometheus作为数据源(URL为
选择监控指标
基础指标:CPU使用率、内存占用、磁盘I/O、网络流量。
进阶指标(根据业务需求):
数据库服务器:连接数、查询响应时间。
Web服务器:请求延迟、错误率。
配置Prometheus告警规则
规则文件示例(alert.rules.yml):
groups: - name: example rules: - alert: HighCPUUsage expr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) < 20 for: 5m labels: severity: critical annotations: summary: "High CPU usage on {{ $labels.instance }}" description: "CPU usage >80% for 5 minutes on {{ $labels.instance }}"关键参数:
expr:告警触发条件(如CPU空闲率<20%)。
for:持续时长(避免短暂波动触发告警)。
labels/annotations:告警标签与描述信息。
设置合理阈值
初始策略:根据历史数据设置宽松阈值(如CPU>85%触发告警),逐步调整至业务容忍范围。
动态阈值:结合业务高峰期(如白天)与低谷期(如夜间)设置不同阈值。
避免告警风暴
抑制规则:当高优先级告警触发时,抑制低优先级相关告警(如磁盘满时抑制文件打开数告警)。
分组规则:将同一主机的多个告警合并为一条通知(如CPU/内存/磁盘告警合并发送)。
频率限制:限制同一告警的发送频率(如每5分钟最多发送一次)。
模拟故障测试
CPU高负载:使用stress --cpu 4 --timeout 300s模拟多核高负载。
磁盘I/O压力:使用dd if=/dev/zero of=/tmp/testfile bs=1G count=1 oflag=direct模拟大文件写入。
验证告警流程
检查Prometheus是否抓取到异常指标。
确认Alertmanager是否触发告警并发送邮件。
登录Grafana查看监控面板是否显示异常数据。
Prometheus无法抓取数据
检查Node Exporter是否运行(ps aux | grep node_exporter)。
验证防火墙规则是否放行9100端口。
Alertmanager邮件发送失败
检查SMTP配置是否正确(如端口、认证信息)。
查看Alertmanager日志(journalctl -u alertmanager -f)排查错误。
Grafana面板无数据
确认Prometheus数据源URL是否正确。
检查Prometheus查询语句是否匹配指标名称(如node_cpu_seconds_total)。
通过以上步骤,可完成CentOS监控告警系统的搭建与优化,实现系统问题的实时发现与自动化处理。