要求はこうです:
アラームを監視するためにzabbixを使用して、長い時間の出現のために、アラームの数、忙しい担当者など、これらはアラームの内容のいくつかにつながる無視されるので、誰がアラーム情報の種類を受信したに反応するレポートが必要で、どのように多くの、これらのケースが処理され、処理の進捗状況を決定するかどうかを受信しただけでなく、人的資源のより良い配分をすることができます。
需要分析の前提:
1、zabbixにはレポート機能がついていますが、この機能には制限があります;
2、データベースは、テーブルの情報を見つけるために、結果を表示するための二次的な判断はありません。
プロセス
2つ目の方法として選ばれたのが、データベース。
zabbixデータベースのテーブルをざっと見たところ、対応するリレーションシップを持つ可能性のあるテーブルは以下の3つです:
実際には、私は結果を表示するには、ここ1表と3表2表を使用するだけで、実際には、さまざまな方法のプレゼンテーションの結果は、****も必要になることがあります "ユーザーグループ "テーブルの結果のプレゼンテーションとグループメンバーの管理。
結果は以下の通りです:
メール審査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;
SMSスクリーニング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の条件を変更することができます。
特に注意が必要です:
クロック・フィールドはunixタイムスタンプで、目的のフィルタを得るために変換することができます。