我正在编写一个python脚本,该脚本可以进行一些分析。此脚本使用以下zabbix api获取项的最后一个值:
getlastvalue = {
"jsonrpc":"2.0",
"method":"item.get",
"params":{
"output":"extend",
"hostids":"10084",
"search":{
"key_":"vfs.fs.size[/var/log,used]"
},
"sortfield":"name"
},
"auth":mytoken,
"id":1
}我的脚本分析响应并产生这个反馈:
LatestValue:499728384 LatestValueEpoch:1553573850 HowLongAgo:33secs ItemID:51150现在,我想知道从ago...meaning时间24小时到24小时这个项目的值是多少。这就是我遇到麻烦的地方。我想我可能没有使用正确的json。但我一直在用的是:
historyget = {
"jsonrpc":"2.0",
"method":"history.get",
"params":{
"output":[
"itemid",
"extend"
],
"time_from":"",
"time_to":"",
"itemids":[
"51150"
]
},
"auth":mytoken,
"id":1
}我在脚本中替换了time_from和time_to的值,以反映昨天的时间(24小时前正好是当前时间)。但我得到的回应不是我想要的。我在这里做错什么了?
发布于 2019-03-26 08:45:51
您必须使用history.get API调用。
使用time_from、time_till和limit的组合,您应该相应地得到一个值数组或单个值。
重要:您必须在history调用中指定history.get参数(要返回的历史对象类型):我通常做一个item.get来捕获我需要的东西,然后是一个history.get。
我以助手的身份编写了一个小python示例:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Get history values for specific items in a time range:
# ./getItemHistoryByName.py -H some-host -I "ICMP response time" -f "26/6/2018 16:00" -t "27/6/2018 23:59"
ItemID: 77013 - Item: ICMP response time - Key: icmppingsec
1530021641 26/06/2018 16:00:41 Value: 0.1042
1530021701 26/06/2018 16:01:41 Value: 0.0993
1530021762 26/06/2018 16:02:42 Value: 0.1024
1530021822 26/06/2018 16:03:42 Value: 0.0966
[cut]
"""
from zabbix.api import ZabbixAPI
import sys, argparse
import time
import datetime
zabbixServer = 'http://yourserver/zabbix/'
zabbixUser = 'someuser'
zabbixPass = 'somepass'
def main(argv):
parser = argparse.ArgumentParser()
parser.add_argument('-H', required=True, metavar='Hostname')
parser.add_argument('-I', required=True, metavar='Item Name')
parser.add_argument('-f', required=True, metavar='From Timestamp')
parser.add_argument('-t', required=True, metavar='Till Timestamp')
args = parser.parse_args()
zapi = ZabbixAPI(url=zabbixServer, user=zabbixUser, password=zabbixPass)
fromTimestamp = time.mktime(datetime.datetime.strptime(args.f, "%d/%m/%Y %H:%M").timetuple())
tillTimestamp = time.mktime(datetime.datetime.strptime(args.t, "%d/%m/%Y %H:%M").timetuple())
f = { 'name' : args.I }
items = zapi.item.get(filter=f, host=args.H, output='extend' )
for item in items:
print "ItemID: {} - Item: {} - Key: {}".format(item['itemid'], item['name'], item['key_'])
values = zapi.history.get(itemids=item['itemid'], time_from=fromTimestamp, time_till=tillTimestamp, history=item['value_type'])
for historyValue in values:
currentDate = datetime.datetime.fromtimestamp(int(historyValue['clock'])).strftime('%d/%m/%Y %H:%M:%S')
print "{} {} Value: {}".format(historyValue['clock'], currentDate, historyValue['value'])
if __name__ == "__main__":
main(sys.argv[1:])https://stackoverflow.com/questions/55350024
复制相似问题