ログ イベントにはタイムスタンプ属性が残され、特定のイベントが発生した正確な瞬間がわかります。タイムスタンプを使用すると、特定の時間枠のログを検索して、イベントがいつ何が起こったかを知ることができるため、イベントの順序付けには重要です。
タイムスタンプには多くの形式があり、単一の標準はありません。ほとんどの場合、これらはログ イベントの先頭に表示されますが、ログのかなり後から表示されたり、まったく表示されない場合もあります。
デフォルトでは、New Relic はログが取り込まれると同時に、ログtimestamp
属性 (予約済みキーワード) の値を割り当てます。これは取り込み時間と呼ばれます。 ログにtimestamp
属性がない場合、New Relic は取り込み時にタイムスタンプを割り当てます。 JSON 形式のログには、タイムスタンプを識別する属性 ( timestamp
、 log_timestamp
、 time
など) が含まれています。 サポートされているタイムスタンプ形式の JSON ログを受信した場合、取り込みタイムスタンプを JSON 属性でオーバーライドします。 デフォルトの動作を手動でオーバーライドしてログに含まれるtimestamp
値を割り当てるには、2 つのオプションがあります。
サポートされている時間形式のいずれかでtimestamp
属性を含むJSON 形式のログ を受信した場合、取り込みタイムスタンプはオーバーライドされます。代わりに、JSON 属性のタイムスタンプ値が使用されます。 解析ルールを 使用して、取り込みtimestamp
値をオーバーライドできます。解析ルールを使用すると、データを抽出して、サポートされている形式のいずれかでタイムスタンプをフォーマットできます。datetime
Grok タイプとpattern
を使用して、ログ内のカスタム タイムスタンプ形式を定義することもできます。次の 2 つのタイムスタンプ形式がサポートされています。
Unix エポック タイムスタンプ形式 Unixepoch [エポック]タイムスタンプは、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)。例えば:
鍵
価値
例
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
%{GREEDYDATA:timestamp:datetime;MM/dd/yyyy HH:mm:ss.SSS}
2023-11-17 23:55:25
MM-dd-yyyy HH:mm:ss
%{GREEDYDATA:timestamp:datetime;MM-dd-yyyy HH:mm:ss}
2023/11/17 09:55:25 AM
MM/dd/yyyy hh:mm:ss a
%{GREEDYDATA:timestamp:datetime;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