喜欢一个东西需要理由吗?需要吗?当然需要, Zabbix 的那么多功能足以让你喜欢她,现在还有 zabbix API ,zabbix真让我疯了,太牛逼了,太让人喜欢了。有 zabbix API 我们可以做很多,自己开发web界面、开发手机端zabbix、获取zabbix指定数据、创建zabbix监控项等等。
zabbix API开发库
zabbix API请求和响应都是json,并且还提供了各种语法的lib库,,包含php、c#、Python、Perl、go等等语言,简单看了下phpzabbixapi,使用非常方便。
请求zabbix API
post json数据到api接口地址,例如你的zabbix地址是,那么你得接口地址是:,必须包含content-type头,值为application/json-rpc, application/json or application/json request 之一
POST 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 如下:
{
"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数据
{
"jsonrpc": "2.0",
"result": "0424bd59b807674191e7d77572075f33",
"id": 1
}
result便是我们要的token数据,id对应请求的id
zabbix api检索主机
通过验证之后,我们带着token使用host.get获取主机列表,请求的json如下:
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": "0424bd59b807674191e7d77572075f33"
}
获取到如下数据
{
"jsonrpc": "2.0",
"result": [
{
"hostid": "10084",
"host": "Zabbix server",
"interfaces": [
{
"interfaceid": "1",
"ip": " 127.0.0.1 "
}
]
}
],
"id": 2
}
格式化下就可以看到json的数据格式
zabbix API就是这么简单,请求、响应然后处理,更多API方法请直接上官方文档,里面有几百个方法等着你。如果你使用zabbix二次开发,千万不要直接操作zabbix 数据库里的数据,那些表结构尤其复杂。
小编另外也写过一篇通过调用zabbix 的api 数据 来监控 zabbix-proxy 的状态,有需要的小伙伴可以移步去看看
本文参考链接: