歡需要理由嗎?需要嗎?當然需要,zabbix的那么多功能足以讓你喜歡她,現在還有zabbix API,zabbix真讓我瘋了,太牛逼了,太讓人喜歡了。有zabbix API我們可以做很多,自己開發web界面、開發手機端zabbix、獲取zabbix指定數據、創建zabbix監控項等等。
zabbix API開發庫
zabbix API請求和響應都是json,並且還提供了各種語法的lib庫,http://zabbix.org/wiki/Docs/api/libraries,包含php、c#、Python、Perl、go等等語言,簡單看了下phpzabbixapi,使用非常方便。
請求zabbix API
post json數據到api接口地址,例如你得zabbix地址是http://company.com/zabbix,那么你得接口地址是:http: //company.com/zabbix/api_jsonrpc.php,必須包含content-type頭,值為application/json-rpc
, application/json
or application/jsonrequest
之一。
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如下:
{ "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 }
請使用你的程序處理一下即可。
zabbix API就是這么簡單,請求、響應然后處理,更多API方法請直接上官方文檔,里面有幾百個方法等着你。如果你使用zabbix二次開發,千萬不要直接操作zabbix數據,