日常使用报表二次开发
日常使用报表调用关系
日常使用报表 _report 函数
(1)获取报表的时间范围
time_from = int(time.mktime(startTime))+1
time_till = int(time.mktime(endTime))
(2)获取需要输出的host 列表【主要是获取hostid】
host_list = self._hosts_get()
如果没有--hostid和--hostgroupid参数,此函数将会返回所有的主机列表
(3)对每个host输出和想要输出的item相关的item信息列表【主要是获取对应hostid的相关itemid】
itemid_all_list = self.item_get(host_info[0],itemName)
item_get 调用的是zabbix官方api item.get |
(4)依次对要查询的itemid进行求最大值,最小值以及平均值
report_min,report_max,report_avg = self.__trend_get(itemid,time_from,time_till)
这个函数的主要参数就是itemid 和 time_from,time_till
__trend_get调用的是zabbix官方api trend.get,同时对返回的数据进行了下求值运算(最大值,最小值,平均值) 计算方法为: 最大值:特定时间范围内,trend.get 获取特定itemid的最大值中的最大值 最小值:特定时间范围内,trend.get 获取特定itemid的最小值中的最小值 平均值:特定时间范围内,trend.get 获取特定itemid的平均值重新求平均值 trend.get 为zabbix3.0 加的api,故低于zabbix3.0的版本需要使用history.get 进行计算 |
(5)对输出的信息进行处理
if history_type=="3": report_min=int(report_min) report_max=int(report_max) report_avg=int(report_avg) report_min=str(report_min) report_max=str(report_max) report_avg=str(report_avg) |
类型是3时,结果为整数型的
0 - numeric float; 1 - character; 2 - log; 3 - numeric unsigned; 整型 4 - text. |
想要对数据进行处理时,可以从第5步方面着手处理,good luck