Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

1 トリガーによるイベント相関

概要

トリガーベースのイベント相関では、1つのトリガーによって報告された別々の問題を相関させることができます。

一般的に OK イベントは、1 つのトリガーによって作成された全ての問題イベントを閉じることができますが、より詳細な
ア プローチが必要な場合もあります。例えば、ログファイルを監視しているときに、ログファイル内の特定の問題を発見し、
まとめて閉じるのではなく、個別に閉じたい場合があります。

これは、Multiple Problem Event Generation が有効になっているトリガーがそうです。このようなトリガーは通常、
ログ監視、トラップ処理などに使用されます。

Zabbixでは、taggingに基づいて問題事象を関連付けることが可能です。タグは問題事象の値を抽出し、
識別を行うために使用されます。これを利用して、一致するタグに基づいて問題を個別にクローズすることも可能です。

言い換えれば、同じトリガーが、イベントタグによって識別される別のイベントを作成することができます。したがって、
問題イベントは、イベントタグによる識別に基づいて、1つ1つ識別され、別々に閉じることができます。

仕組み

ログモニタリングでは、以下のような行が表示されることがあります:

Line1: Application 1 stopped
       Line2: Application 2 stopped
       Line3: Application 1 was restarted
       Line4: Application 2 was restarted

イベント相関の考え方は、Line1からの問題イベントとLine3からの解決、Line2からの問題イベントとLine4からの解決を
一致させ、これらの問題を1つずつ解決することができることです:

Line1: Application 1 stopped
       Line3: Application 1 was restarted #problem from Line 1 closed
       
       Line2: Application 2 stopped
       Line4: Application 2 was restarted #problem from Line 2 closed

そのためには、これらの関連するイベントに、例えば "アプリケーション1" や "アプリケーション2" のようなタグを付ける
必要があります。これは、ログラインに正規表現を適用して、タグの値を抽出することで実現できます。その後、イベントが
作成されると、それぞれ "アプリケーション1" と "アプリケーション2" というタグが付けられ、問題を解決するために
照合することができます。

設定

item

始めに、例えばログファイルを監視するような項目を設定するのがよいでしょう:

log[/var/log/syslog]

item が設定された状態で、設定変更が反映されるまで1分ほど待ってから、Latest dataにアクセスして、
item がデータ収集を開始したことを確認します。

トリガ

item が動作している状態で、以下の設定を行う必要があります。triggerを設定します。
ログファイルのどのエントリに注意を払うべきかを決めることが重要です。例えば、次のトリガー式は、潜在的な問題を
知らせるために、'Stopping'のような文字列を検索します。

find(/My host/log[/var/log/syslog],,"regexp","Stopping")=1 

"Stopping" という文字列を含む各行が問題とみなされるようにするには、トリガー設定の Problem event generation mode
'Multiple'に設定します。

次に、リカバリー式を定義します。次のリカバリー式は、文字列 "Starting" を含むログ行が見つかった場合、すべての問題を
解決します:

find(/My host/log[/var/log/syslog],,"regexp","Starting")=1 

そうならないためには、すべての問題を解決するのではなく、対応する根本的な問題を解決するようにすることが重要です。
そこで役立つのがタグ付けです。

トリガー設定でタグを指定することにより、問題と解決策を一致させることができます。以下の設定を行う必要があります:

  • Problem event generation mode: Multiple
  • OK event closes: タグの値が一致した場合のすべての問題
  • イベントマッチングのためのタグの名前を入力します

  • tagsを設定し、ログラインからタグの値を抽出する。

正常に構成された場合、アプリケーションごとにタグ付けされた問題イベントが、MonitoringProblems に表示され、
解決に結びつきます。

設定ミスの可能性があるため、関係ない問題で似たようなイベントタグが作成される場合、以下のケースを確認してください。

  • 2つのアプリケーションが同じログファイルにエラーとリカバリメッセージを書いている場合、ユーザーは、{ITEM.VALUE}マクロ からアプリケーションAとアプリケーションBの名前を抽出するためにタグ値で別々の正規表現を使用することで、同じトリガーで 異なるタグ値で2つのアプリケーションタグを使うことを決定することができます。(例:メッセージフォーマットが 異なる場合)しかし、正規表現にマッチするものがない場合、予定通りには動作しないことがあります。正規表現にマッチしない 場合、空のタグ値が生成され、問題とOKイベントの両方で1つの空のタグ値があれば、それらを関連付けるのに十分です。 したがって、アプリケーションAからの回復メッセージは、アプリケーションBからのエラーメッセージを誤って閉じてしまう 可能性があります。
  • 実際のタグとタグの値は、トリガーが起動したときにのみ表示されます。使用された正規表現が無効な場合、それは黙って *UNKNOWN** 文字列に置き換えられます。タグの値を持つ最初の問題イベントを見逃すと、同じタグの値を持つ後続の OKイベントが現れ、本来閉じられるはずのない問題イベントが閉じられることがあります。
  • タグの値として、マクロ関数を使用しない{ITEM.VALUE}をタグの値として使用する場合、255文字の制限が適用されます。 ログメッセージが長く、最初の255文字が非特異的である場合、これはまた、無関係な問題のための類似のイベントタグに なる可能性があります。