Zabbix監(jiān)控報(bào)警統(tǒng)計(jì)信息報(bào)表功能
需求是這樣的:
用zabbix來監(jiān)控報(bào)警,由于出現(xiàn)時(shí)間久了、報(bào)警次數(shù)多了、人員忙了等情況,這些會(huì)導(dǎo)致一些報(bào)警內(nèi)容被忽略,所以需要一個(gè)報(bào)表來反應(yīng)誰(shuí)收到了什么樣的報(bào)警信息,收到了多少條,從而來判斷這些情況是否被處理及處理進(jìn)度,以及可以更好的分配人力資源。
需求分析假設(shè):
1、用zabbix自帶報(bào)表功能,但是這個(gè)東西存在局限性,還未發(fā)現(xiàn)有此功能;
2、數(shù)據(jù)庫(kù)中查找表的信息,從來進(jìn)行二次判斷進(jìn)行結(jié)果展現(xiàn)。
進(jìn)程:
選用了第二種方法:數(shù)據(jù)庫(kù)。
大概看了下zabbix數(shù)據(jù)庫(kù)中的表,大概找出了下面3個(gè)表可能存在相應(yīng)的關(guān)系:
其實(shí),我這里的結(jié)果只使用了1表和3表2張表進(jìn)行結(jié)果展現(xiàn),其實(shí)結(jié)果呈現(xiàn)的方法很多種,可能***還會(huì)需要“用戶組”表,進(jìn)行結(jié)果展現(xiàn)及組員管理。
我這里將結(jié)果展現(xiàn)成了下面的內(nèi)容:(應(yīng)用級(jí)監(jiān)控郵件報(bào)警的歷史發(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的時(shí)間戳,需要的篩選條件可以進(jìn)行轉(zhuǎn)換進(jìn)行獲得。