zabbix API开发库

zabbix API请求和响应都是json,并且还提供了各种语法的lib库,http://zabbix.org/wiki/Docs/api/libraries,包含php、c#、PythonPerl、go等等语言,简单看了下phpzabbixapi,使用非常方便。

请求zabbix API

post json数据到api接口地址,例如你得zabbix地址是http://company.com/zabbix,那么你得接口地址是:http://company.com/zabbix/api_jsonrpc.php,必须包含content-type头,值为application/json-rpcapplication/json or application/jsonrequest之一。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。  
1 2 3 4 POST http://company.com/zabbix/api_jsonrpc.php HTTP/1.1 Content-Type: application/json-rpc   {"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":null,"params":{}}

 

zabbix API登陆

获取auth token(登陆)

在操作zabbix之前,我们必须先登陆zabbix,得到token,以后的操作带着这个token即可,要不然肯定没权限。

请求的json如下:

 
1 2 3 4 5 6 7 8 9 10 { "jsonrpc": "2.0", "method": "user.login", "params": { "user": "Admin", "password": "zabbix" }, "id": 1, "auth": null }

 

属性说明
jsonrps - JSON-RPC版本,基本上用2.0就行了;
method - 调用的API方法,方法列表请上官网;
params - 需要传递的参数,这边是user和password;
id - 请求标志;
auth - 用户token,这边使用null,因为还没通过验证

验证成功,会返回如下json数据

 
1 2 3 4 5 {     "jsonrpc": "2.0",     "result": "0424bd59b807674191e7d77572075f33",     "id": 1 }

result便是我们要的token数据,id对应请求的id。

zabbix api检索主机

通过验证之后,我们带着token使用host.get获取主机列表,请求的json如下:

 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 {     "jsonrpc": "2.0",     "method": "host.get",     "params": {         "output": [             "hostid",             "host"         ],         "selectInterfaces": [             "interfaceid",             "ip"         ]     },     "id": 2,     "auth": "0424bd59b807674191e7d77572075f33" }

获取到如下数据

 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 {     "jsonrpc": "2.0",     "result": [         {             "hostid": "10084",             "host": "Zabbix server",             "interfaces": [                 {                     "interfaceid": "1",                     "ip": "127.0.0.1"                 }             ]         }     ],     "id": 2 }

请使用你的程序处理一下即可。

 zabbix API就是这么简单,请求、响应然后处理,更多API方法请直接上官方文档,里面有几百个方法等着你。如果你使用zabbix二次开发,千万不要直接操作zabbix数据,太.....,为何不使用zabbix API。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