概要
メッセージ全体や未加工のイベントの特定の属性をパースするためのカスタム Grok ルールを作成できます。ベストプラクティスとして、Grok パーサーは 10 のパース規則に制限してください。Grok の構文とパース規則に関する詳細については、パース を参照してください。
ユースケース
Grok パーサーは主に、ログのメッセージから属性をパースするために使用されます。たとえば、NGINX のログに、抽出したい複数の情報が含まれているメッセージがあるとします。
Grok 規則を作成すると、パーサーは IP アドレス、ユーザー、リクエストのタイムスタンプ、リクエストメソッド、URL、バージョン、ステータスコード、バイト数を書き出すことができます。
セットアップ
Pipelines ページ で Grok プロセッサーを定義します。Grok パース規則を構成するには、次のようにします。
- [Add Grok Parser] (Grok パーサーを追加) をクリックして、新しいパーサー構成を開きます。
- Log Samples: ログサンプルは、[Log Samples] (ログサンプル) セクションに自動的に取り込まれます。ログサンプルをさらに追加することもできます (合計 10 個まで、サンプルあたり 5000 文字まで)。
注: サンプルログは、パイプラインフィルターに一致するログパターンのうち、ボリュームが最も大きい 5 つのログパターンから取得されます。
- Log Samples: 最大 5 つのサンプルログ (サンプルログあたり 5000 文字まで) を追加して、パース規則をテストします。
- Define parsing rules: [Auto parsing] (自動パース) をクリックして、サンプルに一致する規則を生成します。
- Test your rules: サンプルをクリックすると、パース規則に対する評価がトリガーされ、画面の右側に結果が表示されます。すべてのサンプルにはステータス (
match または no match) が表示され、Grok パーサーのパース規則のいずれかがサンプルに一致するかどうかが強調表示されます。
ログのパース前とパース後の状態
処理前 (未加工のログ):
192.168.1.1 - john [10/Oct/2023:13:55:36 +0000] "GET /api/users HTTP/1.1" 200 1234
Grok パース規則:
access.common %{ipOrHost:network.client.ip} %{notSpace:http.ident} %{notSpace:http.auth} \[%{httpdate:date}\] "(?>%{word:http.method} |)%{notSpace:http.url}(?: HTTP/%{number:http.version}|)" %{number:http.status_code} (?>%{number:network.bytes_written}|-)
処理後:
{
"network": {
"client": {
"ip": "192.168.1.1"
},
"bytes_written": 1234
},
"http": {
"ident": "-",
"auth": "john",
"method": "GET",
"url": "/api/users",
"version": "1.1",
"status_code": 200
},
"date": 1696945536000
}
Grok パーサーは、非構造化ログメッセージを、Log Explorer でクエリ、フィルタリング、分析可能な構造化 JSON 属性に変換します。
API
以下の Grok パーサー JSON ペイロードで Datadog ログパイプライン API エンドポイント を使用します。
{
"type": "grok-parser",
"name": "Parsing Log message",
"is_enabled": true,
"source": "message",
"samples": ["sample log 1", "sample log 2"],
"grok": {"support_rules": "<SUPPORT_RULES>", "match_rules": "<MATCH_RULES>"}
}
| パラメーター | 型 | 必須 | 説明 |
|---|
type | 文字列 | はい | プロセッサーのタイプ。 |
name | 文字列 | いいえ | プロセッサーの名前。 |
is_enabled | Boolean | いいえ | プロセッサーが有効になっているかどうか。デフォルト: false。 |
source | 文字列 | はい | パースするログ属性の名前。デフォルト: message。 |
samples | 文字列の配列 | いいえ | この Grok パーサーのサンプルログのリスト (最大 5 件)。 |
grok.support_rules | 文字列 | はい | Grok パーサーのサポート規則のリスト。 |
grok.match_rules | 文字列 | はい | Grok パーサーの照合規則のリスト。 |
参考資料