提取日志時(shí)間
在使用Logtail采集日志時(shí),可以使用processor_gotime
插件或processor_strptime
插件解析原始日志中的時(shí)間字段。本文介紹兩種插件的參數(shù)說明和配置示例。
功能入口
當(dāng)您需要使用Logtail插件處理日志時(shí),您可以在創(chuàng)建或修改Logtail采集配置時(shí),添加插件配置。具體操作,請(qǐng)參見處理插件概述。
Go語(yǔ)言時(shí)間格式
processor_gotime
插件使用Go語(yǔ)言時(shí)間格式解析原始日志中的時(shí)間字段,并支持將解析結(jié)果設(shè)置為日志服務(wù)中的日志時(shí)間。
Logtail 0.16.28及以上版本支持processor_gotime插件。
表單配置方式:采集文本日志和容器標(biāo)準(zhǔn)輸出時(shí)可用。
JSON配置方式:采集文本日志時(shí)不可用。
表單配置方式
參數(shù)說明
配置處理插件類型為提取日志時(shí)間(Go語(yǔ)言時(shí)間格式)。
相關(guān)參數(shù)說明如下表所示。
參數(shù)
說明
原始時(shí)間字段
原始字段名。
原始時(shí)間格式
原始時(shí)間的格式。
原始時(shí)間時(shí)區(qū)
原始時(shí)間的時(shí)區(qū)。選擇機(jī)器時(shí)區(qū)時(shí),表示Logtail所在主機(jī)或容器的時(shí)區(qū)。
結(jié)果時(shí)間字段
解析后的目標(biāo)字段。
結(jié)果時(shí)間格式
解析后的時(shí)間格式。
自定義結(jié)果時(shí)間時(shí)區(qū)
解析后的時(shí)區(qū)。選擇機(jī)器時(shí)區(qū)時(shí),表示本機(jī)的時(shí)區(qū)。
高級(jí)參數(shù)>設(shè)為日志時(shí)間
選中該選項(xiàng)后,系統(tǒng)會(huì)將解析后的時(shí)間設(shè)置為日志時(shí)間。
高級(jí)參數(shù)>保留原始字段
選中該選項(xiàng)后,解析后的日志中將保留原始字段。
高級(jí)參數(shù)>原始字段缺失報(bào)錯(cuò)
選中該選項(xiàng)后,如果原始日志中無您所指定的原始字段,系統(tǒng)將報(bào)錯(cuò)。
高級(jí)參數(shù)>提取失敗報(bào)錯(cuò)
選中該選項(xiàng)后,如果提取日志時(shí)間失敗,系統(tǒng)將報(bào)錯(cuò)。
示例
原始時(shí)間(
s_key
字段)的格式為2006-01-02 15:04:05(東八區(qū))
,現(xiàn)將原始時(shí)間解析為2006/01/02 15:04:05(東九區(qū))
格式,添加到d_key
字段中,并設(shè)置解析結(jié)果為日志服務(wù)中的日志時(shí)間。原始日志
"s_key":"2022-07-05 19:28:01"
Logtail插件處理配置
處理結(jié)果
"s_key":"2022-07-05 19:28:01" "d_key":"2022/07/05 20:28:01"
JSON配置方式
參數(shù)說明
配置type為processor_gotime,detail說明如下表所示。
參數(shù)
類型
是否必選
說明
SourceKey
String
是
原始字段名。
SourceFormat
String
是
原始時(shí)間的格式。
SourceLocation
Int
是
原始時(shí)間的時(shí)區(qū)。參數(shù)值為空時(shí),表示Logtail所在主機(jī)或容器的時(shí)區(qū)。
DestKey
String
是
解析后的目標(biāo)字段。
DestFormat
String
是
解析后的時(shí)間格式。
DestLocation
Int
否
解析后的時(shí)區(qū)。參數(shù)值為空時(shí),表示本機(jī)時(shí)區(qū)。
SetTime
Boolean
否
是否將解析后的時(shí)間設(shè)置為日志時(shí)間。
true(默認(rèn)值):是
false:否
KeepSource
Boolean
否
被解析后的日志中是否保留原始字段。
true(默認(rèn)值):保留
false:不保留
NoKeyError
Boolean
否
原始日志中無您所指定的原始字段時(shí),系統(tǒng)是否報(bào)錯(cuò)。
true(默認(rèn)值):報(bào)錯(cuò)
false:不報(bào)錯(cuò)
AlarmIfFail
Boolean
否
提取日志時(shí)間失敗,系統(tǒng)是否報(bào)錯(cuò)。
true(默認(rèn)值):報(bào)錯(cuò)
false:不報(bào)錯(cuò)
示例
原始時(shí)間(s_key字段)的格式為
2006-01-02 15:04:05(東八區(qū))
,現(xiàn)將原始時(shí)間解析為2006/01/02 15:04:05(東九區(qū))
格式,添加到d_key字段中,并設(shè)置解析結(jié)果為日志服務(wù)中的日志時(shí)間。原始日志
"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 } } ] }
處理結(jié)果
"s_key":"2019-07-05 19:28:01" "d_key":"2019/07/05 20:28:01"
strptime時(shí)間格式
processor_strptime
插件使用Linux strptime時(shí)間格式解析日志中的時(shí)間字段,并支持將解析結(jié)果設(shè)置為日志時(shí)間。
Logtail 0.16.28及以上版本支持processor_strptime插件。
表單配置方式
參數(shù)說明
配置處理器類型為提取日志時(shí)間(strptime時(shí)間格式),相關(guān)參數(shù)說明如下表所示。
參數(shù)
說明
原始字段
原始字段名。
原始時(shí)間格式
原始時(shí)間的格式。
保留原始字段
選中該選項(xiàng)后,被解析后的日志中將保留原始字段。
提取失敗報(bào)錯(cuò)
選中該選項(xiàng)后,如果提取日志時(shí)間失敗,系統(tǒng)將報(bào)錯(cuò)。
進(jìn)行時(shí)間偏移
選中該選項(xiàng)后,您可以設(shè)置時(shí)間偏移秒數(shù)。
時(shí)間偏移秒數(shù)
時(shí)間偏移秒數(shù)。例如28800表示東八區(qū),-3600代表西一區(qū)。
配置示例
將
%Y/%m/%d %H:%M:%S
格式的原始時(shí)間(log_time
字段的值)解析為對(duì)應(yīng)的日志時(shí)間,時(shí)區(qū)使用機(jī)器所在時(shí)區(qū)。假設(shè)時(shí)區(qū)為東八區(qū)。原始日志
"log_time":"2022/01/02 12:59:59"
Logtail插件處理配置
處理結(jié)果
"log_time":"2022/01/02 12:59:59" Log.Time = 1451710799
常見的時(shí)間表達(dá)式
說明processor_strptime
插件支持%f格式解析,表示秒的小數(shù)部分,最高精度為納秒。示例
時(shí)間表達(dá)式
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配置方式
參數(shù)說明
配置type為processor_strptime,detail說明如下表所示。
參數(shù)
類型
是否必選
說明
SourceKey
String
是
原始字段名。
Format
String
是
原始時(shí)間的格式。
AdjustUTCOffset
Boolean
否
是否調(diào)整時(shí)區(qū)。
true:是。
false(默認(rèn)值):否
UTCOffset
Int
否
用于調(diào)整的時(shí)區(qū)偏移秒數(shù)。例如28800表示東八區(qū)。
AlarmIfFail
Boolean
否
提取日志失敗時(shí),系統(tǒng)是否報(bào)錯(cuò)。
true(默認(rèn)值):報(bào)錯(cuò)。
false:不報(bào)錯(cuò)。
KeepSource
Boolean
否
被解析后的日志中,是否保留原始字段。
true(默認(rèn)值):保留。
false:不保留。
EnablePreciseTimestamp
Boolean
否
是否提取高精度時(shí)間。
true:是。
false(默認(rèn)值):否。
設(shè)置為true后,該插件會(huì)將SourceKey參數(shù)對(duì)應(yīng)的字段值解析為毫秒級(jí)別的時(shí)間戳,并存入PreciseTimestampKey參照中對(duì)應(yīng)的字段。更多信息,請(qǐng)參見Logtail日志采集支持高精度時(shí)間戳。
重要設(shè)置該參數(shù)為true前,請(qǐng)確保SourceKey參數(shù)對(duì)應(yīng)的字段值(原始時(shí)間)支持相應(yīng)的時(shí)間精度(ms、us或ns)。
僅Logtail 1.0.32及以上版本支持。
PreciseTimestampKey
String
否
保存高精度時(shí)間戳的字段。默認(rèn)值為precise_timestamp字段。
PreciseTimestampUnit
String
否
高精度時(shí)間戳的單位。默認(rèn)值為ms。取值包括ms(毫秒)、us(微秒)、ns(納秒)。
示例
將
%Y/%m/%d %H:%M:%S
格式的原始時(shí)間(log_time字段的值)解析為對(duì)應(yīng)的日志時(shí)間,時(shí)區(qū)使用機(jī)器所在時(shí)區(qū)。示例1:假設(shè)時(shí)區(qū)為東八區(qū)。
原始日志
"log_time":"2016/01/02 12:59:59"
Logtail插件處理配置
{ "processors":[ { "type":"processor_strptime", "detail": { "SourceKey": "log_time", "Format": "%Y/%m/%d %H:%M:%S" } } ] }
處理結(jié)果
"log_time":"2016/01/02 12:59:59" Log.Time = 1451710799
示例2:假設(shè)時(shí)區(qū)為東七區(qū)。
原始日志
"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 } } ] }
處理結(jié)果
"log_time":"2016/01/02 12:59:59" Log.Time = 1451714399
示例3:假設(shè)時(shí)區(qū)為東七區(qū)。
原始日志
"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 } } ] }
處理結(jié)果
"log_time":"2016/01/02 12:59:59.123" "precise_timestamp": 1451714399123 Log.Time = 1451714399
常見的時(shí)間表達(dá)式
說明processor_strptime插件支持%f格式解析,表示秒的小數(shù)部分,最高精度為納秒。
示例
時(shí)間表達(dá)式
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