0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Datadogでログ分析:キーIDを検出してテキストを追加する手順

Posted at

ゴール設定

テキストログを分析するとき、エラー内容等がキーIDで表示されるとき、そのキーIDを外部ファイルから検索して、日本語で読みやすいメッセージをログに追加したい時がある。

例えば、下記のようなコード表が外部ファイルに保存されていて
Code0010, ぶどう
Code0020, りんご

アプリ実行時に
'2025-09-09 [ERROR]Code0020' というログが出力された時、
'2025-09-09 [ERROR]Code0020 りんご' と置き換えて表示されると便利です。
誰でも簡単で素早く、分析ができるような気がします。

使う機能:Reference Table

Datadogでは[Reference Table]という機能があります。キーとメッセージが含まれるCSVファイル他の外部ファイルをアップロードし、ログパイプラインから参照できます。

STEP1. CSVファイルをアップロード

Excelで表を作ります。これをCSVファイルで保存します。
image.png

Datadogのメニューは[Integrations]>[Reference Tables]です。
image.png

初回は[+Create Your First Table]ボタン押下。[Local CSV]を選びます。外部ファイルはAWS S3他も選ぶことができます。
image.png

説明文とプライマリーキーを選択(下図ではKey)して[Save]ボタン押下
image.png

アップロードが完了すると、メニュー[Reference Tables]でテーブル一覧を表示できるようになります。
image.png

STEP2. ログのモニタリング設定

(1) datadogコンフィグ

ログモニタリングを有効にする

/etc/datadog-agent/datadog.yaml
##################################
## Log collection Configuration ##
##################################
logs_enabled: true

取得したいログファイルを指定する。

/etc/datadog-agent/conf.d/custom_log_collection.yaml ※ファイル名は任意,拡張子は.yaml
logs:
  - type: file
    path: /home/todo/app/todo1.log  # ログファイルのパス+ファイル名
    source: todo-app-log1           # 自分で好きな名前を定義
    service: education              #   〃
  - type: file
    path: /home/todo/app/todo2.log  # ログファイルのパス+ファイル名
    source: todo-app-log2           # 自分で好きな名前を定義
    service: education              #   〃

Datadogを再起動し、ログ取得状況を検査する

$ sudo systemctl restart datadog-agent
$ sudo datadog-agent status

ログエージェントのステータスにエラーが無いか? 
下記はログファイルの読み取り権限がないエラーが表示されている

==========
Logs Agent
==========
  ============
  Integrations
  ============
  custom_log_collection
  ---------------------
    - Type: file
      Path: /home/todo/app/logs/todo.log
      Service: education
      Source: todo-app-log
      Status: Error: open /home/todo/app/logs/todo.log: permission denied  

(2) ログファイルにアクセス権を付与

datadog-agentがログファイルを読み取り(r)を実行(x)できるようにする。

$ namei -m todo.log
-rw------- 1 todo todo 22158 Sep  9 21:34 todo.log
$ sudo chmod o+rx todo.log
$ namei -m todo.log
-rw----r-x 1 todo todo 22158 Sep  9 21:34 todo.log

もう一度、Datadogエージェントを再起動して、ログエージェントにエラーが無いか検査する

STEP3. ログ・パイプライン

Datadogの[Log Pipeline]機能を設定する。キーを見つけてメッセージを追加するパイプライン。

image.png

(1) 新しいパイプラインを追加

[+ Add a new pipeline]メニューを押下する。対象ログをフィルタリングし、パイプライン名と説明を登録
image.png

(2) キーを見つける:新しい Grok Parser を追加

[+ Add Processor]メニューを押下する。
[Grok Parser]を選び、処理名とログのサンプルを入力する。
パース規則を定義する。パース規則を自動で生成するメニューはこちらで説明しています

新しい属性を定義する[例: %{word:app_code}]。この例では[app_code:App01]が追加されます。

image.png

(3) テキストを追加する:新しい Lookup Processor を追加

[+ Add Processor]メニューを押下する。
[Lookup Processor]を選び、[Reference Table]およびテーブル名を設定する。
[3 Set source attribute]のところには、検出したいキーの属性を指定します。この例ではGroke Parserで追加した[app_code]を指定します。
[4 Set target attribute path]のところには、Logs Explorer画面に表示したい項目を定義します。この例では”codemessage”とします。

image.png

STEP4. 動作検査

Log Explorerを表示します。対象のログを見つけてクリック。Fields&Attributesに、Parserされた値とLookup Processorで追加された値が表示されることを検査します。

image.png
image.png

STEP5. 分析する

Log Explorerの画面に列項目を追加します。Lookup Processorで指定したtarget attributeの項目名をoptionに追加します。

image.png

追加したメッセージが表示される! この例では
[App001]の時は[動作テスト Try]が、
[App002]の時は[動作テスト Test]が表示される。

image.png

まとめ

Datadogのログ分析は、キーIDに対するメッセージを外部ファイルから検索して追加できる!
数字の連番で表現するエラーコードやアプリ処理名称などがあるなら、日本語で読みやすいテキストを表示できるので誰でも分析が容易になる。はず。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?