Linux巡检需自动化体系化,核心是“可重复、可度量、可告警”;按业务影响分三级检查,脚本标准化(bash+JSON输出)、crontab调度、日志聚合+邮件告警闭环,稳定后接入Grafana+InfluxDB可视化。

Linux系统巡检不能只靠人工敲命令,必须建体系、走自动化——核心是“可重复、可度量、可告警”。重点不在工具堆砌,而在把巡检项标准化、执行流程脚本化、结果处理平台化。
明确巡检范围与分级标准
不是所有指标都要每分钟检查。按业务影响和故障概率分三级:
- 一级(必查高频):CPU负载(15分钟均值>3)、内存使用率(>90%)、根分区剩余空间(<10%)、关键进程存活(如sshd、nginx)、SSH登录连通性
- 二级(按需定时):磁盘IO等待(iowait>20%持续5分钟)、网络连接数(ESTABLISHED>8000)、NTP时间偏移(>300ms)、内核日志ERROR行(近1小时新增>5条)
- 三级(周期抽检):用户异常登录(非工作时间root登录)、计划任务执行失败记录、SELinux状态变更、防火墙规则意外修改
用轻量脚本+标准输出统一采集
避免Python/Perl等环境依赖,优先用bash/sh + 原生命令组合。关键要求:输出固定格式(推荐JSON),字段名统一,含时间戳和主机标识。
- 示例片段:echo "{\"host\":\"$(hostname -s)\",\"check\":\"disk_root\",\"used_pct\":$(df / | awk 'NR==2 {print int($5)}'),\"ts\":\"$(date -u +%s)\"}"
- 所有脚本存放在/opt/monitor/checks/,命名规范如check-cpu.sh、check-sshd.sh
- 通过crontab -e统一调度,一级检查每5分钟,二级每30分钟,三级每天凌晨2点
结果聚合与基础告警闭环
不强推ELK或Prometheus,先用最简方式跑通闭环:
- 所有检查脚本输出重定向到/var/log/monitor/下按天分割的文件(如2024-06-15.json)
- 写一个alert-runner.sh,每天4:00扫描昨日日志,匹配预设阈值(如"\"used_pct\":9[0-9]"),生成/tmp/alert-today.txt
- 用mail -s "【巡检告警】$(hostname)" admin@company.com 发邮件;有短信通道就加curl调用API
逐步接入可视化与趋势分析
当脚本稳定运行2周后,再升级:
- 用rsync每日把/var/log/monitor/同步到中心节点,用logstash或jq做轻量清洗
- 前端用Grafana,数据源接InfluxDB(存储指标)+ PostgreSQL(存告警记录和人工复核标记)
- 关键看板包括:各主机巡检通过率热力图、TOP5资源瓶颈主机、告警响应时效统计(从触发到人工标记“已处理”的时间差)










