Zabbix監(jiān)控報警統(tǒng)計信息報表功能
需求是這樣的:
用zabbix來監(jiān)控報警,由于出現(xiàn)時間久了、報警次數(shù)多了、人員忙了等情況,這些會導(dǎo)致一些報警內(nèi)容被忽略,所以需要一個報表來反應(yīng)誰收到了什么樣的報警信息,收到了多少條,從而來判斷這些情況是否被處理及處理進(jìn)度,以及可以更好的分配人力資源。
需求分析假設(shè):
1、用zabbix自帶報表功能,但是這個東西存在局限性,還未發(fā)現(xiàn)有此功能;
2、數(shù)據(jù)庫中查找表的信息,從來進(jìn)行二次判斷進(jìn)行結(jié)果展現(xiàn)。
進(jìn)程:
選用了第二種方法:數(shù)據(jù)庫。
大概看了下zabbix數(shù)據(jù)庫中的表,大概找出了下面3個表可能存在相應(yīng)的關(guān)系:
其實(shí),我這里的結(jié)果只使用了1表和3表2張表進(jìn)行結(jié)果展現(xiàn),其實(shí)結(jié)果呈現(xiàn)的方法很多種,可能***還會需要“用戶組”表,進(jìn)行結(jié)果展現(xiàn)及組員管理。
我這里將結(jié)果展現(xiàn)成了下面的內(nèi)容:(應(yīng)用級監(jiān)控郵件報警的歷史發(fā)送情況)
郵件篩選sql:
- selectuserid,name,sum(casewhensubjectlike'%CPUsystime%'then1end)systime,sum(casewhensubjectlike'%CPUUSE%'then1end)cpuuse,sum(casewhensubjectlike'%DiskI%'then1end)diskio,sum(casewhensubjectlike'%availablememory%'then1end)mem,sum(casewhensubjectlike'%isunreachable%'then1end)downtime,sum(casewhensubjectlike'%restarted%'then1end)restart,sum(casewhensubjectlike'%hasbeenchanged%'then1end)passchange,sum(casewhensubjectlike'%Freedisk%'then1end)disk,sum(casewhensubjectnotlike'%CPU%'andsubjectnotlike'%availablememory%'andsubjectnotlike'%Disk%'andsubjectnotlike'%isunreachable%'andsubjectnotlike'%restart%'andsubjectnotlike'%hasbeenchanged%'andsubjectnotlike'%disk%'then1end)otherfrom(selecta.userid,c.name,a.subjectfromalertsa,userscwherea.mediatypeid='6'anda.clock>'1392220800'anda.clock<'1392307200'anda.userid=c.useridanda.status='1'anda.subjectnotlike'%OK%')atgroupbyuserid;
短信篩選sql:
- selectuserid,name,sum(casewhensubjectlike'%CPUsystime%'then1end)systime,sum(casewhensubjectlike'%CPUUSE%'then1end)cpuuse,sum(casewhensubjectlike'%DiskI%'then1end)diskio,sum(casewhensubjectlike'%availablememory%'then1end)mem,sum(casewhensubjectlike'%isunreachable%'then1end)downtime,sum(casewhensubjectlike'%restarted%'then1end)restart,sum(casewhensubjectlike'%hasbeenchanged%'then1end)passchange,sum(casewhensubjectlike'%Freedisk%'then1end)disk,sum(casewhensubjectnotlike'%CPU%'andsubjectnotlike'%availablememory%'andsubjectnotlike'%Disk%'andsubjectnotlike'%isunreachable%'andsubjectnotlike'%restart%'andsubjectnotlike'%hasbeenchanged%'andsubjectnotlike'%disk%'then1end)otherfrom(selecta.userid,c.name,a.subjectfromalertsa,userscwherea.mediatypeid='3'anda.clock>'1392220800'anda.clock<'1392307200'anda.userid=c.useridanda.status='1'anda.subjectnotlike'%OK%')atgroupbyuserid;
其中sql的條件可以更改。
需要特別注意的是:
clock字段是 unix的時間戳,需要的篩選條件可以進(jìn)行轉(zhuǎn)換進(jìn)行獲得。