一哄褒、 Zabbix API認(rèn)證實(shí)戰(zhàn)
Zabbix Api
Zabbix具有豐富的Api功能
可通過(guò)Api添加主機(jī)組绵载、主機(jī)埂陆、獲取監(jiān)控?cái)?shù)據(jù)等
使用Python操作Zabbix Api
API使用幫助文檔
(https://www.zabbix.com/documentation/3.0/manual/api)
登錄認(rèn)證說(shuō)明zabbix_base.py
import json
from urllib.request import Request,urlopen
zabbix_url="http://192.168.67.132/zabbix/api_jsonrpc.php"
zabbix_header = {"Content-Type":"application/json"}
zabbix_user = "Admin"
zabbix_pass = "xxxxxx"
data = {
"jsonrpc":"2.0",
"method":"user.login",
"params":{
"user":zabbix_user,
"password":zabbix_pass
},
"id":0 #任意
}
data = json.dumps(data).encode('utf-8')
req = Request(zabbix_url, headers=zabbix_header, data=data)
#print(req) #<urllib.request.Request object at 0x000001C281BF2408>
result = urlopen(req).read()
print(result) #獲取到的Token值
登錄結(jié)果說(shuō)明
#{"jsonrpc":"2.0","result":"xxx","id":0}
#{"jsonrpc":"2.0","error":{"code":-32602,"message":"Invalid params.","data":"Login name or password is incorrect."},"id":0}
請(qǐng)求Zabbix進(jìn)行封裝
import json
from urllib.request import Request,urlopen
zabbix_url = "http://192.168.67.132/zabbix/api_jsonrpc.php"
zabbix_header = {"Content-Type":"application/json"}
def zabbix_api_common(data):
data = json.dumps(data).encode('utf-8')
req = Request(zabbix_url, headers=zabbix_header, data=data)
# print(req) #<urllib.request.Request object at 0x000001C281BF2408>
result = urlopen(req).read()
return json.loads(result)
zabbix_user = "Admin"
zabbix_pass = "xxxxxx"
data = {
"jsonrpc":"2.0",
"method":"user.login",
"params":{
"user":zabbix_user,
"password":zabbix_pass
},
"id":0
}
if __name__ == "__main__":
result = zabbix_api_common(data)
print(result["result"])
對(duì)Zabbix登錄進(jìn)行封裝
import json
from urllib.request import Request,urlopen
zabbix_url = "http://192.168.67.132/zabbix/api_jsonrpc.php"
zabbix_header = {"Content-Type":"application/json"}
def zabbix_api_common(data):
data = json.dumps(data).encode('utf-8')
req = Request(zabbix_url, headers=zabbix_header, data=data)
# print(req) #<urllib.request.Request object at 0x000001C281BF2408>
result = urlopen(req).read()
return json.loads(result)
def get_token():
zabbix_user = "Admin"
zabbix_pass = "xxxxxx"
data = {
"jsonrpc":"2.0",
"method":"user.login",
"params":{
"user":zabbix_user,
"password":zabbix_pass
},
"id":0
}
result = zabbix_api_common(data)
return (result["result"])
if __name__ == "__main__":
result = get_token()
print(result)
二、Zabbix Api獲取主機(jī)信息
API參考手冊(cè):(https://www.zabbix.com/documentation/3.0/manual/api/reference/hostgroup/get)
Zabbix Api獲取主機(jī)組zabbix_group.py
import zabbix_base
token = zabbix_base.get_token()
data = {
"jsonrpc": "2.0",
"method": "hostgroup.get",
"params": {
"output": "extend",
},
"auth": token,
"id": 0
}
result = zabbix_base.zabbix_api_common(data)
print(result)
只獲取組ID+組名字
import zabbix_base
token = zabbix_base.get_token()
data = {
"jsonrpc": "2.0",
"method": "hostgroup.get",
"params": {
"output": ['name'],
},
"auth": token,
"id": 0
}
result = zabbix_base.zabbix_api_common(data)
print(result)
for i in result['result']:
print(i)
加入過(guò)濾娃豹,官方文檔
data = {
"jsonrpc": "2.0",
"method": "hostgroup.get",
"params": {
"output": ['name'],
"filter": {
"name": [
"shijiange"
]
}
},
"auth": token,
"id": 0
查詢主機(jī)組及主機(jī)信息zabbix_group.py
data = {
"jsonrpc": "2.0",
"method": "hostgroup.get",
"params": {
"output": ['name'],
"selectHosts": ["host"],
},
"auth": token,
"id": 0
}
三焚虱、Zabbix Api獲取模板信息
Zabbix Api獲取模板信息
import zabbix_base
token = zabbix_base.get_token()
data = {
"jsonrpc": "2.0",
"method": "template.get",
"params": {
"output": ["host"],
},
"auth": token,
"id": 1
}
result = zabbix_base.zabbix_api_common(data)
for i in result['result']:
print(i)
四、Zabbix Api創(chuàng)建監(jiān)控主機(jī)
Api添加主機(jī)組
groupname = "shijiangeapigroup"
data={
"jsonrpc": "2.0",
"method": "hostgroup.create",
"params": {
"name": groupname
},
"auth": token,
"id": 1
}
Api添加主機(jī)懂版,如果是Linux建議大家還是自動(dòng)注冊(cè)
hostname='zabbixapihost'
hostip = '1.1.1.1'
groupid = 24
templateid="10001"
data = {
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": hostname,
"interfaces": [{
"type": 1,
"main": 1,
"useip": 1,
"ip": hostip,
"dns": "",
"port": "10050"
}],
"groups": [{
"groupid": groupid
}],
"templates": [{
"templateid": templateid
}],
},
"auth": token,
"id": 1
}
interfaces接口解析.png