CentOS系统监控与报警实用方案
一 快速上手 命令行巡检与即时告警
- 常用实时与历史命令
- 资源总览与进程:top、htop(需 EPEL)、vmstat、free、iostat -x 1、sar、dstat、iftop、nload、nethogs、pidstat、iotop、systemctl status/ journalctl -u。这些命令覆盖 CPU、内存、磁盘 I/O、网络 等关键指标,适合临时排查与日常巡检。对于 CentOS Stream 8,上述工具同样适用。
- 即时广播与本地通知
- 向所有登录终端广播:wall “告警:CPU 使用率超过 90%”。
- 记录到系统日志并触发外部处理:logger -t “ALERT” “磁盘空间不足”(可配合 rsyslog 转发/处理)。
- 图形会话通知(有桌面环境):notify-send “磁盘告警” “可用空间低于 10%”。
二 轻量自动化 脚本化邮件告警
- 适用场景
- 没有监控平台、服务器数量较少、希望快速落地邮件告警(如 CPU、内存、磁盘、IO、网络 超限即告警)。
- 实施步骤
- 安装依赖
- yum install -y msmtp sysstat ifstat bc curl
- 配置 msmtp 使用邮箱 SMTP(如 QQ/163 邮箱的授权码),确保可发信。
- 配置阈值与收件人
- 例如:CPU_THRESHOLD=80、MEM_THRESHOLD=80、DISK_THRESHOLD=80、IO_AWAIT_THRESHOLD=50(ms)、NET_THRESHOLD=10(MB/s)。
- 核心检查逻辑(示例)
- CPU:通过 vmstat 计算近 1 分钟平均使用率;超过阈值则拼装告警内容。
- 内存:基于 free 计算已用率(含缓存/缓冲的可用内存口径),超过阈值告警。
- 磁盘:对关键分区(如 /)使用率检查,超过阈值告警。
- IO:通过 iostat -x 获取 await,超过阈值告警。
- 网络:通过 ifstat 采样带宽,超过阈值告警。
- 发送邮件与日志
- 使用 msmtp 发送 HTML/文本邮件,附带 主机名、IP、时间、指标与建议。
- 写入本地日志:/var/log/system_monitor.log,便于审计与回溯。
- 定时执行
- 使用 cron(如每 5 分钟)执行脚本,形成准实时告警。
- 邮件与脚本要点
- 邮箱需开启 SMTP/POP3/IMAP 并使用授权码而非登录密码;脚本需处理多收件人、字符编码与连接失败重试。
三 平台化方案 Prometheus Alertmanager Grafana
- 组件与端口
- Node Exporter(主机指标,9100)、Prometheus(时序与规则,9090)、Alertmanager(告警路由与去重,9093)、Grafana(可视化,3000)。
- 快速落地步骤
- 部署 Node Exporter
- 在目标主机启动 node_exporter,确保 9090 访问可达。
- 配置 Prometheus
- 抓取 Node Exporter:scrape_configs 中加入 job_name: ‘linux’、targets: [‘:9100’];配置 rule_files 指向告警规则文件。
- 编写告警规则(示例)
- 规则要点:使用 irate/node_cpu_seconds_total 计算 CPU 使用率,阈值 >80% 且持续 5m 触发;为告警添加 severity 与 annotations(摘要/描述)。
- 配置 Alertmanager
- 路由与接收器:设置 route.receiver、receivers.name;邮件示例:配置 smtp_smarthost、from、to、auth_username、auth_password、require_tls 等;可按需配置 group_by、repeat_interval、inhibit_rules 以抑制告警风暴。
- Grafana 可视化
- 添加 Prometheus 数据源(URL:http://:9090),导入 Node Exporter 仪表盘(如模板 16098),实现指标观测与面板告警联动。
- 防火墙与连通性
- 开放 9090/3000/9093(以及 9100 对 Prometheus 可达);生产环境建议最小暴露面与鉴权。
四 企业常用平台 Zabbix 与日志安全监控
- Zabbix 监控与告警
- 安装 Zabbix Server(如 zabbix-server-mysql、zabbix-web-mysql)与 Zabbix Agent;在 zabbix_agentd.conf 设置 Server/ServerActive 指向 Server IP;Web 界面添加主机、监控项、触发器与动作(邮件/脚本/企业微信/钉钉等通知)。
- 日志与安全事件监控
- 集中式日志:部署 ELK(Elasticsearch、Logstash、Kibana) 或 Graylog,采集 /var/log/ 与安全日志,进行检索、可视化与告警规则配置。
- 入侵处置示例:结合日志发现异常 IP 后,使用 iptables 封禁(如:iptables -I INPUT -s -j DROP),并持久化保存规则。
五 告警策略与运维建议
- 阈值与持续时间
- 先宽松后收敛:如 CPU>80% 持续 5m、磁盘>80%、IO await>50ms、带宽>10MB/s;结合业务高峰与历史基线逐步调优。
- 分组、抑制与频率
- 通过 group_by 将相关告警聚合;使用 inhibit_rules 避免重复告警;设置 repeat_interval 控制重复通知频率,避免告警风暴。
- 通知渠道与值班
- 邮件、企业微信、钉钉、Webhook 等多渠道;建立 值班与升级 机制,确保告警闭环。
- 变更与演练
- 变更前后进行基线对比与压测/故障演练;定期验证告警链路(可临时制造阈值触发)。