オープンソース

一覧へ

15. ログ監視を行うには

15.1. ログ監視の概要

Graylogでは、特定の条件に基づいてアラートを生成することができます。 例えば、特定のメッセージがログに現れた場合や、例外検知のログが1分あたり50メッセージを超える場合などです。

Graylogでは、アラートが生成された際に、通知を送信することもできます。デフォルトでは通知をEメールで送信するか、もしくはHTTPを使って送信ができます。

ログ監視の設定は、メニューの Alerts リンクから移動した画面で行います。

GraylogのAlerts
  • Event Definitions では、アラートを生成するイベントを定義します。
  • Notifications は、通知方法や通知テンプレートを設定します。

Event DefinitionsNotifications は、独立した設定として存在しますが、この2つを組み合わせることでログ監視設定を行うことができます。

15.2. Event Definitions (イベントの定義)

Event Definitions のボタンをクリックして、イベントを定義します。

_images/event1.png

デフォルトでは、システム通知を行うための System notification events が登録されています。 イベントを新しく定義する場合は、 Create event definition をクリックします。

15.2.1. イベントの詳細設定

以下の画面で、イベントの詳細設定を行います。

Graylogのイベント定義

入力値の説明は以下の通りです。

  • Title : イベントの名前です。
  • Description : イベントの説明です。
  • Priority : イベントの優先度です。通知に書き込まれたり、Overviewでは優先度のアイコンが表示されます。

入力後 Next ボタンをクリックします。

15.2.2. イベント条件の設定

以下の画面で、イベントの条件を設定します。

Graylogのイベント条件

入力値の説明は以下の通りです。

  • Condition Type : 条件の種類を選択します。利用可能な条件は Filter & Aggregation です。
  • Search Query : 検索クエリを使用して条件を定義します。
  • Streams : 検索対象のStreamを選択します。空の場合は、すべてのStreamを検索対象とします。
  • Search within the last : 検索する時間を指定します。
  • Execute search every : 検索する間隔を指定します。
  • Enable : 定義したイベントを自動で実行する場合はチェックを入れます。
  • Filter has results : 条件にマッチした場合、イベントを作成します。
  • Aggregation of results reaches a threshold : 条件にマッチした結果が閾値に達した場合、イベントを作成します。

Note

Search within the last の時間が Execute search every よりも長い場合、同じログに対して複数のイベントが生成されます。

例えば、Search within the last を1分に設定し、 Execute search every を10秒に設定した場合、1分間のログエントリに対し10秒ごとに検索されるため、同じログエントリを6回検出することになります。

Hint

Aggregation of results reaches a threshold を選択した場合、閾値条件を設定することができます。

Graylogのイベントしきい値

入力値の説明は以下の通りです。

  • Group by Field(s) : フィルター結果をグループ化するためのフィールドを選択します。
  • Create Events for Definition : 集計結果の閾値条件を設定します。

入力後 Next ボタンをクリックします。

15.2.3. カスタムフィールドの設定

カスタムフィールドを追加すると、検索画面のフィールドとして表示されるようになります。検索画面でイベント結果を再度集計する時などに便利です。 なお、オプション設定のため必須ではありません。

Graylogのイベントカスタムフィールド

入力値の説明は以下の通りです。

  • Name : カスタムフィールドの名前です。
  • Use Field as Event Key : フィールドをイベントキーとして使用する場合はチェックし、グループの順序を数字で指定します。
  • Set Value From : カスタムフィールドの抽出元を選択します。 Template または Lookup table を選択します。

入力後 Next ボタンをクリックします。

15.2.4. 通知設定

アラートが生成され際に、通知も送信したい場合に設定を行います。 なお、オプション設定のため必須ではありません。

Graylogのイベント通知設定
  • Choose Notification : 適用する通知テンプレートを選択します。

Note

通知テンプレートの設定がない場合は、通知テンプレートの作成が必要です。 通知テンプレートの作成については Notifications (通知テンプレート)の設定 を参照してください

入力後 Next ボタンをクリックします。

最後にイベントの概要が表示されます。

Graylogのイベント概要

問題なければ Create event definition をクリックして完了します。

15.3. Notifications (通知テンプレート)の設定

メールで通知を送信する場合、メールの内容を作成するための、通知テンプレートを作成します。

Notifications タブをクリックします。

Graylogの通知テンプレート

Create notification をクリックして、通知テンプレートを作成します。

Graylogの通知テンプレート作成画面

