前提準備: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
強烈建議先大概瀏覽一下官網文檔