Zabbix二次開發 01基礎

2021-09-07 19:17:09 字數 1965 閱讀 1355

最近有個想法:想做乙個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 ...