Zabbix API的介紹及使用
阿新 • • 發佈:2019-02-06
zabbix擁有完善的API,基於JSON RPC提供資產,主機,主機組,監控項,告警等方面的介面。在做運維自動化時,需要用API功能對zabbix二次開發。本文我將介紹如何用python信使用zabbix的API。
API介紹
API地址,
http://你的zabbix域名/api_jsonrpc.php
API請求方法,採用
POST
API請求資料結構
{ "jsonrpc": "2.0", // 版本 "method": "user.login", // 介面方法名 "params": { //介面引數
API常用的介面
- user.login,使用者登入
- host.get(create|delete|update),主機操作
- hostgroup.get(create|delete|update),主機組操作
- item.get(create|delete|update),監控專案操作
- history.get,歷史資料查詢
- event.get,事件查詢
- trigger.get,觸發器查詢
API呼叫
- zabbix的介面呼叫前需要先進行登入驗證,獲取sessionid
- 構造某個介面的請求引數,並將sessionid加入到引數的auth欄位,POST請求即可
登入
import requests
import json
url = "http://xxxx/api_jsronrpc.php"
header = {"Content-Type": "application/json-rpc"}
username = zabbix
password = zabbix
def do_request(data):
try:
request = requests.post(url=url, headers=header, data=json.dumps(data), timeout=60 )
if request.json()["result"]:
return request.json()["result"]
except requests.ConnectionError:
return None
else:
return None
def get_token():
data = {
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": username,
"password": password
},
"id": 0,
"auth": None
}
token = do_request(data)
if not token:
print("登入失敗")
print(token)
檢視主機
def get_host(hostid):
data = json.dumps({
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": "extend",
},
"id": 1,
"auth": auth()
})
resp = do_request(data)
print(resp)
檢視主機的監控項
def get_host(hostid):
data = json.dumps({
"jsonrpc": "2.0",
"method": "item.get",
"params": {
"output": "itemid",
"hostids": hostid,
"search": {
"key_": "system.cpu.load[,avg1]"
}
},
"id": 1,
"auth": auth()
})
resp = do_request(data)
print(resp)
查詢主機的監控項歷史資料
def get_host(itemid):
ts = time.time() - 900 //獲取最近900秒內的資料
data = json.dumps({
"jsonrpc": "2.0",
"method": "history.get",
"params": {
"output": "extend",
"history": 0,
"itemids": itemid,
"limit": 0,
"time_from": ts,
"sortfield": "clock",
"sortorder": "ASC",
# "hostids": hostid,
},
"id": 1,
"auth": auth()
})
resp = do_request(data)
print(resp)