zabbix API的好處就不講了(懶癌發作,不想羅列)
搜索github上這方面的資源,還真是不少,pyzabbix是其中比較不錯的一個,封裝了requests/json包,這讓自己寫腳本更輕鬆了。
pyzabbix給了很多例子來說明如何做查詢,你可以根據此例子和zabbix官方提供的API關鍵字段來做自己的查詢。
摘個其中的例子:
from pyzabbix import ZabbixAPI zapi = ZabbixAPI("http://zabbixserver.example.com") zapi.login("zabbix user", "zabbix pass") print("Connected to Zabbix API Version %s" % zapi.api_version()) for h in zapi.host.get(output="extend"): print(h['hostid'])
"extend" 是必須的參數,這個也是zabbix api必須的,參看這裏(我這裏看的是3.0的版本,後面也是一樣,可以根據自己安裝的zabbix版本切換)。
那麼我們來參照這個例子來寫一個,查詢所有的視圖的名稱。
首先去這裏把 API的"Method reference"展開,找到"screen"這一欄。
我們要用的方法就是 screen.get,點擊進去,可以看到request參數和方法:
{ "jsonrpc": "2.0", "method": "screen.get", "params": { "output": "extend", "selectScreenItems": "extend", "selectUsers": "extend", "selectUserGroups": "extend", "screenids": "26" }, "auth": "038e1d7b1735c6a5436ee9eae095879e", "id": 1}
我們要用到的就是"parmas"這一段。
# 登錄就不講了,看例子。這裏是查詢所有用戶創建的screen for s in zapi.screen.get(output="extend", selectScreenItems="extend"): # 打印出screen的名稱 print(s['name'])
so easy。
接下來我們來看看screen相關的操作,get方法很簡單,我們來說說create。看看官方給的例子:
{ "jsonrpc": "2.0", "method": "screen.create", "params": { "name": "Graphs", "hsize": 3, "vsize": 2, "screenitems": [ { "resourcetype": 0, "resourceid": "612", "rowspan": 0, "colspan": 0, "x": 0, "y": 0 } ] }, "auth": "038e1d7b1735c6a5436ee9eae095879e", "id": 1}
說實話看到resourceid的時候我蛋疼了,這個resourceid是個什麼鬼,經過一番shell進入MySQL庫區搜的時候發現是在graphs這個表的第一列。讀到這裏,熟悉screen添加操作的童鞋想必已經知道,resourceid 在添加graph到screen裏的時候才用的上。說明什麼呢?如果你想利用API添加一個screen,只需這樣寫就好
zapi.screen.create(name=SCREEN_NAME,hsize=2,vsize=2,screenitems=[])
就這麼簡單(可憐我當時是在操作線上的zabbix,都不怎麼敢隨便的去創建一個screen去測試,還緊張兮兮的寫了半天代碼來測試)