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的時間戳,須要的篩選條件能夠進行轉換進行得到。

相關文章
相關標籤/搜索