zabbix摸索之API篇

        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"這一欄。

wKioL1hHulyB7oS_AAB0ZB0u4Is162.png-wh_50

        我們要用的方法就是 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去測試,還緊張兮兮的寫了半天代碼來測試)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章