概要

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

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

サービス属性

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. パイプラインに名前を付けます。

  5. (オプション) パイプライン内のプロセッサに編集アクセスを許可します。

  6. (オプション) パイプラインにタグと説明を追加します。説明とタグを使用して、パイプラインの目的や、どのチームが所有しているかを記載することができます。

  7. Create を押します。

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

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

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

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

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

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

パイプラインの複製

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

ELB ログの後処理

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

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

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

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

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

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

プロセッサー

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

カスタム日時形式のパースや、タイムスタンプが UTC でない場合に必要な timezone パラメーターについては、日付のパースを参照してください。

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

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

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

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

パイプラインを別のパイプラインに移動して、ネストされたパイプラインにします。

  1. 移動したいパイプラインにカーソルを合わせ、Move to アイコンをクリックします。
  2. 元のパイプラインの移動先となるパイプラインを選択します。: ネストされたパイプラインを含むパイプラインは、別の最上位の位置にのみ移動できます。別のパイプラインに移動することはできません。
  3. Move をクリックします。

パイプラインの管理

パイプラインの変更情報を使って、パイプラインやプロセッサの最後の変更がいつ行われたのか、どのユーザーが変更したのかを特定します。パイプラインが有効か読み取り専用かなど、他のファセット化されたプロパティと同様に、この変更情報を使用してパイプラインをフィルタリングします。

ファセット検索、パイプラインの修正情報、並べ替えモーダルによるパイプラインの管理方法

スライドオプションパネルの Move to オプションでパイプラインを正確に並べ替えることができます。スクロールして、選択したパイプラインを移動させる正確な位置を Move to モーダルを使ってクリックします。パイプラインは、他の読み取り専用パイプラインの中に移動することはできません。ネストされたパイプラインを含むパイプラインは、他のトップレベルの位置にのみ移動することができます。他のパイプラインの中に移動することはできません。

モーダルへの移動を利用してパイプラインを正確に並べ替える方法

推定使用量メトリクス

パイプラインごとに推定された使用量メトリクス、具体的には、各パイプラインで取り込まれ、変更されたログの量と件数が表示されます。また、各パイプラインからすぐに使える Logs Estimated Usage Dashboard へのリンクがあり、そのパイプラインの使用量メトリクスをより詳細なグラフで表示することが可能です。

パイプラインの使用量メトリクスを素早く確認する方法

その他の参考資料


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