在使用Logtail採集日誌時,可以使用processor_gotime
外掛程式或processor_strptime
外掛程式解析原始日誌中的時間欄位。本文介紹兩種外掛程式的參數說明和配置樣本。
功能入口
當您需要使用Logtail外掛程式處理日誌時,您可以在建立或修改Logtail採集配置時,添加外掛程式配置。具體操作,請參見處理外掛程式概述。
Go語言時間格式
processor_gotime
外掛程式使用Go語言時間格式解析原始日誌中的時間欄位,並支援將解析結果設定為Log Service中的日誌時間。
Logtail 0.16.28及以上版本支援processor_gotime外掛程式。
表單配置方式:採集文本日誌和容器標準輸出時可用。
JSON配置方式:採集文本日誌時不可用。
表單配置方式
參數說明
配置處理外掛程式類型為提取日誌時間(Go語言時間格式)。
相關參數說明如下表所示。
參數
說明
原始時間欄位
原始欄位名。
原始時間格式
原始時間的格式。
原始時間時區
原始時間的時區。選擇機器時區時,表示Logtail所在主機或容器的時區。
結果時間欄位
解析後的目標欄位。
結果時間格式
解析後的時間格式。
自訂結果時間時區
解析後的時區。選擇機器時區時,表示原生時區。
進階參數>設為日誌時間
選中該選項後,系統會將解析後的時間設定為日誌時間。
進階參數>保留原始欄位
選中該選項後,解析後的日誌中將保留原始欄位。
進階參數>原始欄位缺失報錯
選中該選項後,如果原始日誌中無您所指定的原始欄位,系統將報錯。
進階參數>提取失敗報錯
選中該選項後,如果提取日誌時間失敗,系統將報錯。
樣本
原始時間(
s_key
欄位)的格式為2006-01-02 15:04:05(東八區)
,現將原始時間解析為2006/01/02 15:04:05(東九區)
格式,添加到d_key
欄位中,並設定解析結果為Log Service中的日誌時間。原始日誌
"s_key":"2022-07-05 19:28:01"
Logtail外掛程式處理配置
處理結果
"s_key":"2022-07-05 19:28:01" "d_key":"2022/07/05 20:28:01"
JSON配置方式
參數說明
配置type為processor_gotime,detail說明如下表所示。
參數
類型
是否必選
說明
SourceKey
String
是
原始欄位名。
SourceFormat
String
是
原始時間的格式。
SourceLocation
Int
是
原始時間的時區。參數值為空白時,表示Logtail所在主機或容器的時區。
DestKey
String
是
解析後的目標欄位。
DestFormat
String
是
解析後的時間格式。
DestLocation
Int
否
解析後的時區。參數值為空白時,表示本機時區。
SetTime
Boolean
否
是否將解析後的時間設定為日誌時間。
true(預設值):是
false:否
KeepSource
Boolean
否
被解析後的日誌中是否保留原始欄位。
true(預設值):保留
false:不保留
NoKeyError
Boolean
否
原始日誌中無您所指定的原始欄位時,系統是否報錯。
true(預設值):報錯
false:不報錯
AlarmIfFail
Boolean
否
提取日誌時間失敗,系統是否報錯。
true(預設值):報錯
false:不報錯
樣本
原始時間(s_key欄位)的格式為
2006-01-02 15:04:05(東八區)
,現將原始時間解析為2006/01/02 15:04:05(東九區)
格式,添加到d_key欄位中,並設定解析結果為Log Service中的日誌時間。原始日誌
"s_key":"2019-07-05 19:28:01"
Logtail外掛程式處理配置
{ "processors":[ { "type":"processor_gotime", "detail": { "SourceKey": "s_key", "SourceFormat":"2006-01-02 15:04:05", "SourceLocation":8, "DestKey":"d_key", "DestFormat":"2006/01/02 15:04:05", "DestLocation":9, "SetTime": true, "KeepSource": true, "NoKeyError": true, "AlarmIfFail": true } } ] }
處理結果
"s_key":"2019-07-05 19:28:01" "d_key":"2019/07/05 20:28:01"
strptime時間格式
processor_strptime
外掛程式使用Linux strptime時間格式解析日誌中的時間欄位,並支援將解析結果設定為日誌時間。
Logtail 0.16.28及以上版本支援processor_strptime外掛程式。
表單配置方式
參數說明
配置處理器類型為提取日誌時間(strptime時間格式),相關參數說明如下表所示。
參數
說明
原始欄位
原始欄位名。
原始時間格式
原始時間的格式。
保留原始欄位
選中該選項後,被解析後的日誌中將保留原始欄位。
提取失敗報錯
選中該選項後,如果提取日誌時間失敗,系統將報錯。
進行時間位移
選中該選項後,您可以設定時間位移秒數。
時間位移秒數
時間位移秒數。例如28800表示東八區,-3600代表西一區。
配置樣本
將
%Y/%m/%d %H:%M:%S
格式的原始時間(log_time
欄位的值)解析為對應的日誌時間,時區使用機器所在時區。假設時區為東八區。原始日誌
"log_time":"2022/01/02 12:59:59"
Logtail外掛程式處理配置
處理結果
"log_time":"2022/01/02 12:59:59" Log.Time = 1451710799
常見的時間運算式
說明processor_strptime
外掛程式支援%f格式解析,表示秒的小數部分,最高精度為納秒。樣本
時間運算式
2016/01/02 12:59:59
%Y/%m/%d %H:%M:%S
2016/01/02 12:59:59.1
%Y/%m/%d %H:%M:%S.%f
2016/01/02 12:59:59.987654321 +0700 (UTC)
%Y/%m/%d %H:%M:%S.%f %z (%Z)
2016/Jan/02 12:59:59,123456
%Y/%b/%d %H:%M:%S,%f
2019-07-15T04:16:47:123Z
%Y-%m-%dT%H:%M:%S:%f
JSON配置方式
參數說明
配置type為processor_strptime,detail說明如下表所示。
參數
類型
是否必選
說明
SourceKey
String
是
原始欄位名。
Format
String
是
原始時間的格式。
AdjustUTCOffset
Boolean
否
是否調整時區。
true:是。
false(預設值):否
UTCOffset
Int
否
用於調整的時區位移秒數。例如28800表示東八區。
AlarmIfFail
Boolean
否
提取日誌失敗時,系統是否報錯。
true(預設值):報錯。
false:不報錯。
KeepSource
Boolean
否
被解析後的日誌中,是否保留原始欄位。
true(預設值):保留。
false:不保留。
EnablePreciseTimestamp
Boolean
否
是否提取高精度時間。
true:是。
false(預設值):否。
設定為true後,該外掛程式會將SourceKey參數對應的欄位值解析為毫秒層級的時間戳記,並存入PreciseTimestampKey參照中對應的欄位。
重要設定該參數為true前,請確保SourceKey參數對應的欄位值(原始時間)支援相應的時間精度(ms、us或ns)。
僅Logtail 1.0.32及以上版本支援。
PreciseTimestampKey
String
否
儲存高精度時間戳記的欄位。預設值為precise_timestamp欄位。
PreciseTimestampUnit
String
否
高精度時間戳記的單位。預設值為ms。取值包括ms(毫秒)、us(微秒)、ns(納秒)。
樣本
將
%Y/%m/%d %H:%M:%S
格式的原始時間(log_time欄位的值)解析為對應的日誌時間,時區使用機器所在時區。樣本1:假設時區為東八區。
原始日誌
"log_time":"2016/01/02 12:59:59"
Logtail外掛程式處理配置
{ "processors":[ { "type":"processor_strptime", "detail": { "SourceKey": "log_time", "Format": "%Y/%m/%d %H:%M:%S" } } ] }
處理結果
"log_time":"2016/01/02 12:59:59" Log.Time = 1451710799
樣本2:假設時區為東七區。
原始日誌
"log_time":"2016/01/02 12:59:59"
Logtail外掛程式處理配置
{ "processors":[ { "type":"processor_strptime", "detail": { "SourceKey": "log_time", "Format": "%Y/%m/%d %H:%M:%S", "AdjustUTCOffset": true, "UTCOffset": 25200 } } ] }
處理結果
"log_time":"2016/01/02 12:59:59" Log.Time = 1451714399
樣本3:假設時區為東七區。
原始日誌
"log_time":"2016/01/02 12:59:59.123"
Logtail外掛程式處理配置
{ "processors":[ { "type":"processor_strptime", "detail": { "SourceKey": "log_time", "Format": "%Y/%m/%d %H:%M:%S.%f", "EnablePreciseTimestamp": true } } ] }
處理結果
"log_time":"2016/01/02 12:59:59.123" "precise_timestamp": 1451714399123 Log.Time = 1451714399
常見的時間運算式
說明processor_strptime外掛程式支援%f格式解析,表示秒的小數部分,最高精度為納秒。
樣本
時間運算式
2016/01/02 12:59:59
%Y/%m/%d %H:%M:%S
2016/01/02 12:59:59.1
%Y/%m/%d %H:%M:%S.%f
2016/01/02 12:59:59.987654321 +0700 (UTC)
%Y/%m/%d %H:%M:%S.%f %z (%Z)
2016/Jan/02 12:59:59,123456
%Y/%b/%d %H:%M:%S,%f
2019-07-15T04:16:47:123Z
%Y-%m-%dT%H:%M:%S:%f