ログ イベントにはタイムスタンプ属性が残され、特定のイベントが発生した正確な瞬間がわかります。タイムスタンプを使用すると、特定の時間枠のログを検索して、イベントがいつ何が起こったかを知ることができるため、イベントの順序付けには重要です。
タイムスタンプには多くの形式があり、単一の標準はありません。ほとんどの場合、これらはログ イベントの先頭に表示されますが、ログのかなり後から表示されたり、まったく表示されない場合もあります。
デフォルトでは、New Relic はログが取り込まれると同時に、ログtimestamp
属性 (予約済みキーワード) の値を割り当てます。これは取り込み時間と呼ばれます。 ログにtimestamp
属性がない場合、New Relic は取り込み時にタイムスタンプを割り当てます。 JSON 形式のログには、タイムスタンプを識別する属性 ( timestamp
、 log_timestamp
、 time
など) が含まれています。 サポートされているタイムスタンプ形式の JSON ログを受信した場合、取り込みタイムスタンプを JSON 属性でオーバーライドします。 デフォルトの動作を手動でオーバーライドしてログに含まれるtimestamp
値を割り当てるには、2 つのオプションがあります。
サポートされている時間形式のいずれかでtimestamp
属性を含むJSON 形式のログ を受信した場合、取り込みタイムスタンプはオーバーライドされます。代わりに、JSON 属性のタイムスタンプ値が使用されます。 解析ルールを 使用して、取り込みtimestamp
値をオーバーライドできます。解析ルールを使用すると、データを抽出して、サポートされている形式のいずれかでタイムスタンプをフォーマットできます。datetime
Grok タイプとpattern
を使用して、ログ内のカスタム タイムスタンプ形式を定義することもできます。次の 2 つのタイムスタンプ形式がサポートされています。
Unix エポック タイムスタンプ形式 UNIX epoch タイムスタンプは、1970 年 1 月 1 日の 00:00:00 UTC から経過した秒数 (またはミリ秒) に基づいています。 Fri, 03 Nov 2023 16:06:32 GMT
の 2 つの形式の例は次のとおりです。
10 桁のエポック秒時間: 1699027592
13 桁のエポックミリ秒時間: 1699027592000
ISO8601 タイムスタンプ形式 ISO8601 形式はyyyy-MM-ddTHH:mm:ss.SSSTZD
パターンに従います (例:2023-11-07T14:20:35+04:00)。例えば:
Key
Value
Example
yyyy-MM-dd
4 桁の年 2 桁の月 (1 月は 01、2 月は 02 など) 2桁の日(01~31) 2023-11-03
THH:mm:ss.SSS
T
時間要素の開始を示します2 桁の時間 (00 ~ 23) 2 桁の分 (00 ~ 59) 2桁の秒(00~59) 3 桁のミリ秒 (オプション、最大 9 桁で最初の 3 桁のみを表示) T14:20:35
TZD (タイムゾーン指定子)
+
または-
は、タイムゾーンが UTC (協定世界時) からどのくらい進んでいるか、または遅れているかを示します。指定しない場合は、UTC が想定されます。
+04:00
ISO8601 の形式の例をいくつか示します。
yyyy-MM-ddTHH:mm:ss
: 2023-11-03T15:28:05
yyyy-MM-ddTHH:mm:ss.SSS
:2023-11-03T15:28:05.250
yyyy-MM-ddTHH:mm:ssZ
: 2023-11-03T15:28:05Z
yyyy-MM-ddTHH:mm:ss+HH:mm
: 2023-11-03T15:28:05+07:00
タイムスタンプの最大精度はミリ秒です。タイムスタンプをより正確に表現 (例:ナノ秒またはマイクロ秒)は自動的にミリ秒に短縮されます。
JSON ログでサポートされているタイムスタンプ timestamp
属性を持つ JSON 形式のログを受信した場合、デフォルトの取り込み値timestamp
を元の JSON 値でオーバーライドします。タイムスタンプ フィールドがない場合、またはフィールドの形式が正しくない場合、ログは取り込みタイムスタンプとともに保存されます。48 時間より古いタイムスタンプを持つペイロードはドロップされることに注意してください。
タイムスタンプは Unix エポック ミリ秒に変換され、予約キーワードtimestamp
を使用して Long データ型として内部的に保存されます。JSON 本文の形式に応じて、タイムスタンプ フィールドは 4 つの異なる場所に割り当てることができます。
単一の JSON オブジェクトを送信する場合の、JSON 本文メッセージの簡略化された一連の属性の 内部。
1 つ以上の JSON オブジェクトを送信するときの、JSON 本文メッセージの詳細な属性セット内の共通 オブジェクト内。タイムスタンプは、この JSON のすべてのログ メッセージに適用されます。
1 つ以上の JSON オブジェクトを送信するときの、JSON 本文メッセージの詳細な属性セットのログ オブジェクト内の各ログ メッセージ内。タイムスタンプはそのログ メッセージにのみ適用されます。
有効な JSON メッセージの場合は、「message」JSON フィールド内。
ログ管理 機能は、あらゆるメッセージ属性を JSON として解析します。 解析されたメッセージ内の結果の JSON 属性がログに追加されます。
以下は、取り込みtimestamp
をオーバーライドする有効なtimestamp
属性を持つ JSON ログの例です。
エポック形式の JSON ログ (ミリ秒精度なし) 次のような JSON ログを、 timestamp
をepoch 形式で受信した場合 (ミリ秒精度なし):
"message" : "This is my sample JSON log message with timestamp attribute in epoch format"
取り込みtimestamp
をログに含まれるエポックtimestamp
でオーバーライドします。結果は次のようになります。
"timestamp" : 1701445572000 ,
"message" : "This is my sample JSON log message with timestamp attribute in epoch format"
ISO8601形式のJSONログ 次のようなISO8601 形式のタイムスタンプを持つ JSON ログを受信した場合:
"timestamp" : "2023-12-01T15:46:26.607Z" ,
"message" : "This is my sample JSON log message with timestamp attribute in ISO8601 format"
取り込みtimestamp
を、ログに含まれる ISO8601 timestamp
(エポックに変換) でオーバーライドします。結果は次のようになります。
"timestamp" : 1701445586607 ,
"message" : "This is my sample JSON log message with timestamp attribute in ISO8601 format"
解析ルールを使用してログのタイムスタンプを設定する 取り込み時に解析ルールを使用して、ログに含まれる値で取り込みtimestamp
をオーバーライドできます。解析ルールは、単純な Grok 式を使用するか、 datetime
Grok タイプとpattern
を使用してログ内のカスタム タイムスタンプ形式を定義することにより、サポートされている時刻形式を抽出します。
式によって抽出された属性名はtimestamp
である必要があり、そのデータ型は文字列または Long である必要があります。データ型が指定されていない場合、タイムスタンプはデフォルトの文字列になります。マイクロ秒またはナノ秒の精度のエポック タイムスタンプの場合、タイムスタンプの精度がミリ秒に短縮される場合でも、 long
データ型を含める必要があります。
ログ内のタイムスタンプが Unix エポックまたは ISO8601 形式のタイムスタンプの場合は、デフォルトの Grok パターンを使用してそれらに一致させることができます。例えば:
Unix エポック タイムスタンプを抽出するには、 NUMBER
、 NOTSPACE
、 DATA
、またはGREEDYDATA
など、値に一致する任意の式を使用できます。 ISO8601 形式のタイムスタンプを抽出するには、 TIMESTAMP_ISO8601
Grok 式を使用する必要があります。 datetime
Grok タイプを使用すると、サポートされていない形式のタイムスタンプを解析できます。これを行うには、ログのタイムスタンプ形式と一致するpattern
を持つdatetime
Grok タイプを含める必要があります。pattern
は、ここに ある Java の単純な日付と時刻のパターンを使用する必要があります。以下は、Grok 式がサポートされていないタイムスタンプ形式をサポートされている形式に変換する方法を示す例です。
timestamp
pattern
グロク式
2023/11/17 23:55:25.674
MM/dd/yyyy HH:mm:ss.SSS
%{DATA:timestamp:datetime;MM/dd/yyyy HH:mm:ss.SSS}
2023-11-17 23:55:25
MM-dd-yyyy HH:mm:ss
%{DATA:timestamp:datetime;MM-dd-yyyy HH:mm:ss}
2023/11/17 09:55:25 AM
MM/dd/yyyy h:mm:ss a
%{DATA:timestamp:datetime;MM/dd/yyyy h:mm:ss a}
以下は、取り込み解析ルールを使用してログからtimestamp
を解析する方法の例です。
ISO8601 形式のタイムスタンプの解析ルール 次の解析ルールを追加します。
%{TIMESTAMP_ISO8601:timestamp}
ISO8601 形式のタイムスタンプを含むこのログメッセージ:
2023-12-05T16:50:48.421Z 146.190.212.184: This is my sample non-JSON log message with ISO8601 timestamp.
ログを解析するには次のようにします。
"message" : "2023-12-05T16:50:48.421Z 146.190.212.184: This is my sample non-JSON log message with ISO8601 timestamp." ,
"timestamp" : 1701795048421
エポック形式のタイムスタンプの解析ルール 次の解析ルールを追加します。
epoch 形式のタイムスタンプを含む次のログメッセージ:
1701795958504 146.190.212.184: This is my sample non-JSON log message with epoch (with ms) timestamp.
ログを解析するには次のようにします。
"message" : "1701795958504 146.190.212.184: This is my sample non-JSON log message with epoch (with ms) timestamp." ,
"timestamp" : 1701795958504
サポートされていない形式のタイムスタンプの解析ルール 次の解析ルールを追加します。
^%{DATA:timestamp:datetime;MM/dd/yyyy HH:mm:ss.SSS} %{IP:ip}
サポートされていないタイムスタンプ形式のログ メッセージには次のようになります。
12/05/2023 17:12:45.347 146.190.212.184: This is my sample non-JSON log message with un-supported timestamp.
ログを解析するには次のようにします。
"message" : "12/05/2023 17:12:45.347 146.190.212.184: This is my sample non-JSON log message with DATE_US timestamp." ,
"timestamp" : 1701796365347