デフォルトでは、Datadog intake API によってログが受信されると、タイムスタンプが生成され、日付属性として付加されます。しかし、このデフォルトのタイムスタンプは、ログ自体に含まれる可能性のある実際のタイムスタンプを常に反映するわけではありません。このガイドでは、実際のタイムスタンプでデフォルトのタイムスタンプをオーバーライドする方法について説明します。
表示されるタイムスタンプ
ログのタイムスタンプは、ログパネルのトップセクションにあります。タイムスタンプは UTC で保存され、ユーザーのローカルタイムゾーンで表示されます。上記のスクリーンショットでは、ローカルプロファイルが UTC+1
に設定されているため、ログを受信した時刻は 11:06:16.807 UTC
となります。
タイムゾーンが正しく設定されていないため、タイムスタンプが期待通りの値を示さない場合があります。Preferences の Time zone セクションで確認できます。
タイムゾーンが正しい場合、メッセージからタイムスタンプを抽出し、表示されているログのタイムスタンプをオーバーライドします。
生ログ
Datadog で生ログが期待したタイムスタンプを表示していない場合、生ログから正しいログタイムスタンプを抽出して、それをリマップします。
パーサーでタイムスタンプ値を抽出する
- ログパイプラインに移動し、ログを処理するパイプラインをクリックします。
- Add Processor をクリックします。
- プロセッサーの種類で Grok Parser を選択します。
- date() matcher を使って日付を抽出し、それをカスタムの日付属性に渡します。詳細は以下の例と日付のパース例を参照してください。
このようなログの例では
2017-12-13 11:01:03 EST | INFO | (tagger.go:80 in Init) | starting the tagging system
以下のようなパースルールを追加します。
MyParsingRule %{date("yyyy-MM-dd HH:mm:ss z"):date} \| %{word:severity} \| \(%{notSpace:logger.name}:%{integer:logger.line}[^)]*\) \|.*
MyParsingRule
の抽出の出力:
{
"date": 1513180863000,
"logger": {
"line": 80,
"name": "tagger.go"
},
"severity": "INFO"
}
date
属性には mytimestamp
値が格納されます。
ログ日付リマッパーを定義する
ログ日付リマッパーを追加して、date
属性の値が現在のログのタイムスタンプをオーバーライドするようにします。
- ログパイプラインに移動し、ログを処理するパイプラインをクリックします。
- Add Processor をクリックします。
- プロセッサーの種類で Date remapper を選択します。
- プロセッサーの名前を入力します。
- Set date attribute(s) セクションに date を追加します。
- Create をクリックします。
06:01:03 EST
(11:01:03 UTC
に相当) に生成された以下のログは、12:01:03 (この場合、表示タイムゾーンは UTC+1) と正しく表示されます。
注: すべての処理は取り込み時に行われるため、パイプラインの変更は新しいログにのみ影響します。
JSON ログ
JSON ログは Datadog で自動的にパースされます。ログの date
属性は予約属性なので、JSON ログのための前処理操作を通過します。
下記の例では、ログの実際のタイムスタンプは mytimestamp
属性の値であり、ログのタイムスタンプ Dec 13, 2017 at 14:16:45.158
ではありません。
サポートされている日付形式
mytimestamp
属性の値が、現在表示されているログのタイムスタンプをオーバーライドするようにするには、それを日付属性として追加する必要があります。
- ログパイプラインに移動します。
- Preprocessing for JSON Logs にカーソルを合わせ、鉛筆のアイコンをクリックします。
- 日付属性のリストに
mytimestamp
を追加します。日付リマッパーは予約された各属性をリストの順番に探します。日付が mytimestamp
属性に由来していることを確認するために、リストの最初に置きます。 - Save をクリックします。
リマップが機能するためには、特定の日付形式に従う必要があります。認識されている日付形式は ISO8601、UNIX (ミリ秒 EPOCH 形式)、RFC3164 です。
別の日付形式を使用する場合は、カスタム日付形式を参照してください。
注: すべての処理は取り込み時に行われるため、パイプラインの変更は新しいログにのみ影響します。
カスタム日付形式
リマッパーがデフォルトでサポートしていない日付形式は、Grok パーサーを使ってパースした後、サポートされている形式に変換することができます。
- ログを処理しているパイプラインに移動します。これらのログ用にまだパイプラインが構成されていない場合、そのパイプラインを新規に作成します。
- Add Processor をクリックします。
- プロセッサーの種類で Grok Parser を選択します。
- 日付形式に基づいたパースルールを定義します。詳しくは、こちらの日付のパース例をご覧ください。
- Advanced Settings セクションで、
mytimestamp
を Extract from
セクションに追加して、このパーサーがカスタムの mytimestamp
属性にのみ適用されるようにします。 - Create をクリックします。
- ログ日付リマッパーを追加して、新しいログに正しいタイムスタンプをマッピングします。