Previous Top Next
15. ログ監視を行うには
15.1. ログ監視の概要
Graylogでは、一定のルールに基づいて通知を送信することができます。 例えば、特定のメッセージがログに現れた場合や、例外検知のログが1分あたり50メッセージを超える場合などです。 Graylogでは、デフォルトでは通知をEメールで送信するか、もしくはHTTPを使って送信ができます。
Graylogが特定のログを検知した後、管理の状態は次の2つの状態になります。
Note
ここでいう監視の状態は、チケットと読み替えたほうがわかりやすい人もいるでしょう。
- 未解決
- 通知が発生する条件が満たされている間、監視の状態は未解決の状態になります。通常、なんらかの改善を行う必要があります。
- 解決済み
- 通知の条件が満たされなくなったときに、自動的に解決済みのステータスになります。これは監視の最終状態であり、再び条件を満たした場合は、別の通知が行われます。猶予期間が設定されていれば、新しい通知を発生させる前に一定期間待機します。
15.2. 通知の作成
まずGraylogのログ監視には重要な要素が3つあります。
- Condition : 監視条件
- Notification : 通知の内容
- Stream : ConditionとNotificationが紐づくstream
Hint
Streamついては ログのカテゴライズと保存場所の変更方法 を参照してください
ConditionとNotificationは、独立した設定として存在します。 この2つを設定する際、どのStreamとの紐付けが必要になります。 同じStreamに紐付いているConditionとNotificationが、すべて実行されるという動きになることに注意してください。 つまり一つのStreamの中で、条件Aの場合はA`の通知を送り、条件Bの場合はB`の通知を送るという分岐ができないことを意味しています。 このような動きをしたい場合、Streamの設定から見直しを行ってください。
15.2.1. Conditions (通知発生条件)の設定

Manage conditions
ボタンをクリックして、監視条件を作成します。

次に Add new condition
をクリックし、次の画面を表示します。

この画面で、条件を適用するStreamとタイプを選択します。 タイプは以下の3つから選択できます。なお通知のタイプはプラグインで増やすこともできます。
Field Content Alert Condition
: 指定したフィールドに特定の文字が含まれた場合に通知を発生させる条件Field Aggregation Alert Condition
: 指定したフィールドの値の推移(数値が10以上になった状態が5分間など)で通知を発生させる条件Message Count COndition
: 単位時間あたりのメッセージの数で通知を発生させる条件
以下は、Field Content Alert Condition
を選択した場合の表示例です。

15.2.1.1. Field Content Alert Condition
Field Content Alert Condition
を選択した場合の設定項目は次の通りです。
Title
: 条件のタイトルです。Field
: 条件にマッチさせるフィールドです。Value
: 上記で指定したフィールドにマッチさせる値です。部分一致で検査されます。Grace Period
: 次の通知を発生させるまでの猶予期間Message Backlog
: 条件にマッチしたログから何行遡るかの設定。遡った情報がメールに記載可能になります。Repeat notifications
: チェックした場合、状態に関係なく条件にマッチした場合、通知を送信します。
15.2.1.2. Field Aggregation Alert Condition
Field Aggregation Alert Condition
を選択した場合の設定項目は次の通りです。
Title
: 条件のタイトルです。Field
: 条件にマッチさせるフィールドです。Time Range
: 条件にマッチさせる期間(秒数)を指定します。Threshold Type
: higher/lowerから選択しますThreshold
: しきい値を指定します。Aggregation type
: 次から選択しますmax value
: 時間あたりの最大値mix value
: 時間あたりの最小値sum
: 時間あたりの合計値standard diviation
: 時間あたりの標準偏差mean value
: 時間あたりの平均値
Message Backlog
: 条件にマッチしたログから何行遡るかの設定。遡った情報がメールに記載可能になります。Repeat notifications
: チェックした場合、状態に関係なく条件にマッチした場合、通知を送信します。
15.2.1.3. Message Count Alert Condition description
Message Count Alert Condition description
を選択した場合の設定項目は次の通りです。
Title
: 条件のタイトルです。Field
: 条件にマッチさせるフィールドです。Time Range
: 条件にマッチさせる期間(秒数)を指定します。Threshold Type
: more than/less thanから選択しますThreshold
: しきい値を指定します。Message Backlog
: 条件にマッチしたログから何行遡るかの設定。遡った情報がメールに記載可能になります。Repeat notifications
: チェックした場合、状態に関係なく条件にマッチした場合、通知を送信します。
15.2.2. Notifications (通知テンプレート)の設定

Manage notifications
ボタンをクリックして、送信する情報のテンプレートを作成します。つまり、メールで通知を送信する場合、メールの内容を作成するということです。

次に Add new notification
をクリックし、次の画面を表示します。

この画面で、通知設定を適用するStreamとタイプを選択します。 タイプは以下の2つから選択できます。なおタイプはプラグインで増やすこともできます。
- HTTP Alerm Callback : HTTPで通知を送信するタイプ
- Email Alert Callback : Eメールで通知を送信するタイプ
それぞれ選択して Add alert notification
ボタンをクリックすると次の画面が表示されます。
15.2.2.1. Eメール

