ログ監視で監視周期内で検知したログ内容と検知件数をアクションに反映させる手法について
指定したホスト名のログ監視で監視周期内で検知したログ内容と検知件数をアクションに反映させる手法についてご教授ください。
(※以下において、監視対象サーバは「ホスト名」に変更して明記しています)
Zabbixは、ログ監視のログ集約機能がないので、監視周期内で検知したログの履歴や件数を取得して
アクションに明示的に反映したいと考えています。
以下のアイテム、トリガー(目的のトリガーは「トリガー1」)、アクションの設定で、10個の履歴や
監視周期内で検知した件数を把握することが可能のようですが、監視周期が短ければ、
アイテム1とアイテム2の検知件数の誤差は少ないですが、監視周期が長いと、監視周期内の
どの時間に実行させるか指定できないので、それぞれのアイテムの実行時間差が大きくなり?
(Zabbix 3.0から機能追加される?)アイテムの検知件数が異なるケースも発生するかとおもいます。
今回は、トリガー1の条件式で、以下のようにアイテム2の結果も確認する条件にしているので、
・条件式:
「{ホスト名:log[/var/log/messages,@messages].nodata(300)}=0
& {ホスト名:log[/var/log/messages,@messages].iregexp(@messages)}#0
& {ホスト名:Count.log.sum(300)}>0」
アイテム2の結果も含めてトリガー1が条件判断してくれるので一見問題ないような動きを
していますが、これで正しいのでしょうか?
1つのアイテムと1つのトリガーで検知ログ内容と件数を把握できる手法があれば最高ですが、
何か良いアイデアをお持ちでしたらご教授ください。
以下、別々アイテム(ログ監視と計算)で確認した例です。
Zabbix 2.2.11-1です。
【アイテム1】
・名前:「ログ監視(/var/log/messages)」
・タイプ:「Zabbixエージェント(アクティブ)」
・キー:「log[/var/log/messages,@messages]」
・データ型:「ログ」
・更新間隔:「300」
@messagesの正規表現の設定内容は、「error|warn|fail|fatal|ERROR|WARN|FAIL|FATAL|TEST」
【アイテム2】
・名前:「ログ監視_Count(/var/log/messages) on {HOST.NAME}」
・タイプ:「計算」
・キー:「Count.log」
・式:「count("ホスト名:log[/var/log/messages,@messages]",300)」
・データ型:「数値(整数)」
・データの形式:「10進数」
・更新間隔:「300」
【トリガー1】
・名前:「ログ監視(/var/log/messages) on {HOST.NAME}」
・条件式:
「{ホスト名:log[/var/log/messages,@messages].nodata(300)}=0
& {ホスト名:log[/var/log/messages,@messages].iregexp(@messages)}#0
& {ホスト名:Count.log.sum(300)}>0」
・障害イベントを継続して生成:「なし」
・深刻度:「重度の障害」
【トリガー2】
・名前:「ログ監視 Count Log on {HOST.NAME}」
・条件式:「{ホスト名:Count.log.sum(300)}>0」
・障害イベントを継続して生成:「なし」
・深刻度:「重度の障害」
【アクション】
・名前:「TEST ログ監視用 Mail」
・デフォルトの件名:「障害連絡: {HOST.NAME1}:{TRIGGER.NAME}」
・デフォルトのメッセージ:
-----------------------------ここから--------------------------------------------------------
Trigger: {TRIGGER.NAME} におきまして以下の通り、
障害が発生しましたのでご連絡いたします。
<トリガーStatus>: {TRIGGER.STATUS}
<障害発生日時>: {EVENT.DATE} {EVENT.TIME}
<障害発生ホスト>: {HOST.NAME1} {IPADDRESS}
<監視対象項目>: {TRIGGER.NAME} {TRIGGER.KEY}
<障害検知値>: {ITEM.VALUE}
<障害検知数>: {ITEM.VALUE3}
<重要度>: {TRIGGER.SEVERITY}
<検知区分(Event Status)>: {EVENT.STATUS}
Item values:
1. {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}) : {ITEM.VALUE1}
2. {ITEM.NAME2} ({HOST.NAME2}:{ITEM.KEY2}) : {ITEM.VALUE2}
3. {ITEM.NAME3} ({HOST.NAME3}:{ITEM.KEY3}) : {ITEM.VALUE3}
History values:
1. {{HOSTNAME}:{TRIGGER.KEY}.last(#1)}
2. {{HOSTNAME}:{TRIGGER.KEY}.last(#2)}
3. {{HOSTNAME}:{TRIGGER.KEY}.last(#3)}
4. {{HOSTNAME}:{TRIGGER.KEY}.last(#4)}
5. {{HOSTNAME}:{TRIGGER.KEY}.last(#5)}
6. {{HOSTNAME}:{TRIGGER.KEY}.last(#6)}
7. {{HOSTNAME}:{TRIGGER.KEY}.last(#7)}
8. {{HOSTNAME}:{TRIGGER.KEY}.last(#8)}
9. {{HOSTNAME}:{TRIGGER.KEY}.last(#9)}
Trigger Description:
{TRIGGER.DESCRIPTION}
Original event ID: {EVENT.ID}
---------------------------------------------ここまで------------------------------------
・リカバリメッセージ:「なし」
【試験】
上記の設定の状態で、「ホスト名」のホスト(Linuxサーバ)で「logger FAIL1」 から「logger FAIL7」まで
7個のログを書き込んでみました。
(1)トリガー2のアクション(確認のために作成したアクション)結果は以下で
5分内に7件検知していることがわかります。
------------------------------------ここから-------------------------------------------
件名:
障害連絡: ホスト名:ログ監視 Count Log on ホスト名
メッセージ:
Trigger: ログ監視 Count Log on ホスト名 におきまして以下の通り、
障害が発生しましたのでご連絡いたします。
<トリガーStatus>: PROBLEM
<障害発生日時>: 2016.02.03 16:17:52
<障害発生ホスト>: ホスト名 192.168.100.38
<監視対象項目>: ログ監視 Count Log on quorum01 Count.log
<障害検知値>: 7
<障害検知数>: *UNKNOWN*
<重要度>: High
<検知区分(Event Status)>: PROBLEM
Item values:
1. ログ監視_Count(/var/log/messages) on {HOST.NAME} (ホスト名:Count.log) : 7
2. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*) : *UNKNOWN*
3. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*) : *UNKNOWN*
History values:
1. 7
2. 0
3. 0
4. 0
5. 0
6. 0
7. 0
8. 0
9. 0
Trigger Description:
Original event ID: 192705
-------------------------------------ここまで---------------------------------
(2)トリガー1のアクション結果は以下で
同様に5分内に7件検知していることがわかります(<障害検知数>: 7)。
------------------------------------ここから-------------------------------------------
件名:
障害連絡: ホスト名:ログ監視(/var/log/messages) on ホスト名
メッセージ:
Trigger: ログ監視(/var/log/messages) on ホスト名 におきまして以下の通り、
障害が発生しましたのでご連絡いたします。
<トリガーStatus>: PROBLEM
<障害発生日時>: 2016.02.03 16:17:52
<障害発生ホスト>: ホスト名 192.168.100.38
<監視対象項目>: ログ監視(/var/log/messages) on ホスト名 log[/var/log/messages,@messages]
<障害検知値>: Feb 3 16:14:23 ホスト名 root: FAIL7
<障害検知数>: 7
<重要度>: High
<検知区分(Event Status)>: PROBLEM
Item values:
1. ログ監視(/var/log/messages) (ホスト名:log[/var/log/messages,@messages]) : Feb 3 16:14:23 ホスト名 root: FAIL7
2. ログ監視(/var/log/messages) (ホスト名:log[/var/log/messages,@messages]) : Feb 3 16:14:23 ホスト名 root: FAIL7
3. ログ監視_Count(/var/log/messages) on {HOST.NAME} (ホスト名:Count.log) : 7
History values:
1. Feb 3 16:14:23 ホスト名 root: FAIL7
2. Feb 3 16:14:21 ホスト名 root: FAIL6
3. Feb 3 16:14:20 ホスト名 root: FAIL5
4. Feb 3 16:14:19 ホスト名 root: FAIL4
5. Feb 3 16:14:18 ホスト名 root: FAIL3
6. Feb 3 16:14:16 ホスト名 root: FAIL2
7. Feb 3 16:14:15 ホスト名 root: FAIL1
8. Jan 27 17:10:04 ホスト名 root: FAIL6
9. Jan 27 17:10:03 ホスト名 root: FAIL5
Trigger Description:
Original event ID: 192704
---------------------------------------ここまで----------------------------------------
以上、よろしくお願いいたします。