パイプライン

パイプライン

概要

Datadog は自動的に JSON 形式のログをパースします。ログが JSON 形式でない場合、生のログを処理パイプラインに送信して値を追加することができます。パイプラインは、ログを広範囲の形式から取得し Datadog で一般的に使用される形式に変換します。ログパイプラインの実装と処理戦略は、組織に属性の命名習慣を導入するため、有意義です。

パイプラインを使用すると、いくつかのプロセッサーを通して順次ログをつなぐことにより、ログがパースされ補完されます。これにより、半構造化されたテキストから意味のある情報や属性を抽出し、ファセットとして再利用することができます。パイプラインを経由するログは、すべてのパイプラインフィルターに対してテストされます。いずれかのフィルターに一致したログは、すべてのプロセッサーが順次適用されてから、次のパイプラインに移動します。

パイプラインおよびプロセッサーは、あらゆるタイプのログに適用できます。ロギングコンフィギュレーションを変更したり、サーバー側の処理ルールに変更をデプロイする必要もありません。すべての処理は、パイプラインコンフィギュレーションページで構成できます。

: ログ管理ソリューションを最適にご利用いただくため、Datadog では Grok プロセッサ内でパイプラインごとに最大 20 件のプロセッサーおよび 10 個のパース規則を使用することをおすすめします。Datadog はサービスのパフォーマンスに悪影響を与える可能性のあるパース規則、プロセッサー、パイプラインを無効化する権利を有しています。

前処理

JSON ログの前処理は、ログがパイプライン処理に入る前に発生します。前処理では、予約済み属性に基づく一連の操作(timestampstatushostservicemessage など)を実行します。JSON ログに異なる属性名がある場合は、前処理を使用してログ属性名を予約済み属性リストの属性名にマップします。

JSON ログ前処理は、デフォルトで標準ログフォワーダーに機能するよう構成されています。このコンフィギュレーションは、カスタムまたは特定のログ転送方法に合わせて編集することが可能です。

  1. Datadog アプリで Pipelines に移動し、Preprocessing for JSON logs を選択します。

    注: JSON ログの前処理は、ログ属性の 1 つをログの host として定義する唯一の方法です。

  2. 予約済み属性に基づき、デフォルトのマッピングを変更します。

ソース属性

JSON 形式のログファイルに ddsource 属性が含まれる場合、Datadog はその値をログのソースと解釈します。Datadog が使用しているソース名を使用する場合は、インテグレーションパイプラインライブラリを参照してください。

: コンテナ化環境から取得したログの場合、環境変数を使用してデフォルトのソース値とサービス値をオーバーライドする必要があります。

ホスト属性

Datadog Agent または RFC5424 形式を使用すると、自動的にログにホスト値が設定されます。ただし、JSON 形式のログファイルに以下の属性が含まれる場合、Datadog はその値をログのホストと解釈します。

  • host
  • hostname
  • syslog.hostname

日付属性

デフォルトでは、Datadog は、ログを受信したときにタイムスタンプを生成し、それを date 属性に付加します。ただし、JSON 形式のログファイルに以下の属性のいずれかが含まれる場合、その値をログの正式な日付と解釈します。

  • @timestamp
  • timestamp
  • _timestamp
  • Timestamp
  • eventTime
  • date
  • published_date
  • syslog.timestamp

ログ日付リマッパープロセッサーを設定し、別の属性を指定してログの日付のソースとして使用します。

: ログエントリの正式な日付が 18 時間以上前だった場合、Datadog はそのエントリを拒否します。

認識される日付の形式は、ISO8601UNIX (ミリ秒エポック形式)、および RFC3164 です。

メッセージ属性

デフォルトで、Datadog ではメッセージの値をログエントリの本文として収集します。この値がハイライトされて Log Explore に表示され、全文検索用にインデックス化されます。

ログメッセージリマッパープロセッサーを設定し、別の属性を指定してログのメッセージのソースとして使用します。

ステータス属性

各ログエントリにはステータスレベルを指定でき、Datadog 内のファセット検索で使用できます。ただし、JSON 形式のログファイルに以下の属性のいずれかが含まれる場合、Datadog はその値をログの正式なステータスと解釈します。

  • status
  • severity
  • level
  • syslog.severity

