在 Python 和 Zabbix API 中获取问题描述
Get problem description in Python and Zabbix API
我使用 trigger.get 方法来获取我的 Zabbix 监控中的所有问题:
trigger = zapi.trigger.get (triggerids=problem['objectid'], selectHosts='extend')
并且它工作正常。但是我得到了回应,例如:
'description': '{HOST.NAME} ( {ITEM.VALUE1} ) Lack of free swap space'
或
'description': 'DBM {HOST.NAME} ORA_ERR_DETAILS: {ITEM.VALUE1}'
现在我想获取值“ITEM.VALUE1”
他应该用什么方法,怎么用?
以更具描述性的方式:
我的程序return值:
'{HOST.NAME} ( {ITEM.VALUE1} ) Lack of free swap space'
我可以获取“{HOST.NAME}”,但无法获取“{ITEM.VALUE1}”。
我想要:
Host005.domain.com ( 42.52 % ) Lack of free swap space
您可以像这样指定您需要的字段
answer = z.do_request('apiinfo.version')
在JSON中回复:
{u'jsonrpc': u'2.0', u'result': u'3.0.2', u'id': u'1'}
python脚本回复:
print "Version:",answer['result']
Version: 3.0.2
感谢Simone的提示,问题已解决!
一个well-functioning代码:
#!/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:])
我使用 trigger.get 方法来获取我的 Zabbix 监控中的所有问题:
trigger = zapi.trigger.get (triggerids=problem['objectid'], selectHosts='extend')
并且它工作正常。但是我得到了回应,例如:
'description': '{HOST.NAME} ( {ITEM.VALUE1} ) Lack of free swap space'
或
'description': 'DBM {HOST.NAME} ORA_ERR_DETAILS: {ITEM.VALUE1}'
现在我想获取值“ITEM.VALUE1”
他应该用什么方法,怎么用?
以更具描述性的方式:
我的程序return值:
'{HOST.NAME} ( {ITEM.VALUE1} ) Lack of free swap space'
我可以获取“{HOST.NAME}”,但无法获取“{ITEM.VALUE1}”。
我想要:
Host005.domain.com ( 42.52 % ) Lack of free swap space
您可以像这样指定您需要的字段
answer = z.do_request('apiinfo.version')
在JSON中回复:
{u'jsonrpc': u'2.0', u'result': u'3.0.2', u'id': u'1'}
python脚本回复:
print "Version:",answer['result']
Version: 3.0.2
感谢Simone的提示,问题已解决!
一个well-functioning代码:
#!/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:])