Zabbix API 初探{"jsonrpc":"2.0","result":[],"id":1}

    双十一剁了手(是真的剁了手),今天在这手残志坚,开始写一些东西吧,做网络运维已经有五六年,从现在开始养成记录的良好习惯,希望不晚。

    在运维的过程中遇到问题我大都首先会去谷歌(之前是用百度的,发现大多解决不了问题或搜不到,问各种技术群里的大神,或许问题太简单没人愿意回答,或许没人懂。得到的最多的一句话是‘谷歌啊!’,感谢这句话,现在读英文文章的水平也有些许的提升吧),英文的资料会多一些,也大多能解决自己的问题,也会遇到一些没有答案的。尽量多写一些我遇到的问题,希望能给同行的兄弟姐妹们哪怕一点点的帮助。

    最近部署了Zabbix(说是最近,也有几个月了吧),把一些基本的网络设备如:交换机、路由器、防火墙、WLC等都加了进来。领导心血来潮,要把之前安装的智能PDU也要纳入监控,通过智能PDU监控机房的温湿度以及机柜的用电量信息。

    第一步研究监控的方法:肯定是基于SNMP监控,Easy!!!信心满满跟领导说此事可行,好实现,现实却常常打脸。PDU的SNMP OID 找不到!厂商(RITTAL)产品网络上没有资料,只能厂商提供,厂商的项目负责人不懂技术,技术支持又特别不给力,来来回回将近一个月才拿到我要的信息。

    第二步制作模板:有了第一步的基础,制作模板相对来说会比较简单一点。制作过程中注意Item中SNMP获取到的值和日常使用的值的关系,一般做一些简单的倍数运算就可以修正,然后改一下单位就好了。然后设置温度、湿度、电流、电压的告警,添加曲线图就OK了。

模板包含内容
主机last data

    这里就不在介绍API是什么了,如果不知道的化自行百度吧,会得到很多像如下的解释:    http://baijiahao.baidu.com/s?id=1597881116201407882&wfr=spider&for=pc

    我的理解API就是允许你通过代码的方式对系统进行你需要的操作,就像我要把这200个PDU加入到Zabbix系统里并应用相关的模板。

    资料最准确最详细的肯定是官方文档了,会列举所有的操作所需要的参数以及方法:    https://www.zabbix.com/documentation/4.4/manual/api

    测试的时候可以使用相关的工具如:Postman、Curl等进行相关的测试,我选用了Curl进行测试。

    1、login方法获取身份验证令牌,之后的所有操作都可以用这一串字符串做为认证的信息。

user.login
返回结果

    2、继续测试其他方法

hostgroup.get

    测试的时候发现问题,返回结果总是为空,‘{"jsonrpc":"2.0","result":[],"id":1}’,试了其他方法也是这样,user.login可以返回正确的返回值,账户什么的应该没有问题。

返回空值
返回空

    有问题怎么办?百度呗,百度不行谷歌,大家可以根据返回信息‘{"jsonrpc":"2.0","result":[],"id":1}’自行百度或谷歌一下,我确实是没有找到结果,谷歌上确实有人遇到过同样的问题,但是下面的回复全部是让按照官方API的规则去使用,问题是我根本就是按照API的规则写的啊,哪有什么问题。。。

    经过我不断的思考以及尝试,终于发现问题原因。

    首先确定Curl的账户权限问题,即使root权限仍然不行。

    然后确认API 账户的权限问题,为了防止权限问题也已把API的测试账户和administrator账户放在了同一个组。经过不断尝试发现是 User type问题,改成Zabbix Super Admin就好了。

API_account


正常返回信息

然后可以进行下一步了,批量添加主机,下次更新。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。