入力値の説明は以下の通りです。

  • Title : 通知テンプレートの名前です。
  • Description : 通知テンプレートの説明です。
  • Notification Type : 通知方法を選択します。
    • PagerDuty Notification : PagerDutyに新しいインシデントを作成します。
    • Slack Notification : Slackに通知を送信します。
    • Microsoft Teams Notification : Teamsチャネルに通知を送信します。
    • Email Notification : Eメールで通知を送信します。
    • HTTP Notification : HTTPで通知を送信します。

以前のバージョンに合わせた通知タイプ Legacy Alarm Callbacks も選択できますが、将来的にサポートが削除される予定のため非推奨となっています。

15.3.1. PagerDutyへの通知

Notification TypePagerDuty Notification を選択すると次の画面が表示されます。

GraylogPagerDutyによる通知

入力項目は次の通りです。

  • Routing Key : PagerDutyの統合ルーティングキーを指定します。
    • PagerDutyのアラート通知を使用するには、ルーティングキーが必要となります。
    • ルーティングキーの作成については、PegerDutyのマニュアル を参照してください。
  • Use Custom Incident Key : 1つのイベントに対して複数のインシデントを作成するかどうかを設定します。
    • チェックした場合、指定されたインシデントキープレフィックスを使用してインシデントキーが生成されます。これにより、PagerDutyが1つのイベントに対して複数のインシデントを作成することを防止できます。
    • チェックしない場合、インシデントキーは生成されず、各イベント通知によってPagerDutyに新しいインシデントが作成されます。
  • Incident Key Prefix : Use Custom Incident Key が有効になっている場合、インシデントキーのプレフィックスとして使用する値を設定します。
  • Client Name : Graylogのシステム名を設定します。
  • Client URL : GraylogのWEBインタフェースのURLを設定します。

15.3.2. Slackへの通知

Notification TypeSlack Notification を選択すると次の画面が表示されます。

GraylogSlackによる通知

