【问题标题】:zabbix api get value of item 24 hours ago from current timezabbix api从当前时间获取24小时前的项目值
【发布时间】:2019-03-26 04:46:59
【问题描述】:

我正在编写一个 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

现在,我想知道该物品在 24 小时前的价值是多少……意思是从 LatestValueEpoch 时间算起的 24 小时。这就是我遇到问题的地方。我想我可能没有使用正确的 json。但这是我一直在使用的:

historyget = {
   "jsonrpc":"2.0",
   "method":"history.get",
   "params":{
      "output":[
         "itemid",
         "extend"
      ],
      "time_from":"",
      "time_to":"",
      "itemids":[
         "51150"
      ]
   },
   "auth":mytoken,
   "id":1
}

我在脚本中替换了time_fromtime_to 的值,以反映昨天的时间(距当前时间正好24 小时前)。但我得到的回应不是我想要的。我在这里做错了什么?

【问题讨论】:

    标签: python json zabbix


    【解决方案1】:

    您必须使用history.get API 调用。

    使用time_fromtime_tilllimit 的组合,您应该得到一个值数组或相应的单个值。

    重要提示:您必须在 history.get 调用中指定 history 参数(要返回的历史对象类型):我通常会创建一个 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:])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      • 2015-09-11
      相关资源
      最近更新 更多