概要

メッセージ全体や未加工のイベントの特定の属性をパースするためのカスタム Grok ルールを作成できます。ベストプラクティスとして、Grok パーサーは 10 のパース規則に制限してください。Grok の構文とパース規則に関する詳細については、パース を参照してください。

Grok パーサーの構成

ユースケース

Grok パーサーは主に、ログのメッセージから属性をパースするために使用されます。たとえば、NGINX のログに、抽出したい複数の情報が含まれているメッセージがあるとします。

Grok 規則を作成すると、パーサーは IP アドレス、ユーザー、リクエストのタイムスタンプ、リクエストメソッド、URL、バージョン、ステータスコード、バイト数を書き出すことができます。

セットアップ

Pipelines ページ で Grok プロセッサーを定義します。Grok パース規則を構成するには、次のようにします。

  1. [Add Grok Parser] (Grok パーサーを追加) をクリックして、新しいパーサー構成を開きます。
  2. Log Samples: ログサンプルは、[Log Samples] (ログサンプル) セクションに自動的に取り込まれます。ログサンプルをさらに追加することもできます (合計 10 個まで、サンプルあたり 5000 文字まで)。 注: サンプルログは、パイプラインフィルターに一致するログパターンのうち、ボリュームが最も大きい 5 つのログパターンから取得されます。
  3. Log Samples: 最大 5 つのサンプルログ (サンプルログあたり 5000 文字まで) を追加して、パース規則をテストします。
  4. Define parsing rules: [Auto parsing] (自動パース) をクリックして、サンプルに一致する規則を生成します。

    選択した Datadog サイト では自動パースを利用できません ()。

  5. 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_enabledBooleanいいえプロセッサーが有効になっているかどうか。デフォルト: false。
source文字列はいパースするログ属性の名前。デフォルト: message。
samples文字列の配列いいえこの Grok パーサーのサンプルログのリスト (最大 5 件)。
grok.support_rules文字列はいGrok パーサーのサポート規則のリスト。
grok.match_rules文字列はいGrok パーサーの照合規則のリスト。

参考資料