入力項目は次の通りです。

  • Configuration Color : メッセージを強調表示するための色を選択します。
  • Webhook URL : Slackにメッセージを送信するために使用するURLを指定します。
  • Channel : メッセージの送信先となるチャネル(#channel)または、ユーザ(@user や @team)を指定します。
  • Custom Message : Slackに送信するメッセージを指定します。
  • Time Zone for Date/Time Values : 通知のタイムスタンプに使用するタイムゾーンを選択します。デフォルトはUTCです。
  • Message Backlog Limit : Slack通知の一部として送信されるバックログメッセージの数を制限します。 0 に設定すると、制限は適用されません。
  • User Name : Slackに送信する際の、送信者名を指定します。
  • Include Title : 有効にすると、イベント定義のタイトルと説明が通知に含まれます。
  • Notify Channel : 有効にすると、メッセージに@channelを追加し、チャネル内のすべてのユーザに通知します。
  • Notify Here : 有効にすると、メッセージに@hereを追加し、チャンネル内のアクティブユーザに通知します。
  • Link Names : 有効にすると、通知内のチャンネル名とユーザ名を検索してリンクします。
  • Icon URL : このメッセージのアイコンとして使用する画像を指定します。
  • Icon Emoji : このメッセージのアイコンとして使用する絵文字を指定します。(アイコンのURLを上書きします)

15.3.3. Microsoft Teamsへの通知

Notification TypeMicrosoft Teams Notification を選択すると次の画面が表示されます。

GraylogMicrosoft Teamsによる通知

入力項目は次の通りです。

  • Configuration Color : メッセージを強調表示するための色を選択します。
  • Webhook URL : Teamsにメッセージを送信するために使用するURLを指定します。
  • Custom Message : Teamsに送信するメッセージを指定します。
  • Time Zone for Date/Time Values : 通知のタイムスタンプに使用するタイムゾーンを選択します。デフォルトはUTCです。
  • Message Backlog Limit : Teams通知の一部として送信されるバックログメッセージの数を制限します。 0 に設定すると、制限は適用されません。
  • Icon URL : このメッセージのアイコンとして使用する画像を指定します。

15.3.4. メールによる通知

Notification TypeEmail Notification を選択すると次の画面が表示されます。

Graylogメールによる通知

入力項目は次の通りです。

  • Subject : メールの件名を指定します。
  • Reply-To : 受信者が返信する際の宛先を指定します。
  • Sender : 送信元アドレスを指定します。空の場合はデフォルトのアドレスが使用されます。
  • User recipient(s) : この通知を受信するGraylogユーザを選択します。ユーザ情報に紐づくEメールアドレスにメールは送信されます。
  • Email recipient(s) : この通知を受信するメールアドレスを追加します。
  • Time zone for date/time values : メールのタイムゾーンを選択します。
  • Body Template : メール本文を指定します。本文内では${}に囲まれた置換文字が利用できます。置換文字については後述します。
  • HTML Template : HTML形式のメール本文を指定します。本文内では${}に囲まれた置換文字が利用できます。置換文字については後述します。
  • Test Notification : テスト通知を送信します。

Note

各項目について、UTF-8であれば日本語が利用可能です。自動的にMIMEエンコードも行われます。ただしGraylogが日本語を意識して開発されているわけではなく、たまたま日本語が利用できているという可能性が高いため、特殊文字など問題が発生しやすい文字は避けたほうが良いです。

15.3.4.1. 置換文字

Email Notification では、以下の置換文字が使用できます。

  • イベントに関するメタデータ
    • event_definition_id : イベントのデータベースID
    • event_definition_type : イベントタイプ名
    • event_definition_title : イベントのタイトル
    • event_definition_description : イベントの説明
    • job_definition_id : イベントに関連付けられたジョブID
    • job_trigger_id : ジョブの実行に関連付けられた内部ID
  • event : Graylogに保存されているイベントに関する情報
    • event.id : イベントのメッセージID
    • event.event_definition_id : イベントのデータベースID
    • event.event_definition_type : イベントタイプ名
    • event.origin_context : イベントを作成するメッセージまたはイベントのURN(event または message)
    • event.timestamp : イベントのタイムスタンプ
    • event.timestamp_processing : イベントがGraylogによって作成された時のタイムスタンプ
    • event.timerange_start : イベントの作成時に使用されたGraylogウィンドウの開始時間
    • event.timerange_end : イベントの作成時に使用されたGraylogウィンドウの終了時間
    • event.stream : イベントが格納されているStream
    • event.source_streams : イベントのソースが格納されているStream
    • event.alert : イベントがアラートと判定されているかどうか(True or False)
    • event.message : イベントの説明
    • event.source : イベントを作成したGraylogサーバのホスト名
    • event.key_tuple : イベントキーのリスト
    • event.key : イベントキー
    • event.priority : イベントの優先度
    • event.fields : イベントのカスタムフィールド
  • backlog : アラートの生成に関連するメッセージやイベントのリスト。 foreach を使用して反復処理が可能。
    • id : メッセージID
    • index : メッセージが格納されているインデックスの名前
    • source : ソース
    • message : メッセージ
    • timestamp : メッセージのタイムスタンプ
    • stream_ids : メッセージのStreamID
    • fields : 定義されているすべてのフィールドのキー値のペアのマップ

15.3.5. HTTPによる通知

HTTPによる通知では、設定したURLに情報をPOSTします。 POSTで送信される情報は以下のような情報です。

{
  "event_definition_id": "this-is-a-test-notification",
  "event_definition_type": "test-dummy-v1",
  "event_definition_title": "Event Definition Test Title",
  "event_definition_description": "Event Definition Test Description",
  "job_definition_id": "<unknown>",
  "job_trigger_id": "<unknown>",
  "event": {
    "id": "NotificationTestId",
    "event_definition_type": "notification-test-v1",
    "event_definition_id": "EventDefinitionTestId",
    "origin_context": "urn:graylog:message:es:testIndex_42:b5e53442-12bb-4374-90ed-0deadbeefbaz",
    "timestamp": "2020-05-20T11:35:11.117Z",
    "timestamp_processing": "2020-05-20T11:35:11.117Z",
    "timerange_start": null,
    "timerange_end": null,
    "streams": [
      "000000000000000000000002"
    ],
    "source_streams": [],
    "message": "Notification test message triggered from user <admin>",
    "source": "000000000000000000000001",
    "key_tuple": [
      "testkey"
    ],
    "key": "testkey",
    "priority": 2,
    "alert": true,
    "fields": {
      "field1": "value1",
      "field2": "value2"
    }
  },
  "backlog": []
}

Notification TypeHTTP Notification を選択すると次の画面が表示されます。

GraylogのHTTP通知

入力項目は次の通りです。

  • URL : 情報をPOSTするURLを指定します。
  • Skip TLS verification : チェックすると、URLのTLS認証を省略します。
  • Basic authentication : 基本認証文字列を指定します。'<username>:<password>'の形式で指定します。
  • API Key : APIキーを指定します。
  • API Secret : APIシークレットを指定します。APIシークレットを設定する場合は、API Keyの設定も必要となります。
  • Test Notification : テスト通知を送信します。
一覧へ