Oralceアラートログの監視方法について

お世話になっております。

「Oralceアラートログの監視方法について」質問させていただきます。

まず、使用している環境についてお伝えします。

<環境>
Zabbix OS:CentOS8
Zabbix Ver:5.0.5
DB:mariadb10.3
php:Ver7.2
監視対象:Windows Server2016(Oracle18cが入っております。)

【質問内容】
Oracleアラートログの「ORA-」を含む一文を検知したいのですが、以下のような事象が起こっております。
つきましては、事象に対する対処法もしくはそれに代わる監視設定をご教授頂けますと幸いです。
~起きている事象~
Oracleアラートログに、数秒間の間に数件のORA-エラーが吐き出されおり、それを監視しているが、
検知はできております(※1) が、アクションでメール通知する際に1つのエラーのみ通知されている状況です。
※1
最新データ上から出力されたORA-エラーが表示されている

例)
※ORA-2~ORA-5のエラーも検知したいが、ORA-1のエラーのみが5件検知される(ORA-1~ORA-5の計5件分)
ORA-1 ←検知できている。アクションでメール通知されている
ORA-2 ←検知できている。アクションでメール通知されていない
ORA-3 ←検知できている。アクションでメール通知されていない
ORA-4 ←検知できている。アクションでメール通知されていない
ORA-5 ←検知できている。アクションでメール通知されていない

現在は以下の設定をしております。

ZabbixAgentタイプ:ZabbixAgent アクティブ
キー:logrt["D:\app\Administrator\diag\rdbms\orcl\orcl\trace\alert_orcl.log",ORA-,,,skip]
データ型:ログ
監視間隔:1m
トリガー:{Ora18C-Win2016:logrt["D:\app\Administrator\diag\rdbms\orcl\orcl\trace\alert_orcl.log",ORA-,,,skip].iregexp(ORA-)}=1
アクション:
(アクションタブ内容)
計算のタイプ:And/Or(A and B and (C or D) and E)
ラベル 名前
A メンテナンス期間外
B アプリケーション 等しい Log
C トリガーの深刻度 等しい 致命的な障害
D トリガーの深刻度 等しい 重度の障害
E ホスト 等しい Ora18C-Win2016
(実行内容タブ内容)
デフォルトのアクション実行ステップの間隔:1h
メンテナンス中に実行を保留:チェックが入っている
実行内容:ステップ1:ユーザーにメッセージを送信(開始時刻:すぐに/継続期間:標準)
ステップ:1-1
ステップの間隔:0
メッセージで設定しているもの:
件名:【障害発生】【{TRIGGER.SEVERITY}】【{TRIGGER.HOSTGROUP.NAME}】【{HOST.NAME1}】【{TRIGGER.NAME}監視】
メッセージ:
障害検知日時:{EVENT.DATE} {EVENT.TIME}
重要度:{TRIGGER.SEVERITY}
ホストグループ名:{TRIGGER.HOSTGROUP.NAME}
対象ホスト名:{HOST.NAME1}
監視名:{TRIGGER.NAME}監視
検知した値:{ITEM.VALUE1}
コメント:{TRIGGER.DESCRIPTION}

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー Yasumi の写真

通知メールの本文に、検知したログ内容すべてを表示させたい、ということだと理解します。
結論から言うと、実現することは難しいです。

通知メールに、ログ内容を表示させる役割を担っているのは下記の一文です。
==============================
検知した値:{ITEM.VALUE1}
==============================

そして、{ITEM.VALUE1}に格納される値は、メールを通知する時点での
アイテムの最新の値になっているため指定をすることができません。

これを解決するための1つの手法としては、アイテムとトリガーの設定を細分化させる、という方法が思いつきます。
==============================
【現在】
トリガー:{Ora18C-Win2016:logrt["D:\app\Administrator\diag\rdbms\orcl\orcl\trace\alert_orcl.log",ORA-,,,skip].iregexp(ORA-)}=1

【細分化後】
トリガー:{Ora18C-Win2016:logrt["D:\app\Administrator\diag\rdbms\orcl\orcl\trace\alert_orcl.log","ORA-02049",,,skip].iregexp()}=1
トリガー:{Ora18C-Win2016:logrt["D:\app\Administrator\diag\rdbms\orcl\orcl\trace\alert_orcl.log","ORA-01031",,,skip].iregexp()}=1 など
==============================
上記のようにエラーコード別にアイテム・トリガーを用意してアクションを起動させれば、
{ITEM.VALUE1}に格納される値はすべてエラーコードと等しくなります。
※それでも{ITEM.VALUE1}には最新値が格納されるため、複数行ORA-02049が出たら、そのうちの最新の値しかメール本文には記載されないです

ユーザー toyda の写真

Yasumi 様

お世話になっております。ご確認・ご返信ありがとうございます。

私の記載内容が分かり辛く申し訳ございません。

>これを解決するための1つの手法としては、アイテムとトリガーの設定を細分化させる、という方法が思いつきます。
>【細分化後】
>トリガー:{Ora18C-Win2016:logrt["D:\app\Administrator\diag\rdbms\orcl\orcl\trace\alert_orcl.log","ORA-02049",,,skip].iregexp()}=1
>トリガー:{Ora18C-Win2016:logrt["D:\app\Administrator\diag\rdbms\orcl\orcl\trace\alert_orcl.log","ORA-01031",,,skip].iregexp()}=1 など
出てくるORA-エラーは予測ができない為、上記ですと要件を満たすのは難しそうです。
お忙しいところ、ご返信頂きありがとうございました。

ユーザー TNK の写真

トリガーの設定内の「障害イベント生成モード」はどのように設定
されていますか?
エラー発生行ごとにアクションを実行したいのであれば、イベント
生成モードで「複数」を選択してみてください。

ユーザー toyda の写真

TNK 様

お世話になっております。
ご確認・ご返信頂きありがとうございます。

>トリガーの設定内の「障害イベント生成モード」はどのように設定
>されていますか?
>エラー発生行ごとにアクションを実行したいのであれば、イベント
>生成モードで「複数」を選択してみてください。
障害イベント生成モードは「複数」を選択している状況です。

最新データ上はORA-1~ORA-5まで検知・確認できるのですが、メッセージでとばすと一つのORA-エラー( 例)ORA-1が5通飛んでくる)のみの状況です。
使用しているマクロがダメなのか、トリガーの設定が間違っているのかそれともバグなのかわからない状態になっております。

ユーザー TNK の写真

アクションのメッセージ内で{ITEM.VALUE1}を使用していれば、条
件が合致した時の値に置き換えられるはずなので、過去の値を送り
続けるということはないはずです。

監視データ -> 障害 で、該当するイベントの詳細な情報を確認し
てください。
各アイテムの値を取得した時刻と、各イベントの発生時刻とを照ら
し合わせて、アクションのメッセージ内容と見比べてみてください。

一応確認なのですが、Zabbixエージェント側も5.0.5もしくは、
5.0.xのバージョンを使用されていますか?

ユーザー toyda の写真

TNK様

お世話になっております。
返信が遅くなり申し訳ございません。

>監視データ -> 障害 で、該当するイベントの詳細な情報を確認し
>てください。
事象を再現させ確認しましたところ、最初にお伝えしていた内容と若干異なる事象になりました。
実機上は13個のORA-エラーを吐き出しておりますが、監視データ→障害上では、12個のみの検知になっており、全ておなじORA-エラーになってしまっておりました。

>一応確認なのですが、Zabbixエージェント側も5.0.5もしくは、
>5.0.xのバージョンを使用されていますか?
はい。同じ5.0.xのバージョンを使用しておりますが、Agent2になります