Python 調用 zabbix api

前提準備:php

    1.使用python requests模塊python

    2.瞭解json數據庫

    3.zabbix api的具體調用建議先瀏覽一下官網json


先上代碼:api

import requests,json
#
#url必定要正確,IP地址換成本身zabbix服務器的
zbx_url = "http://192.168.60.130:3080/zabbix/api_jsonrpc.php"

#在post請求頭部必需要有 'Content-Type': 'application/json-rpc'
headers = {'Content-Type': 'application/json-rpc'}

#傳遞json 數據到api;登陸
login = {
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "Admin",
        "password": "zabbix"
    },
    "id": 1
}
#首次登錄不用在json字段中寫 auth,不然會有相關的報錯

#將數據發送到api
ret = requests.post(zbx_url, data=json.dumps(login), headers=headers)

#對結果進行序列化
ret = ret.json()
auth = ret['result']

#獲取問題主機json
data = {
    "jsonrpc": "2.0",
    "method":"trigger.get",
    "params": {
        #  output表示輸出結果包含參數有哪些
        "output": [
            "triggerid",
            "description",
            "status",
            "value",
            "priority",
            "lastchange",
            "recovery_mode",
            "hosts",
            "state",
        ],
        "selectHosts": "hosts",  # 需包含主機ID信息,以便於根據主機ID查詢主機信息
        "selectItems":"items",
        "filter": {
            # 篩選條件
             "value": 1,#value值爲1表示有問題
             "status": 0#status爲0表示已啓用的trigger
        },
    },
    "auth":auth,#這裏的auth就是登陸後獲取的
    'id':'1'#這個id能夠隨意
}

#將查詢數據發送到zabbix-server
ret = requests.post(zbx_url,data=json.dumps(data),headers=headers)

respone_result = ret.json()['result']#對結果進行json序列化

print(respone_result)


下面簡單介紹一下上訴代碼:服務器

要調用zabbix api獲取數據,首先要得到auth這一串字符用戶後續的內容獲取,auth能夠看作是一種你與zabbix-server之間的"暗號";app

登陸的json內容之因此這樣寫是zabbix官方規定的json字符串裏面千萬不能使用tab鍵。ide

login = {
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "Admin",          #根據本身的狀況填
        "password": "zabbix"      #根據本身的條件填寫
    },
    "id": 1
}


獲取問題主機的json字符串建議先瀏覽一下官網的說明,要強調的是output和filter這兩個key,output就是zabbix api返回來的內容,filter至關因而過濾條件:post

"filter": {
            # 篩選條件
             "value": 1,              #value值爲1表示有問題
             "status": 0              #status爲0表示已啓用的trigger
        },

上訴代碼表示 value=1 and status=0,是一種與關係,很像查數據庫表時候的過濾操做。url


強烈建議先大概瀏覽一下官網文檔

相關文章
相關標籤/搜索