[comment]: # ({69aa4121-69aa4121})
# 1 トリガーによるイベント相関

[comment]: # ({/69aa4121-69aa4121})

[comment]: # ({61c380c5-f01b1f93})
#### 概要

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

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

これは、*問題イベント生成モード*パラメータが*複数*に設定されているトリガーの場合です。このようなトリガーは通常、ログ監視、トラップ処理などに使用されます。

Zabbix では、[タグ](/manual/config/tagging)に基づいて問題イベントを関連付けることができます。タグは、値を抽出し、問題イベントの識別を作成するために使用されます。これを利用して、一致するタグに基づいて問題を個別に閉じることもできます。

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

[comment]: # ({/61c380c5-f01b1f93})

[comment]: # ({12f3de38-12f3de38})
#### 仕組み

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

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

イベント相関の考え方は、Line1からの問題イベントとLine3からの解決、Line2からの問題イベントとLine4からの解決を<br>
一致させ、これらの問題を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" のようなタグを付ける<br>
必要があります。これは、ログラインに正規表現を適用して、タグの値を抽出することで実現できます。その後、イベントが<br>
作成されると、それぞれ "アプリケーション1" と "アプリケーション2" というタグが付けられ、問題を解決するために<br>
照合することができます。

[comment]: # ({/12f3de38-12f3de38})

[comment]: # ({5d32b87c-5d32b87c})
#### 設定

[comment]: # ({/5d32b87c-5d32b87c})

[comment]: # ({8d1971f2-8d1971f2})
##### アイテム

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

    log[/var/log/syslog]

![](../../../../assets/en/manual/config/event_correlation/correlation_item.png)

アイテムが設定された状態で、設定変更が反映されるまで1分ほど待ってから、[Latest data](/manual/web_interface/frontend_sections/monitoring/latest_data)にアクセスして、<br>
アイテムがデータ収集を開始したことを確認します。

[comment]: # ({/8d1971f2-8d1971f2})

[comment]: # ({57e60c4e-57e60c4e})
##### トリガ

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

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

::: noteimportant
"Stopping" という文字列を含む各行が問題とみなされるようにするには、トリガー設定の *障害イベント生成モード*を'複数'に設定します。
:::

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

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

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

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

-   *障害イベント生成モード*: 複数
-   *正常時のイベントクローズ*: タグの値が一致した場合のすべての問題
-   イベントマッチングのためのタグの名前を入力します

![](../../../../assets/en/manual/config/event_correlation/correlation_trigger.png)

-   [tags](/manual/config/tagging)を設定し、ログラインからタグの値を抽出する。

![](../../../../assets/en/manual/config/event_correlation/correlation_trigger2.png)

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

![](../../../../assets/en/manual/config/matched_problems.png){width="600"}

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

-   2つのアプリケーションが同じログファイルにエラーとリカバリメッセージを書いている場合、ユーザーは、{ITEM.VALUE}マクロ
    からアプリケーションAとアプリケーションBの名前を抽出するためにタグ値で別々の正規表現を使用することで、同じトリガーで
    異なるタグ値で2つの*アプリケーション*タグを使うことを決定することができます。（例：メッセージフォーマットが
    異なる場合）しかし、正規表現にマッチするものがない場合、予定通りには動作しないことがあります。正規表現にマッチしない
    場合、空のタグ値が生成され、問題と正常イベントの両方で1つの空のタグ値があれば、それらを関連付けるのに十分です。
    したがって、アプリケーションAからの回復メッセージは、アプリケーションBからのエラーメッセージを誤って閉じてしまう
    可能性があります。

```{=html}
<!-- -->
```

-   実際のタグとタグの値は、トリガーが起動したときにのみ表示されます。使用された正規表現が無効な場合、それは黙って 
    \*UNKNOWN** 文字列に置き換えられます。タグの値を持つ最初の問題イベントを見逃すと、同じタグの値を持つ後続の
    正常イベントが現れ、本来閉じられるはずのない問題イベントが閉じられることがあります。

```{=html}
<!-- -->
```

-   タグの値として、マクロ関数を使用しない{ITEM.VALUE}をタグの値として使用する場合、255文字の制限が適用されます。
    ログメッセージが長く、最初の255文字が非特異的である場合、これはまた、無関係な問題のための類似のイベントタグに
    なる可能性があります。

[comment]: # ({/57e60c4e-57e60c4e})
