Graylogのアラート機能を使ってアラートメールを飛ばす
- 2019.07.04
- Graylog

Graylogからアラートメールを飛ばす場合、Alertを使用するわけですが、少しわかりにくいところがあります。そこで今回は、Graylog からアラートメールを飛ばす設定について説明します。
アラートの種類
Graylogのアラート機能は次のように3パターンの条件によって、アラートを発生させることができます。
Condition Type | 内容 |
Field Content Alert Condition | フィールドに特定の文字列が含まれている場合にアラートを発生させる |
Field Aggregation Alert Condition | フィールドの値が指定した集計関数の条件に一致した場合にアラートを発生させる |
Message Count Alert Condition | メッセージの件数が指定した件数を超えた場合にアラートを発生させる |
まずは、Conditionを作成して、次に Nofitiation を作成します。
Condition の作成
ここでは Fortigate の Virus ログが発生した場合を例としてアラートを作成します。

[Alert] – [Conditions] から [Add new conditon] を開きます。
ここで、アラートを設定したい stream を選択し、 Condition Type を
Message Count Alert Condition にして、 [Add alert conditon] をクリックします。
Fortinet Virus という Stream にメッセージが発生した場合にアラートを飛ばすための設定となります。

何かわかりやすいタイトルをつけます。
あと設定する項目としては、ThresholdとMessage Backlogの2つで基本は大丈夫です。
ここではThresholdは0としています。こうすることで、1件でもメッセージが発生したらアラートを飛ばすことができます。
もう一つのMessage Backlogは5としています。
ここを設定しておかないと、アラートメールの中に必要な項目を埋め込むことができません。
今回は、5分間のうち1件でもメッセージが発生したら、5件まで遡ったメッセージをアラートメールに埋め込むという設定になります。
ここまで設定したら [Save] をクリックしてください。
Notification の作成
[Notification] をクリックして、Notification設定画面に行きます。
そこで [Add new notification] をクリックします。

同様にして、Notify on stream から対象となる stream を選択し、Notification typeを Email Alert Callback にします。
ここで HTTP を選択すると、アラートとしてHTTP通信を飛ばすことができます。今回は、Email にしておきます。
[Add alert notification] をクリックしてください。
通知内容の設定

ここでどんなメールを飛ばすのか設定します。
まずは、分かりやすいタイトルを設定してください。
次に、User Recivers または E-Mail Receivers を設定します。
ここで設定したユーザーや Emailアドレスに通知が飛びます。
通知本文の設定
##########
Alert Description: ${check_result.resultDescription}
Date: ${check_result.triggeredAt}
Stream ID: ${stream.id}
Stream title: ${stream.title}
Stream description: ${stream.description}
Alert Condition Title: ${alertCondition.title}
${if stream_url}Stream URL: ${stream_url}${end}
Triggered condition: ${check_result.triggeredCondition}
##########
${if backlog}Last messages accounting for this alert:
${foreach backlog message}${message}
${end}${else}<No backlog>
${end}
デフォルトの本文はこのようになっていますが、このままでは、メッセージの全てが飛んできて可読性が非常に悪いです。
そのためこの本文を少し加工してやります。
まずは、${foreach backlog message} 〜 ${end} の間にある ${message} を削除します。
ここのforeach文は先ほど設定した、Message Backlogの件数分ループします。さきほどは5と設定したので、5件分までループしてくれます。
なので、Message Backlogを設定しておかないと、何も取得できないのです。

次に、メール本文に表示させたい項目を設定していきます。
例えば、ActionとApp、DestinationIPを設定するとします。
##########
Alert Description: ${check_result.resultDescription}
Date: ${check_result.triggeredAt}
Stream ID: ${stream.id}
Stream title: ${stream.title}
Stream description: ${stream.description}
Alert Condition Title: ${alertCondition.title}
${if stream_url}Stream URL: ${stream_url}${end}
Triggered condition: ${check_result.triggeredCondition}
##########
${if backlog}Last messages accounting for this alert:
${foreach backlog message}
-----------------------------------------------------
Action : ${message.fields.Action}
App : ${message.fields.App}
DestinationIP : ${message.fields.DestinationIP}
${end}${else}<No backlog>
${end}
というように設定しておきます。
こうすることで必要な項目のみメール本文に表示させることができ、可読性が向上します。
-
前の記事
Graylogのワイルドカード検索がうまく動作しない 2019.07.03
-
次の記事
WindowsイベントログをGraylogにInputする 2019.07.06