入力項目は次の通りです。
Title
: Notificationのタイトルです。E-Mail Subject
: メールの件名です。Sender
: メールの送信元アドレス(Fromヘッダ)です。E-Mail Body
: メール本文です。本文内では${}に囲まれた置換文字が利用できます。置換文字については後述します。User Receivers
: この通知を送信する宛先のユーザを選択します。ユーザ情報に紐づくEメールアドレスにメールは送信されます。E-Mail Recivers
: この通知を送信する宛先のメールアドレスを入力します。
Note
各項目について、UTF-8であれば日本語が利用可能です。自動的にMIMEエンコードも行われます。ただしGraylogが日本語を意識して開発されているわけではなく、たまたま日本語が利用できているという可能性が高いため、特殊文字など問題が発生しやすい文字は避けたほうが良いです。
15.2.2.2. 置換文字
Email Alert Callback
では、以下の置換文字が使用できます。
stream
: この通知が属するstreamstream.id
: streamのIDstream.title
: streamのタイトルstream.description
: streamの説明stream_url
: streamへのHTTP URLを含む文字列
check_result
: 通知発生条件の検査結果check_result.triggerdCondition
: マッチ通知条件check_result.triggeredAt
: 通知発生時間check_result.resultDescription
: 検査結果のテキスト
backlog
: 下記のmessage
のリスト。foreach
を使用して反復処理が可能。message
: 上記のbacklog
の反復処理の中で使用可能。下記の個別のフィールドを利用しない場合は、toString()メソッドを使って、message
を表示できます。 *message.id
: 自動生成されたメッセージID *message.message
: 実際のメッセージテキスト *message.source
: ソース *message.timestamp
: メッセージのタイムスタンプ *message.fields
: 定義されているすべてのフィールドのキー値のペアのマップ
15.2.2.3. HTTP
HTTPによる通知では、設定したURLに情報をPOSTします。

Title
: Notificationのタイトルです。URL
: 情報をPOSTするURLです。
POSTで送信される情報は以下のような情報です:
{
"check_result": {
"result_description": "Stream had 2 messages in the last 1 minutes with trigger condition more than 1 messages. (Current grace time: 1 minutes)",
"triggered_condition": {
"id": "5e7a9c8d-9bb1-47b6-b8db-4a3a83a25e0c",
"type": "MESSAGE_COUNT",
"created_at": "2015-09-10T09:44:10.552Z",
"creator_user_id": "admin",
"grace": 1,
"parameters": {
"grace": 1,
"threshold": 1,
"threshold_type": "more",
"backlog": 5,
"time": 1
},
"description": "time: 1, threshold_type: more, threshold: 1, grace: 1",
"type_string": "MESSAGE_COUNT",
"backlog": 5
},
"triggered_at": "2015-09-10T09:45:54.749Z",
"triggered": true,
"matching_messages": [
{
"index": "graylog2_7",
"message": "WARN: System is failing",
"fields": {
"gl2_remote_ip": "127.0.0.1",
"gl2_remote_port": 56498,
"gl2_source_node": "41283fec-36b4-4352-a859-7b3d79846b3c",
"gl2_source_input": "55f15092bee8e2841898eb53"
},
"id": "b7b08150-57a0-11e5-b2a2-d6b4cd83d1d5",
"stream_ids": [
"55f1509dbee8e2841898eb64"
],
"source": "127.0.0.1",
"timestamp": "2015-09-10T09:45:49.284Z"
},
{
"index": "graylog2_7",
"message": "ERROR: This is an example error message",
"fields": {
"gl2_remote_ip": "127.0.0.1",
"gl2_remote_port": 56481,
"gl2_source_node": "41283fec-36b4-4352-a859-7b3d79846b3c",
"gl2_source_input": "55f15092bee8e2841898eb53"
},
"id": "afd71342-57a0-11e5-b2a2-d6b4cd83d1d5",
"stream_ids": [
"55f1509dbee8e2841898eb64"
],
"source": "127.0.0.1",
"timestamp": "2015-09-10T09:45:36.116Z"
}
]
},
"stream": {
"creator_user_id": "admin",
"outputs": [],
"matching_type": "AND",
"description": "test stream",
"created_at": "2015-09-10T09:42:53.833Z",
"disabled": false,
"rules": [
{
"field": "gl2_source_input",
"stream_id": "55f1509dbee8e2841898eb64",
"id": "55f150b5bee8e2841898eb7f",
"type": 1,
"inverted": false,
"value": "55f15092bee8e2841898eb53"
}
],
"alert_conditions": [
{
"creator_user_id": "admin",
"created_at": "2015-09-10T09:44:10.552Z",
"id": "5e7a9c8d-9bb1-47b6-b8db-4a3a83a25e0c",
"type": "message_count",
"parameters": {
"grace": 1,
"threshold": 1,
"threshold_type": "more",
"backlog": 5,
"time": 1
}
}
],
"id": "55f1509dbee8e2841898eb64",
"title": "test",
"content_pack": null
}
}