◾️はじめに
https://dk521123.hatenablog.com/entry/2025/04/14/145556
https://dk521123.hatenablog.com/entry/2025/02/14/200308
で、Datadogのpipeline(パイプライン)について扱った。 久しぶりに、datadog dashboard を触って、意図通りに表示されなかったのだが その原因が、このdatadog pipelineの理解不足だったので、 改めて、datadog pipeline の構築を通して、曖昧だった知識を整理する なお、基本的な用語などの知識に関しては、以下の関連記事を参照のこと
datadog pipeline ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2025/04/14/145556
目次
【1】Pipeline 構築する上での概要 【2】Pipeline構築手順 0)お題 1)Pipeline作成 2)プロセッサーによるログのパース 【3】意図したようにログがパースされなかった場合 1)フィルター部分が機能しているかどうかを確認 2)新規ログで確認 【4】Tips 1)パース規則は複数指定可能
【1】Pipeline 構築する上での概要
* pipeline 構築する際に大きく分けて、以下の2点を行う 1. パイプラインのフィルターで、処理対象のログを絞り込む 2. プロセッサーを使用して、ログに新たな属性(e.g. Tag)を追加 # 1. ありきの 2. ということが、ちゃんと整理できていなかったため # 今日少しハマってしまった。
【2】Pipeline構築手順
* 公式ドキュメントだと以下を参照。
https://docs.datadoghq.com/logs/log_configuration/pipelines/?tab=source#create-a-pipeline
0)お題
* 以下のログをパイプラインでパースする
今回のログ構文
[XXXX_Log] {<JSON>}
ログ例
[Custom_Log] {"id": "X001", "name": "Mike"} [UserAPI_Log] {"id": "U001", "name": "Kevin"} [Billing_Log] {"id": "B456", "name": "Smith"}
今回のログ仕様
* 「[XXXX_Log]」の「XXXX」部分は可変 * その後のJSON部分は、項目も含めて何が来るかは未定
1)Pipeline作成
[1] Datadog ログインし、[Logs]-[Pipelines] に移動 [2] 「Add a new pipeline」リンク or「New Pipeline」ボタン押下 [3] 以下を入力(後述「【3】ー1)」も参照)
Items | Explanations | Example |
---|---|---|
Filter | フィルター条件 | @message:¥[*_Log¥] |
Name | パイプライン名 | hello-world |
Tags | タグ・任意(未入力でもOK。後述「補足1:Pipelineのタグについて」も参照) | type:custom |
Description | 説明欄・任意(未入力でもOK) | This is a sample |
[4] 「Create」ボタンを押下
補足1:フィルター条件
* 「@message」は予約済み属性で、ログエントリの本文を表す => 「予約済み属性(Reserved attributes)」については 以下の関連記事を参照のこと
datadog ~ 属性/ファセット/属性検索@ ~
https://dk521123.hatenablog.com/entry/2025/02/26/150349
補足2:Pipelineのタグについて
* パイプライン自体にメタデータとして付与されるもので「管理・検索用」 => ex1 env:prod → 本番環境向け。 ex2. team:infra → 特定チーム管理 * 実行時のログには影響しない
2)プロセッサーによるログのパース
[1] 追加したパイプライン配下の「Add Processor」リンク 押下 [2] 以下を入力
https://docs.datadoghq.com/ja/logs/log_configuration/processors/?tab=ui
Items | Explanations | Example |
---|---|---|
Select the processor type | 対象プロセッサーを選択 | Grok Parser |
Name the processor | プロセッサー名 | Hello world Processor |
log samples | ログサンプル(複数指定可能。実際のログを持ってくるといい) | 上述「0)お題」の「ログ例」を入力 |
Define parsing rules | パース規則(複数指定可能。「【4】Tips」参照) | 後述「※ パース規則例」参照 |
[3] 「Match」になることを確認し、「Create」ボタン押下
※ パース規則例
MyRule1 \[%{word:log_type}\] %{json:log_contents} # 詳細な解説は、以下の関連記事を参照
datadog Logs ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2025/02/15/213417
【3】意図したようにログがパースされなかった場合
1)フィルター部分が機能しているかどうかを確認
# ここでハマった、、、 * フィルター部分がありきなので、 後の「2)プロセッサーによるログのパース」がちゃんと「Match」しても 上手く動かない、、、 * 実際のログが入力したフィルター条件でヒットしているかを確認した方がいい => フィルターに誤りがある可能性があるため (そもそも実際に意図するログがない可能性があるので、 できれば開発環境などで予め表示させておくと作業がスムーズになる) => ここで間違うと意図した表示にならないので慎重に、、、
2)新規ログで確認
* Pipeline作成後、過去ログは遡らないので、 開発環境などで新しくログ出力してから確認してみる
【4】Tips
1)パース規則は複数指定可能
* パース規則は以下のように複数指定可能
パース規則例
MyParsingRule1 %{word:user} connected on %{date("MM/dd/yyyy"):date} MyParsingRule2 ...
datadog Logs ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2025/02/15/213417
関連記事
datadog ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2024/03/30/004746
datadog pipeline ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2025/04/14/145556
datadog Logs ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2025/02/14/200308
datadog Logs ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2025/02/15/213417