Python 自动化运维实战:Zabbix 巡检小工具(配置文件驱动,Linux 一键出报告)
每天登录 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逐段说明配置段字段作用zabbixurl / user / passwordZabbix 服务地址与 API 账号url 需指向 zabbix 子目录keyscpu_idle / mem_pavailable / disk_root_pused三个指标对应的监控项 key按实际模板调整thresholdcpu_warn / mem_warn / disk_warn告警阈值百分比超过即标注extratimeout / retry_timesAPI 请求超时时间与失败重试次数extrafilter_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后续我还会继续更新这个工具比如增加告警通知、图表展示等能力关注一下不迷路。