zabbix报警统计信息的dashboard

需求是这样的sql

       用zabbix来监控报警,那么时间久了、报警次数多了、人员忙了、这些状况会致使一些报警内容被忽略,因此须要一个报表来反应谁收到了什么样的报警信息,收到了多少条,从而来判断这些状况是否被处理及处理进度,以及能够更好的分配人力资源,防止工做都压到1我的身上。
数据库


需求分析假设bash

       一、用zabbix自带报表功能,可是这个东西存在局限性,还未发现有此功能;ide

               二、数据库中查找表的信息,历来进行二次判断进行结果展示。spa



进程:
3d

   选用了第二种方法:数据库。unix

wKioL1MBe0WznLCqAAFF2pbfyeg318.jpg

   大概看了下zabbix数据库中的表,大概找出了下面3个表可能存在相应的关系:
rest

wKiom1MBe9Hybm9EAAaZHYtcBn0331.jpg


其实,我这里的结果只使用了1表和3表2张表进行结果展示,其实结果呈现的方法不少种,可能最后还会须要“用户组”表,进行结果展示及组员管理。blog


我这里将结果展示成了下面的内容:(应用级监控邮件报警的历史发送状况)进程

wKiom1MBfV7xnSb3AAVoLXW5YJg592.jpg

邮件筛选sql:
select userid,name, sum(case when subject like '%CPU systime%' then 1 end) systime, sum(case when subject like '%CPU USE%' then 1 end) cpuuse, sum(case when subject like '%Disk I%' then 1 end) diskio, sum(case when subject like '%available memory%' then 1 end) mem, sum(case when subject like '%is unreachable%' then 1 end) downtime, sum(case when subject like '%restarted%' then 1 end) restart, sum(case when subject like '%has been changed%' then 1 end) passchange, sum(case when subject like '%Free disk%' then 1 end) disk, sum(case when subject not like '%CPU%' and subject not like '%available memory%' and subject not like '%Disk%' and subject not like '%is unreachable%' and subject not like '%restart%' and subject not like '%has been changed%' and subject not like '%disk%' then 1 end) other from (select a.userid,c.name,a.subject from alerts a,users c where a.mediatypeid='6' and a.clock>'1392220800' and a.clock<'1392307200' and a.userid=c.userid and a.status='1' and a.subject not like '%OK%') at group by userid;



短信筛选sql:
select userid,name, sum(case when subject like '%CPU systime%' then 1 end) systime, sum(case when subject like '%CPU USE%' then 1 end) cpuuse, sum(case when subject like '%Disk I%' then 1 end) diskio, sum(case when subject like '%available memory%' then 1 end) mem, sum(case when subject like '%is unreachable%' then 1 end) downtime, sum(case when subject like '%restarted%' then 1 end) restart, sum(case when subject like '%has been changed%' then 1 end) passchange, sum(case when subject like '%Free disk%' then 1 end) disk, sum(case when subject not like '%CPU%' and subject not like '%available memory%' and subject not like '%Disk%' and subject not like '%is unreachable%' and subject not like '%restart%' and subject not like '%has been changed%' and subject not like '%disk%' then 1 end) other from (select a.userid,c.name,a.subject from alerts a,users c where a.mediatypeid='3' and a.clock>'1392220800' and a.clock<'1392307200' and a.userid=c.userid and a.status='1' and a.subject not like '%OK%') at group by userid;



其中sql的条件能够更改。


须要特别注意的是

clock字段是 unix的时间戳,须要的筛选条件能够进行转换进行得到。

相关文章
相关标签/搜索