Skip to content

app_report_available

遇见王斌 edited this page Dec 4, 2017 · 8 revisions

report报表

1 简单了解内容

report 包括以下内容

服务器可用性报表

  • 服务器可用性报表使用Agent ping计算,Agent ping 成功时会入库1,如果失败时,则不入库。
  • trend会每个小时将history中的值计算出最大值,最小值,和平均值,这里我们需要的是trend小时的记录个数即可

2 报表

2.1 服务器可用性报表1

输出显示时加--table可以表框显示 Screenshot

输出显示时加--xls ceshi.xls可以导出excel文件,如下

Screenshot

2.2 服务器可用性报表2

服务器可用性报表2 为界面上可用性报表的输出

2.2.1 使用方法

#zabbix_api --report_available2 "2016-07-01 00:00:00" "2016-09-01 00:00:00" --hostid 10105 --table

其他参数说明
--item_key itemkey.example   # 选择特定 item 进行输出
--hostid  hostid             # 选择特定主机
--hostgroupid hostgroupid    # 选择特定主机组

程序输出

+Availability report---------------+--------------------------------------------------------------+----------+----------+-----------+
| hostname        | ip             | Name                                                         | Problems | OK       | prevvalue |
+-----------------+----------------+--------------------------------------------------------------+----------+----------+-----------+
| Zabbix server   | 127.0.0.1      | Zabbix agent on Zabbix server is unreachable for 5 minutes   | 0        | 100%     | 1         |
| Zabbix server   | 127.0.0.1      | Processor load is too high on Zabbix server                  | 0        | 100%     | 0.0000    |
| Zabbix server   | 127.0.0.1      | Free disk space is less than 20% on volume /                 | 0        | 100%     | 68.9522   |
| net137          | 192.168.19.137 | Zabbix agent on net137 is unreachable for 5 minutes          | 0        | 100%     | 1         |
| net137          | 192.168.19.137 | Processor load is too high on net137                         | 0        | 100%     | 0.0000    |
| net137          | 192.168.19.137 | Free disk space is less than 20% on volume /                 | 0        | 100%     | 18.0277   |
| net139          | 192.168.19.139 | Zabbix agent on net139 is unreachable for 5 minutes          | 0        | 100%     | 1         |
| net139          | 192.168.19.139 | Processor load is too high on net139                         | 0        | 100%     | 0.0000    |
| net139          | 192.168.19.139 | Free disk space is less than 20% on volume /                 | 0        | 100%     | 18.0279   |
| net225          | 192.168.19.225 | Zabbix agent on net225 is unreachable for 5 minutes          | 0        | 100%     | 1         |
| net225          | 192.168.19.225 | Processor load is too high on net225                         | 0        | 100%     | 0.0400    |
| net225          | 192.168.19.225 | Free disk space is less than 20% on volume /                 | 0        | 100%     | 59.8441   |
| 192.168.19.153  | 192.168.19.153 | Zabbix agent on 192.168.19.153 is unreachable for 5 minutes  | 0        | 100%     | 1         |
| 192.168.19.153  | 192.168.19.153 | Processor load is too high on 192.168.199.153                | 0.2694%  | 99.7306% | 0.0000    |
| 192.168.19.153  | 192.168.19.153 | Free disk space is less than 20% on volume /                 | 0        | 100%     | 25.7349   |
+-----------------+----------------+--------------------------------------------------------------+----------+----------+-----------+

zabbix界面上显示

Screenshot

输出显示时加--xls ceshi.xls可以导出excel文件

2.2.2 指定特定的 item 进行输出

[root@meetbill ~]# echo agent.ping >> item_list
[root@meetbill ~]# zabbix_api --report_available2 "2017-11-01 00:00:00" "2017-12-01 00:00:00"  --table  --item_key /root/item_list 
zabbix_manager:[1.4.04]
ALL
+Availability report+-----------------+----------------------------------------------------------------+----------+----------+-----------+
| hostname          | ip              | Name                                                           | Problems | OK       | prevvalue |
+-------------------+-----------------+----------------------------------------------------------------+----------+----------+-----------+
| Zabbix server     | 127.0.0.1       | Zabbix agent on Zabbix server is unreachable for 5 minutes     | 0        | 100%     | 1         |
| zabbix ceshi      | 127.0.0.2       | Zabbix agent on Zabbix ceshi  is unreachable for 5 minutes     | 2%       | 98%      | 1         |
+-------------------+-----------------+----------------------------------------------------------------+----------+----------+-----------+

3 内部算法

3.1 服务器可用性报表1

可用性

  • 分子是:每小时统计个数的总和
  • 分母是:每小时应该统计的个数 * 小时数

每小时的个数 = 3600(小时总秒数)/X(每X秒采集一次数据)

X为item的delay值

3.2 服务器可用性报表2

可用性

  • 分子是:触发器判断后正常的时间段
  • 分母是:统计的时间段值

当触发器判断正常时,在event中记录的value值为"0",反之,记录的值为"1"

根据统计1———>0状态的总时间 与 统计的时间段相比,就可以得出服务器的可用性

在程序设计时有以下几种情况,event表中存放的是0101010101值,每个值都记录着发生的时间

在程序中重点需要处理,第一个值为0或者1,和最后一个值是0或者1的部分,中间部分都是使用0的时间点减去1的时间点的值

3.2.1 api 参数说明

  • expandDescription(值为 1):以触发器的名称扩展宏.
  • monitored(值为 1):只返回所属被监控主机启用触发器,且包含已启用的监控项.

3.2.2 官方处理数据说明

//report2.php 385行
$availability = calculateAvailability(
      $trigger['triggerid'],
      getRequest('filter_timesince'),
      getRequest('filter_timetill')
);

//include/triggers.inc.php 1002行
function calculateAvailability($triggerId, $startTime, $endTime)

(1)计算区间之前的状态
   event 状态为字符串"0"(正常),"1"(异常)
(2)区间内是否有event值
   1> 没有则根据区间之前的状态返回0或者100%
   2> 有则计算(0-->1的时间)/区间总时间

3.2.3 踩过的坑

获取可用性报表区间前的状态时,降序参数中使用"desc"无反应,使用"DESC"可以

"sortfield":["clock", "eventid"],
"sortorder":"DESC"

4 提示

(1)不加条件项时默认输出所有主机信息,如果有特定选择可以选择以下方式

--hostgroupid "主机组ID1,主机组ID2..."
--hostid "主机ID1,主机ID2..."