timestamp
注意
Promtail 已被弃用,并在长期支持 (LTS) 阶段,持续到 2026 年 2 月 28 日。Promtail 将于 2026 年 3 月 2 日达到生命周期结束 (EOL)。您可以在此处找到迁移资源。
timestamp
阶段是一种操作阶段,可以在日志行发送到 Loki 之前更改其时间戳。如果不存在 timestamp
阶段,日志行的时间戳默认为日志条目被抓取的时间。
Schema
timestamp:
# Name from extracted data to use for the timestamp.
source: <string>
# Determines how to parse the time string. Can use
# pre-defined formats by name: [ANSIC UnixDate RubyDate RFC822
# RFC822Z RFC850 RFC1123 RFC1123Z RFC3339 RFC3339Nano Unix
# UnixMs UnixUs UnixNs].
format: <string>
# Fallback formats to try if the format fails to parse the value
# Can use pre-defined formats by name: [ANSIC UnixDate RubyDate RFC822
# RFC822Z RFC850 RFC1123 RFC1123Z RFC3339 RFC3339Nano Unix
# UnixMs UnixUs UnixNs].
[fallback_formats: []<string>]
# IANA Timezone Database string.
[location: <string>]
# Which action should be taken in case the timestamp can't
# be extracted or parsed. Valid values are: [skip, fudge].
# Defaults to "fudge".
[action_on_failure: <string>]
参考时间
format
字段可以指定如何解释参考时间(定义为 Mon Jan 2 15:04:05 -0700 MST 2006
)的格式,也可以是以下常用形式之一:
ANSIC
:Mon Jan _2 15:04:05 2006
UnixDate
:Mon Jan _2 15:04:05 MST 2006
RubyDate
:Mon Jan 02 15:04:05 -0700 2006
RFC822
:02 Jan 06 15:04 MST
RFC822Z
:02 Jan 06 15:04 -0700
RFC850
:Monday, 02-Jan-06 15:04:05 MST
RFC1123
:Mon, 02 Jan 2006 15:04:05 MST
RFC1123Z
:Mon, 02 Jan 2006 15:04:05 -0700
RFC3339
:2006-01-02T15:04:05-07:00
RFC3339Nano
:2006-01-02T15:04:05.999999999-07:00
此外,以下 format
值支持常见的 Unix 时间戳:
Unix
:1562708916
或带小数部分1562708916.000000123
UnixMs
:1562708916414
UnixUs
:1562708916414123
UnixNs
:1562708916000000123
自定义格式会直接传递给 Go 的 time.Parse 函数中的 layout 参数。如果自定义格式未指定年份部分,Promtail 将假定使用系统时钟指示的当前年份。
自定义格式使用的语法通过时间戳的每个组成部分(即 Mon Jan 2 15:04:05 -0700 MST 2006
)的特定值来定义参考日期和时间。下表显示了自定义格式中应使用的受支持参考值。
时间戳组成部分 | 格式值 |
---|---|
年 | 06 , 2006 |
月 | 1 , 01 , Jan , January |
日 | 2 , 02 , _2 (右对齐,两位数) |
星期 | Mon , Monday |
时 | 3 (12 小时制), 03 (12 小时制带零前缀), 15 (24 小时制) |
分 | 4 , 04 |
秒 | 5 , 05 |
秒的小数部分 | .000 (毫秒带零前缀), .000000 (微秒), .000000000 (纳秒), .999 (毫秒不带末尾零), .999999 (微秒), .999999999 (纳秒) |
12 小时制周期 | pm , PM |
时区名称 | MST |
时区偏移 | -0700 , -070000 (带秒), -07 , 07:00 , -07:00:00 (带秒) |
时区 ISO-8601 | Z0700 (Z 代表 UTC 或时间偏移), Z070000 , Z07 , Z07:00 , Z07:00:00 |
为了正确格式化时间,对于时间戳 2006/01/02 03:04:05.000
- 如果您想要 24 小时制格式,应使用
15:04:0.000
。 - 如果您想要 12 小时制格式,应使用
3:04:05.000 PM
或03:04:05.000 PM
。
失败时采取的操作
action_on_failure
设置定义了在提取数据中不存在 source
字段或时间戳解析失败时,该阶段应采取的操作。支持的操作包括:
fudge
(默认):将时间戳更改为上次已知的时间戳,并加上 1 纳秒(以保证日志条目顺序)skip
:不更改时间戳,保留 Promtail 抓取日志条目时的时间
示例
- timestamp:
source: time
format: RFC3339Nano
此阶段在提取的 map 中查找 time
字段,并以 RFC3339Nano
形式(例如 2006-01-02T15:04:05.999999999-07:00
)读取其值。生成的时间值将用作随日志行发送到 Loki 的时间戳。