每天登录 Zabbix 一台台点开主机看 CPU、内存、磁盘,再手动复制到 Excel 里拼巡检报告,是很多运维同学的日常。主机一多,这件事既枯燥又容易漏看。本文分享一个已经打包成小工具的Python 脚本方案:在 Linux 上直接运行,通过Zabbix 监控的 API 拉取全部主机的最新指标,自动生成巡检报告表格,并按配置文件里的阈值把异常数据高亮标注出来,是自动化运维里性价比很高的一件小事。
一、这个工具解决什么问题
传统巡检流程通常是:登录 Zabbix → 逐个主机查看监控项 → 记录数值 → 汇总到表格 → 人工判断是否异常。主机数量一旦超过几十台,整个流程耗时且难以保证一致性。
这个工具把上述流程压缩成一条命令,核心能力包括:
- 自动发现主机:调用 Zabbix API 获取当前监控的所有主机列表,无需手工维护清单。
- 批量采集指标:一次性拉取每台主机的 CPU 空闲率、内存可用率、根分区磁盘使用率最新值。
- 生成巡检报告:把结果导出为结构化表格,可直接作为巡检交付物。
- 阈值告警标注:阈值写在配置文件里,超过阈值的数据在报告中自动标记,一眼看出风险主机。
- 开箱即用:已打包成小工具,在 Linux 系统上执行即可,无需改动代码。
适用场景:日常巡检、值班交接、季度资产健康度盘点、上线前的资源水位核查。
二、整体设计思路
工具的整体链路非常清晰:读配置 → 认证 → 取主机 → 取监控项 → 取最新值 → 判定阈值 → 导出报告。
flowchart TD A[读取 config.yaml: Zabbix 地址/账号/监控项 key/阈值] --> B[调用 user.login 获取 Token] B --> C[host.get 获取全部主机] C --> D[按模板过滤主机] D --> E[item.get 按配置的 key 获取监控项] E --> F[读取 lastvalue 最新值] F --> G[按配置阈值判定是否告警] G --> H[生成巡检报告表格] H --> I[输出 Excel 并标注异常]几个关键设计点:
- 用监控项 key 匹配指标,而不是写死 itemid,这样新增主机也能自动纳入巡检范围。
- 阈值与连接信息全部外置到配置文件,换环境只改 YAML,不动代码。
- 报告与告警分离:报告保留全部数据,告警只做标注,避免信息丢失。
- 支持模板过滤:只巡检指定模板的主机,避免把网络设备、打印机等混进报告。
三、准备工作
3.1 运行环境
工具已打包,在 Linux 上直接执行即可。
3.2 Zabbix 侧准备
建议在 Zabbix 中创建一个只读账号用于 API 调用,最好不要使用管理员账号。确认 API 地址可访问,通常为http://your-zabbix/zabbix/api_jsonrpc.php。
四、配置文件说明
工具的所有可变参数都收敛在一个 YAML 文件里,内容如下:
# Zabbix连接信息 zabbix: url: "http://x.x.x.x/zabbix" user: "Admin" password: "******" 监控项key keys: cpu_idle: "system.cpu.util[,idle]" mem_pavailable: "vm.memory.size[pavailable]" disk_root_pused: "vfs.fs.size[/,pused]" 告警阈值 % threshold: cpu_warn: 80 mem_warn: 85 disk_warn: 80 扩展参数 extra: timeout: 10 retry_times: 2 filter_by_template: true template_name: "Template OS Linux"逐段说明:
| 配置段 | 字段 | 作用 |
|---|---|---|
| zabbix | url / user / password | Zabbix 服务地址与 API 账号,url 需指向 zabbix 子目录 |
| keys | cpu_idle / mem_pavailable / disk_root_pused | 三个指标对应的监控项 key,按实际模板调整 |
| threshold | cpu_warn / mem_warn / disk_warn | 告警阈值(百分比),超过即标注 |
| extra | timeout / retry_times | API 请求超时时间与失败重试次数 |
| extra | filter_by_template / template_name | 是否只巡检指定模板的主机,以及模板名称 |
注意:
system.cpu.util[,idle]取的是CPU 空闲率,vm.memory.size[pavailable]取的是内存可用率,两者都是“越大越好”的指标。因此判定告警时要用100 - 值换算成使用率,再与阈值比较,这一点在代码里会专门处理。
五、运行服务
登录待运行脚本的linux服务器,执行chmod +x zabbix_linux_check给脚本赋权,./zabbix_linux_check执行脚本即可,配置文件zabbix_linux_check.yaml和zabbix_linux_check放在同一个路径下即可。工具已经整理好,感兴趣的同学可以留言或私信我,看到会第一时间回复,也欢迎交流使用中遇到的问题和想加的功能。工具下载地址如下:https://download.csdn.net/download/lgz847368331/93805576
后续我还会继续更新这个工具,比如增加告警通知、图表展示等能力,关注一下不迷路。