3、获取每台主机的每张图形
###################################################################
#查找一台主机的所有图形和图形id
def hostgraph_get(self, hostname):
data = json.dumps({
"jsonrpc": "2.0",
"method": "host.get",
"params": { "selectGraphs": ["graphid","name"],
"filter": {"host": hostname}},
"auth": self.authID,
"id": 1})
res = self.get_data(data)['result']
#可以返回完整信息rs,含有hostid
return res[0]['graphs']
注意传入的参数是主机名而不是主机id,结果也是由字典组成的列表。
4、获取每张图的监控对象item
#可以返回完整信息rs,含有hostid
tmp = res[0]['items']
items = []
for value in tmp:
if '$' in value['name']:
name0 = value['key_'].split('[')[1].split(']')[0].replace(',', '')
name1 = value['name'].split()
if 'CPU' in name1:
name1.pop(-2)
name1.insert(1,name0)
else:
name1.pop()
name1.append(name0)
name = ' '.join(name1)
tmpitems = {'itemid':value['itemid'],'delay':value['delay'],'units':value['units'],'name':name,'value_type':value['value_type'],
'lastclock':value['lastclock'],'lastvalue':value['lastvalue']}
else:
tmpitems = {'itemid':value['itemid'],'delay':value['delay'],'units':value['units'],'name':value['name'],'value_type':value['value_type'],
'lastclock':value['lastclock'],'lastvalue':value['lastvalue']}
items.append(tmpitems)
return items
返回的数据已经包含了最新的一次监控数据的值和取值的时间戳,如果只需要取最新的监控数据,到这里其实就可以了,记得这次传入的参数是graphid。
5、根据itemid取得更多的监控数据
下面是取10条监控数据,可以任意更改参数获取更多的数据,全凭自己所需了。
################################################################
#获取历史数据,history必须赋值正确的类型0,1,2,3,4 float,string,log,integer,text
def history_get(self, itemid, i):
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/fuwuqi/)data = json.dumps({
"jsonrpc": "2.0",
"method": "history.get",
"params": { "output": "extend",
"history": i,
"itemids": itemid,
"sortfield": "clock",
"sortorder": "DESC",
"limit": 10},
"auth": self.authID,
"id": 1})
res = self.get_data(data)['result']
return res
上面的所有代码加起来就是一个Zabbix取数据的类。取出来的数据可以用RRDtool绘图或做其它用途了