利用zabbix API 统计一段时间内监控项的均值和峰值

  1 #coding:utf-8
  2 #给定主机IP获取一段时间内cpu的均值和峰值并写入文件(txt,可以跑完后直接把后缀名改为csv以表格形式打开);需要指定IP文件
  3 import requests
  4 import json
  5 import csv
  6 import time
  7 
  8 def get_token():
  9     data = {
 10         "jsonrpc": "2.0",
 11         "method": "user.login",
 12         "params": {
 13             "user": username,
 14             "password": password
 15         },
 16         "id": 0
 17     }
 18     r = requests.get(zaurl, headers=header, data=json.dumps(data))
 19     auth = json.loads(r.text)
 20     return auth["result"]
 21 
 22 def item_get(token, host, itemkey):
 23     data = {
 24         "jsonrpc": "2.0",
 25         "method": "item.get",
 26         "params": {
 27             "host": host,
 28             "search": {
 29                 "key_": itemkey
 30             },
 31         },
 32         "auth": token,
 33         "id": 1
 34     }
 35 
 36     request = requests.post(zaurl, data=json.dumps(data), headers=header)
 37     dict = json.loads(request.content)
 38 #    print(dict)
 39     return dict['result'][0]['itemid']
 40 
 41 def getdata(token,itemid, start, stop):
 42     data = {
 43         "jsonrpc": "2.0",
 44         "method": "history.get",
 45         "params": {
 46             "output": "extend",
 47             "itemids": itemid,
 48             "history": 0,
 49             "time_from":start,
 50             "time_till":stop
 51         },
 52         "id": 2,
 53         "auth": token,
 54 
 55     }
 56     request = requests.post(zaurl, headers=header, data=json.dumps(data))
 57     dict = json.loads(request.content)
 58     print(dict)
 59     return dict['result']
 60 
 61 def timecovert(stringtime):
 62     timeArray = time.strptime(stringtime, "%Y-%m-%d %H:%M:%S")
 63     timeStamp = int(time.mktime(timeArray))
 64     return timeStamp
 65 
 66 
 67 
 68 if __name__ == "__main__":
 69     zaurl = "http://xx.xx.xx.xx/zabbix/api_jsonrpc.php"
 70     header = {"Content-Type": "application/json"}
 71     username = "xxxx"
 72     password = "xxxx"
 73     hostfile="ip.txt"
 74     token = get_token()
 75     starttime = "2019-10-27 00:00:00"
 76     stoptime = "2019-10-29 00:00:00"
 77     start = timecovert(starttime)
 78     stop = timecovert(stoptime)
 79 #生成一个txt文件
 80     datafile = "D:\生产\工作\IP\\data.txt"
 81     fdata = open(datafile,'w')
 82     with open(hostfile, "r") as f:
 83         f1 = f.readlines()
 84         for ips in f1:
 85             host = ips.replace('\n', '').strip()
 86             # 修改参数
 87 #以下例子为cpu
 88             itemkey = "system.cpu.util[,user]"]"
 89             itemid = item_get(token, host, itemkey)
 90             data = getdata(token,itemid,start,stop)
 91             if data:
 92                 valuelist = []
 93                 for i in data:
 94                     valuelist.append(float(i["value"]))
 95                 avge = sum(valuelist)/len(valuelist)
 96                 max1 = max(valuelist)
 97                 fdata.write(host + ',' + str(round(avge,2)) + ',' + str(round(max1,2)) + '\n')
 98 #                print (host, avge, max1)
 99             else:
100                 print (host)
101     fdata.close()

 

posted @ 2019-10-30 09:40  三旌  阅读(2406)  评论(0编辑  收藏  举报