主要是利用zabbix的api來對(duì)數(shù)據(jù)進(jìn)行獲取處理,實(shí)現(xiàn)思路如下:
創(chuàng)新互聯(lián)長(zhǎng)期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為光澤企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、做網(wǎng)站,光澤網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
x=(datetime.datetime.now()-datetime.timedelta(minutes=120)).strftime("%Y-%m-%d %H:%M:%S")
y=(datetime.datetime.now()).strftime("%Y-%m-%d %H:%M:%S")
def timestamp(x,y):
p=time.strptime(x,"%Y-%m-%d %H:%M:%S")
starttime = str(int(time.mktime(p)))
q=time.strptime(y,"%Y-%m-%d %H:%M:%S")
endtime= str(int(time.mktime(q)))
return starttime,endtime
def get_hosts(groupids,auth):
data ={
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [ "name"],
"groupids": groupids,
"filter":{
"status": "0"
},
"selectInterfaces": [
"ip"
],
},
"auth": auth, # theauth id is what auth script returns, remeber it is string
"id": 1
}
gethost=requests.post(url=ApiUrl,headers=header,json=data)
return json.loads(gethost.content)["result"]
host=[]
print(hosts)
for i in hosts:
item1=[]
item2=[]
#print(i)
dic1={}
for j in ['vfs.fs.size[C:,total]','vm.memory.size[total]','system.cpu.num']:
data={
"jsonrpc": "2.0",
"method": "item.get",
"params": {
"output": [
"itemid"
],
"search": {
"key_": j
},
"hostids": i['hostid']
},
"auth":auth,
"id": 1
}
getitem=requests.post(url=ApiUrl,headers=header,json=data)
item=json.loads(getitem.content)['result']
hisdata={
"jsonrpc":"2.0",
"method":"history.get",
"params":{
"output":"extend",
"time_from":timestamp[0],
#"time_till":timestamp[1],
"history":0,
"sortfield": "clock",
"sortorder": "DESC",
"itemids": '%s' %(item[0]['itemid']),
"limit":1
},
"auth": auth,
"id":1
}
gethist=requests.post(url=ApiUrl,headers=header,json=hisdata)
hist=json.loads(gethist.content)['result']
item1.append(hist)
for j in ['vfs.fs.size[C:,used]','vm.memory.size[used]','system.cpu.load']:
data={
"jsonrpc": "2.0",
"method": "item.get",
"params": {
"output": [
"itemid"
],
"search": {
"key_": j
},
"hostids": i['hostid']
},
"auth":auth,
"id": 1
}
getitem=requests.post(url=ApiUrl,headers=header,json=data)
item=json.loads(getitem.content)['result']
trendata={
"jsonrpc":"2.0",
"method":"trend.get",
"params":{
"output": [
"itemid",
"value_max",
"value_avg"
],
"time_from":timestamp[0],
"time_till":timestamp[1],
"itemids": '%s' %(item[0]['itemid']),
"limit":1
},
"auth": auth,
"id":1
}
gettrend=requests.post(url=ApiUrl,headers=header,json=trendata)
trend=json.loads(gettrend.content)['result']
item2.append(trend)
dic1['Hostname']=i['name']
dic1['IP']=i['interfaces'][0]['ip']
dic1['磁盤C:Total(B)']=round(float(item1[0][0]['value'])/1024**3,2)
dic1['磁盤最大C:Used(B)']=round(float(item2[0][0]['value_max'])/1024**3,2)
dic1['內(nèi)存Total(B)']=round(float(item1[1][0]['value'])/1024**3,2)
dic1['內(nèi)存最大Used(B)']=round(float(item2[1][0]['value_max'])/1024**3,2)
dic1['內(nèi)存平均used(B)']=round(float(item2[1][0]['value_avg'])/1024**3,2)
dic1['CPU負(fù)載最大值']=item2[2][0]['value_max']
dic1['CPU負(fù)載平均值']=item2[2][0]['value_avg']
dic1['CPU 核數(shù)']=item1[2][0]['value']
x = time.localtime(int(item1[2][0]['clock']))
item1[2][0]['clock'] = time.strftime("%Y-%m-%d %H:%M:%S", x)
dic1['clock']=item1[2][0]['clock']
host.append(dic1)
print(item)
print(host)
return host
def writecsv(getitem1):
with open('data.csv','w',encoding='utf-8-sig') as f:
#f.write(codecs.BOM_UTF8)
writer = csv.DictWriter(f,csvheader)
writer.writeheader()
for row in getitem1:
writer.writerow(row)
完整代碼可以訪問github地址:“https://github.com/sunsharing-note/zabbix/blob/master/xunjian_auto.py”
zabbix API地址:https://www.zabbix.com/documentation/4.0/zh/manual/api/reference/history/get
歡迎各位關(guān)注個(gè)人公號(hào)“沒有故事的陳師傅”