最近有個想法:想做乙個zabbix資料的二次呈現,所以來寫一下zabbix的api的內容。
先說下zabbix api的認證基礎。
zabbix api開始扮演著越來越重要的角色,尤其是在整合第三方軟體和自動化日常任務時。。zabbix api為批量操作、第三方軟體整合以及其他作用提供可程式設計介面。
zabbix api是在1.8版本中開始引進並且已經被廣泛應用。所有的zabbix移動客戶端都是基於api,甚至原生的web前端部分也是建立在它之上。zabbix api 中介軟體使得架構更加模組化也避免直接對資料庫進行操作。它允許你通過json
rpc協議來建立、更新和獲取zabbix物件並且做任何你喜歡的操作。
zabbix api提供兩項主要功能:
使用json
api 採用json-rpc實現。這意味著呼叫任何函式,都需要傳送post請求,輸入輸出資料都是以json格式。大致工作流如下:
可以採用指令碼或者任何"手動"支援json rpc的工具來使用api。而首先需要了解的就是如何驗證和如何使用驗證id來獲取想要的資訊。後面的演示會以python指令碼和基於curl的例子來呈現api的基本使用。
基本請求格式
zabbix api 簡化的json請求如下:
1 ,下面一行一行來看:8 "id": 1,
9 "auth": "159121b60d19a9b4b55d49e30cf12b81",
10 }
任何zabbix api客戶端在真正工作之前都需要驗證它自身。在這裡是採用user.login方法。這個方法接受乙個使用者名稱和密碼作為引數並返回驗證id,乙個安全雜湊串用於持續的api呼叫(在使用user.logout之前該驗證id均有效)。
1. user.login方法獲取zabbix server的認證結果
python指令碼:1
2345
6789
1011
1213
1415
1617
1819
2021
2223
2425
2627
2829
303132
python指令碼執行結果:1
2[iyunv@yang python]# python auth.py
auth successful. the auth id is: a0b82aae0842c2041386a61945af1180
curl命令:1
23curl命令執行結果:
1 比較來看,採用指令碼可以有更多的靈活性,而基於curl的方式,對結果的處理不是很方便。原理則都是相通的。
除了這些獲取資訊以外,採用api呼叫同樣可以進行建立操作,更新操作和刪除操作等等。這也很容易讓我們聯想起資料庫操作,當然比較這些採用api
呼叫獲取結果的方式,也不能忘掉這種最直接而危險的方式。在開始討論中已經提到,zabbix現在自帶的前端實現部分是採用資料庫操作,部分是基於api
呼叫。下面的流程圖代表了zabbix api
工作的典型工作流。驗證(方法user.login)是獲取驗證id的強制步驟。這個id又允許我們呼叫api提供的任何許可權允許的方法來進行操作。在之
前的例子中沒有提到user.logout方法,這也是一次驗證id能夠重複使用的原因所在。使用user.logout方法後將會使驗證id失效,後面
的操作將不能再使用此id。
Zabbix二次開發 01基礎
最近有個想法 想做乙個zabbix資料的二次呈現,所以來寫一下zabbix的api的內容。先說下zabbix api的認證基礎。zabbix api開始扮演著越來越重要的角色,尤其是在整合第三方軟體和自動化日常任務時。zabbix api為批量操作 第三方軟體整合以及其他作用提供可程式設計介面。za...
Zabbix二次開發時常用到zabbix資料庫字段
1 zabbix web頁面中 配置 動作 事件源 觸發器 中的狀態,這個是用來報警發郵件或簡訊的,在資料庫中表中可以直接修改,sql語句為 update zabbix.actions set status 1 where name email 欄位status值為1時是關閉,0時為啟用,name為...
postek二次開發 POSTEK二次開發介面
例項簡介 例項截圖 核心 using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using ...