概要
Datadog は自動的に JSON 形式のログをパースします。そして、処理パイプラインを通して送ることで、値をすべてのログ (生ログとJSON) に追加することができます。パイプラインは、ログを広範囲の形式から取得し Datadog で一般的に使用される形式に変換します。ログパイプラインの実装と処理戦略は、組織に属性の命名習慣を導入するため、有意義です。
パイプラインを使用すると、いくつかのプロセッサーを通して順次ログをつなぐことにより、ログがパースされ補完されます。これにより、半構造化されたテキストから意味のある情報や属性を抽出し、ファセットとして再利用することができます。パイプラインを経由するログは、すべてのパイプラインフィルターに対してテストされます。いずれかのフィルターに一致したログは、すべてのプロセッサーが順次適用されてから、次のパイプラインに移動します。
パイプラインおよびプロセッサーは、あらゆるタイプのログに適用できます。ロギングコンフィギュレーションを変更したり、サーバー側の処理ルールに変更をデプロイする必要もありません。すべての処理は、パイプラインコンフィギュレーションページで構成できます。
注: ログ管理ソリューションを最適にご利用いただくため、Datadog では Grok プロセッサ内でパイプラインごとに最大 20 件のプロセッサーおよび 10 個のパース規則を使用することをおすすめします。Datadog はサービスのパフォーマンスに悪影響を与える可能性のあるパース規則、プロセッサー、パイプラインを無効化する権利を有しています。
前処理
JSON ログの前処理は、ログがパイプライン処理に入る前に発生します。前処理では、予約済み属性に基づく一連の操作(timestamp
、status
、host
、service
、message
など)を実行します。JSON ログに異なる属性名がある場合は、前処理を使用してログ属性名を予約済み属性リストの属性名にマップします。
JSON ログ前処理は、デフォルトで標準ログフォワーダーに機能するよう構成されています。このコンフィギュレーションは、カスタムまたは特定のログ転送方法に合わせて編集することが可能です。
Datadog アプリで Pipelines に移動し、Preprocessing for JSON logs を選択します。
注: JSON ログの前処理は、ログ属性の 1 つをログの host
として定義する唯一の方法です。
予約済み属性に基づき、デフォルトのマッピングを変更します。
ソース属性
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 はそのエントリを拒否します。
ステータス属性
各ログエントリにはステータスレベルを指定でき、Datadog 内のファセット検索で使用できます。ただし、JSON 形式のログファイルに以下の属性のいずれかが含まれる場合、Datadog はその値をログの正式なステータスと解釈します。
status
severity
level
syslog.severity
ログステータスリマッパープロセッサーを設定し、別の属性を指定してログのステータスのソースとして使用します。
サービス属性
Datadog Agent または RFC5424 形式を使用すると、自動的にログにサービス値が設定されます。ただし、JSON 形式のログファイルに以下の属性が含まれる場合、Datadog はその値をログのサービスと解釈します。
ログサービスリマッパープロセッサーを設定し、別の属性を指定してログのサービスのソースとして使用します。
スパン ID 属性
デフォルトでは、Datadog トレーサーがログにスパン ID を自動的に挿入します。ただし、JSON 形式のログに以下の属性が含まれる場合、Datadog はその値をログの span_id
として解釈します。
dd.span_id
contextMap.dd.span_id
パイプラインを作成
Datadog アプリで Pipelines に移動します。
New Pipeline を選択します。
Live tail プレビューからフィルターを適用するログを選択、または独自のフィルターを適用します。ドロップダウンメニューから選択、または </> アイコンを選択して独自のフィルタークエリを作成します。フィルターを使用すると、パイプラインを適用するログの種類を制限できます。
注: パイプラインフィルターはパイプラインのプロセッサーの前に適用されます。このため、パイプライン自体で抽出される属性で絞り込みを行うことはできません。
パイプラインに名前を付けます。
(オプション) パイプライン内のプロセッサに編集アクセスを許可します。
(オプション) パイプラインにタグと説明を追加します。説明とタグを使用して、パイプラインの目的や、どのチームが所有しているかを記載することができます。
Create を押します。
パイプラインにより返還されたログの例:
インテグレーションパイプライン
サポートされているインテグレーションのリストは、
こちらでご確認ください。
ログ収集をセットアップしている一部のソースでは、インテグレーション処理パイプラインを利用できます。これらのパイプラインは読み取り専用であり、それぞれのソースに適した方法でログをパースします。また、インテグレーションログに対しては、インテグレーションパイプラインが自動的にインストールされ、ログのパースと Log Explorer における対応するファセットの追加が行われます。
インテグレーションパイプラインを表示するには、パイプラインページに移動します。インテグレーションパイプラインを編集するには、それを複製した上で編集します。
以下の ELB ログの例を参照してください。
インテグレーションパイプラインライブラリ
Datadog で利用可能なインテグレーションパイプラインの一覧については、インテグレーションパイプラインライブラリをご覧ください。パイプラインライブラリにて、Datadog がデフォルトで各ログフォーマットを処理する方法をご確認いただけます。
インテグレーションパイプラインを使用する場合、Datadog は対応するログの source
を構成し、インテグレーションをインストールすることを推奨しています。Datadog がこのソースから初回のログを受信すると、インストールが自動でトリガーされ、インテグレーションパイプラインが処理対象のパイプラインリストに追加されます。ログソースの構成については、対応するインテグレーションのドキュメントを参照してください。
Clone ボタンをクリックしてインテグレーションパイプラインをコピーすることもできます。
プロセッサーまたはネストされたパイプラインを追加
- Datadog アプリで Pipelines に移動します。
- パイプラインにカーソルを合わせ、表示される矢印をクリックしてプロセッサーおよびネストされたパイプラインを展開します。
- Add Processor または Add Nested Pipeline を選択します。
プロセッサー
プロセッサーはパイプライン内で実行され、データ構造化アクションを完了します。アプリ内または API を使用して、プロセッサーの種類ごとにプロセッサーを追加および構成する方法については、プロセッサーに関するドキュメントを参照してください。
カスタム日時形式のパースや、タイムスタンプが UTC でない場合に必要な timezone
パラメーターについては、日付のパースを参照してください。
ネストされたパイプライン
ネストされたパイプラインとは、パイプラインの内部のパイプラインのことです。ネストされたパイプラインを使用すると、処理を 2 段階に分けることができます。たとえば、チームなどの高レベルのフィルターを使用してから、インテグレーション、サービス、タグ、属性などに基づく第 2 レベルのフィルタリングを使用します。
パイプラインは、ネストされたパイプラインとプロセッサーを持つことができます。一方、ネストされたパイプラインは、プロセッサーしか持つことができません。
パイプラインを別のパイプラインに移動して、ネストされたパイプラインにします。
- 移動したいパイプラインにカーソルを合わせ、Move to アイコンをクリックします。
- 元のパイプラインの移動先となるパイプラインを選択します。注: ネストされたパイプラインを含むパイプラインは、別の最上位の位置にのみ移動できます。別のパイプラインに移動することはできません。
- Move をクリックします。
パイプラインの管理
パイプラインの変更情報を使って、パイプラインやプロセッサの最後の変更がいつ行われたのか、どのユーザーが変更したのかを特定します。パイプラインが有効か読み取り専用かなど、他のファセット化されたプロパティと同様に、この変更情報を使用してパイプラインをフィルタリングします。
スライドオプションパネルの Move to
オプションでパイプラインを正確に並べ替えることができます。スクロールして、選択したパイプラインを移動させる正確な位置を Move to
モーダルを使ってクリックします。パイプラインは、他の読み取り専用パイプラインの中に移動することはできません。ネストされたパイプラインを含むパイプラインは、他のトップレベルの位置にのみ移動することができます。他のパイプラインの中に移動することはできません。
推定使用量メトリクス
パイプラインごとに推定された使用量メトリクス、具体的には、各パイプラインで取り込まれ、変更されたログの量と件数が表示されます。また、各パイプラインからすぐに使える Logs Estimated Usage Dashboard へのリンクがあり、そのパイプラインの使用量メトリクスをより詳細なグラフで表示することが可能です。
その他の参考資料
*Logging without Limits は Datadog, Inc. の商標です。