您现在的位置是:知识 >>正文
python通过zabbix api
知识5128人已围观
简介python通过zabbix api Zabbix的API是个好东西,但文档写得像天书。我花了三个下午才搞明白怎么用Python调它——不是调不通,是认证方式绕。你直接拿requests.post去怼 ...
python通过zabbix api
Zabbix的通过API是个好东西,但文档写得像天书。通过我花了三个下午才搞明白怎么用Python调它——不是通过调不通,是通过认证方式绕。你直接拿requests.post去怼`api_jsonrpc.php`,通过不带token,通过它甩你一脸`-32700`。通过得先发一个`user.login`请求,通过拿到那段加密的通过sessionid,再塞进后续请求的通过header里。就这么个流程,通过文档里写得不直白,通过害我白折腾半天。通过
我写了个小脚本,通过监控公司测试服务器的通过CPU和内存。核心就两个函数:一个负责登录,一个负责取数据。登录函数简单,把用户名密码丢进`params`,返回的`result`就是token。取数据得拼`item.get`的请求,filter里写清楚host名和key,比如`system.cpu.util[,idle]`这种。返回的是一堆字典,里面藏着`lastvalue`,直接取出来用就行。
有个坑得提——Zabbix的API版本跟你的服务器版本得对得上。我一开始用的5.0的API去调6.4的服务器,报错`Invalid params`,跟我玩文字游戏。后来查了官方文档,发现6.4的`host.get`里`output`参数写法变了,得用`["hostid", "name"]`这种数组形式,不能直接写`"extend"`。改完立马通了,那感觉就像钥匙终于捅对了锁眼。
实际写代码时,我建议你把请求封装成一个类。别学我一开始写成散装函数,调多了自己都乱。类里放个`_call`方法,统一处理URL、header和超时。每次请求都带`Content-Type: application/json`,超时设10秒,防止服务器卡死拖垮你的脚本。还有,token有效期默认一小时,长任务得记得重新登录,或者干脆用`user.checkAuthentication`验证一下再干活。
说个具体的例子。我要拉最近一小时的CPU使用率,画个折线图。请求得设`history.get`,参数里写`history`为0(代表数值型),`time_from`和`time_till`用时间戳。返回的数据可能上千条,别傻乎乎全打印到终端——存成CSV或者直接扔给matplotlib画图都行。我自己的做法是存进SQLite,方便后续查历史趋势。
折腾完这套,你会发现Zabbix的API其实挺强大。它不只是拿监控数据,还能创建主机、触发报警、管理模板。用Python写个批量添加主机的脚本,能省你半天手工点的功夫。但别指望文档能教你全部——多去社区翻翻帖子,或者干脆抓包看看前端是怎么调API的,那才是最好的学习材料。
最后提醒一句:别把API密码硬编码在脚本里。用环境变量或者配置文件,不然代码传到GitHub上,等于把服务器钥匙挂门口。这我吃过亏,还好及时发现撤回了。
Tags:
上一篇:反渗透专用阻垢剂 包装方式
下一篇:蚂蚁src
相关文章
备案号漏洞
知识备案号挂在页脚,灰扑扑一行小字,像身份证复印件上的水印。多数人一辈子不会正眼看它,可它确实是网站在中国合法呼吸的凭证。但你要是觉得有了它就万事大吉,那就太天真了——这世上最不缺的,就是拿着真证件干假事 ...
【知识】
阅读更多支付宝扫描二维码被骗
知识那天下午,我差点把支付宝里的八千块转给一个“客服”。 对方电话里的声音不急不躁,说我上个月买的那件外套有质量问题,要给我双倍赔偿。准确报出了订单号、颜色、尺码,连我收货地址都能背出来。我信了八成。然后 ...
【知识】
阅读更多董飞云无忧网站
知识董飞云做网站这事,圈里人起初都当笑话看。一个修了十年空调的老师傅,突然说要搞什么"无忧平台",听着就跟隔壁老王宣布要登月似的。 可他那工作室我是真去过。三十来平的车库,墙上是拆了半截的空调外机,桌上摆 ...
【知识】
阅读更多