status 属性の既存のステータスを再マップするには、ログステータスリマッパーを使用します。

サービス属性

Datadog Agent または RFC5424 形式を使用すると、自動的にログにサービス値が設定されます。ただし、JSON 形式のログファイルに以下の属性が含まれる場合、Datadog はその値をログのサービスと解釈します。

  • service
  • syslog.appname

ログサービスリマッパープロセッサーを設定し、別の属性を指定してログのサービスのソースとして使用します。

トレース ID 属性

デフォルトで、Datadog トレーサーは、自動的にログにトレースとスパンの ID を挿入します。ただし、JSON 形式のログに以下の属性が含まれる場合、Datadog はその値をログの trace_id と解釈します。

  • dd.trace_id
  • contextMap.dd.trace_id

トレース ID リマッパープロセッサーを設定し、別の属性を指定してログのトレース ID のソースとして使用します。

パイプラインを作成する

  1. Datadog アプリで Pipelines に移動します。

  2. New Pipeline を選択します。

  3. Live tail プレビューからフィルターを適用するログを選択、または独自のフィルターを適用します。ドロップダウンメニューから選択、または </> アイコンを選択して独自のフィルタークエリを作成します。フィルターを使用すると、パイプラインを適用するログの種類を制限できます。

    : パイプラインフィルターはパイプラインのプロセッサーの前に適用されます。このため、パイプライン自体で抽出される属性で絞り込みを行うことはできません。

  4. パイプラインに名前を付け、Save を押します。

パイプラインにより返還されたログの例:

インテグレーションパイプライン

サポートされているインテグレーションのリストは、こちらでご確認ください。

ログを収集するようセットアップされている一部のソースには、インテグレーション処理パイプラインを使用できます。これらのパイプラインは読み取り専用であり、各ソースに適した方法でログをパースします。インテグレーションログにインテグレーションパイプラインが自動的にインストールされ、ログをパースして対応するファセットをログエクスプローラーに追加します。

インテグレーションパイプラインを表示するには、パイプラインページに移動します。インテグレーションパイプラインを編集するには、それを複製した上で編集します。

以下の ELB ログの例を参照してください。

インテグレーションパイプラインライブラリ

Datadog で利用可能なインテグレーションパイプラインの一覧については、インテグレーションパイプラインライブラリをご覧ください。パイプラインライブラリにて、Datadog がデフォルトで各ログフォーマットを処理する方法をご確認いただけます。

インテグレーションパイプラインライブラリ

インテグレーションパイプラインを使用する場合、Datadog は対応するログの source を構成し、インテグレーションをインストールすることを推奨しています。Datadog がこのソースから初回のログを受信すると、インストールが自動でトリガーされ、インテグレーションパイプラインが処理対象のパイプラインリストに追加されます。ログソースの構成については、対応するインテグレーションのドキュメントを参照してください。

Clone ボタンをクリックしてインテグレーションパイプラインをコピーすることもできます。

ライブラリからパイプラインを複製

プロセッサーまたはネストされたパイプラインを追加

  1. Datadog アプリで Pipelines に移動します。
  2. パイプラインにカーソルを合わせ、表示される矢印をクリックしてプロセッサーおよびネストされたパイプラインを展開します。
  3. Add Processor または Add Nested Pipeline を選択します。

プロセッサー

プロセッサーは、パイプラインの内部で実行し、データ構造化アクションを完了します。アプリ内または API を使用して、プロセッサー別にプロセッサーを追加し構成する方法については、プロセッサーに関するドキュメントを参照してください。

ネストされたパイプライン

ネストされたパイプラインとは、パイプラインの内部のパイプラインのことです。ネストされたパイプラインを使用すると、処理を 2 段階に分けることができます。たとえば、チームなどの高レベルのフィルターを使用してから、インテグレーション、サービス、タグ、属性などに基づく第 2 レベルのフィルタリングを使用します。

パイプラインは、ネストされたパイプラインとプロセッサーを持つことができます。一方、ネストされたパイプラインは、プロセッサーしか持つことができません。

あるパイプラインを別のパイプラインに移動して、ネストされたパイプラインに変換することができます。

その他の参考資料


*Logging without Limits は Datadog, Inc. の商標です。