Ansible节点批量巡检方案的核心是通过SSH连接、Playbook编排和模块化任务实现一次触发、自动执行、结构化输出的闭环流程,支持CPU、内存、磁盘、服务状态等采集与阈值判断,并生成可读性强的健康报告。

Ansible 节点批量巡检方案的核心,是把重复的手动检查变成一次触发、自动执行、结构化输出的闭环流程。它不依赖额外代理,靠 SSH 连接 + Playbook 编排 + 模块化任务就能完成 CPU、内存、磁盘、服务状态等关键指标采集,并生成可读性强、带阈值判断的健康报告。
准备控制节点与目标主机清单
先确保 Ansible 控制节点已安装(推荐 2.12+),Python 环境就绪,SSH 免密登录已配置到位。主机清单(inventory)建议按环境或角色分组,例如:
- webservers:包含 web-01、web-02 等节点
- databases:包含 db-01、db-02 等节点
- 每组可定义变量,如
check_disk_path: "/data"或critical_threshold: 90
避免硬编码 IP,用域名或 host alias 更利于后期维护;同时启用 gather_facts: false 可跳过耗时的事实收集,提升巡检速度。
编写标准化巡检 Playbook
一个典型的健康检查 Playbook 应包含以下模块化任务:
- 使用
shell模块执行df -h、free -m、uptime、systemctl is-active nginx等命令 - 用
set_fact提取关键字段(如磁盘使用率百分比、内存剩余 MB、负载均值) - 结合
when条件判断,对超阈值项打标(如disk_status: "CRITICAL") - 将每台主机的结果统一存入
hostvars[inventory_hostname],供后续模板渲染使用
不建议在脚本里拼接字符串返回 JSON,而应直接用 Ansible 的 json_query 或自定义 filter 插件(如 os-check.py)做数据清洗和分级。
生成结构化报告并可视化
报告生成分两步走:先聚合数据,再渲染模板。
- 用
template模块调用 Jinja2 模板(如report.html),把所有主机的hostvars注入其中 - 模板中按 OK / BAD / CRITICAL 三档着色,支持排序、折叠表格、响应式布局;CSS 内联(
report-cssinline.html)更适配邮件客户端 - 可选增强:集成 JUnit callback 插件,生成 XML 报告供 CI/CD 解析;或用 Python 脚本将 JSON 输出转为 CSV 存档,便于趋势分析
集成通知与定时执行
巡检结果不能只存在本地,需主动触达责任人:
- Playbook 末尾加
mail模块,将 HTML 报告作为附件发送(注意 SMTP 配置和大小限制) - 用
cron或 Jenkins 定时触发,例如每天凌晨 3 点执行:0 3 * * * cd /opt/ansible-health && ansible-playbook -i inventory health.yml - 关键异常项(如磁盘 >95%、关键服务 down)可单独触发告警,避免淹没在整份报告中
整个流程无需修改目标服务器,不侵入生产环境,只需一次部署、长期复用。

















