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 2006UnixDate:Mon Jan _2 15:04:05 MST 2006RubyDate:Mon Jan 02 15:04:05 -0700 2006RFC822:02 Jan 06 15:04 MSTRFC822Z:02 Jan 06 15:04 -0700RFC850:Monday, 02-Jan-06 15:04:05 MSTRFC1123:Mon, 02 Jan 2006 15:04:05 MSTRFC1123Z:Mon, 02 Jan 2006 15:04:05 -0700RFC3339:2006-01-02T15:04:05-07:00RFC3339Nano:2006-01-02T15:04:05.999999999-07:00
此外,以下 format 值支持常见的 Unix 时间戳:
Unix:1562708916或带小数部分1562708916.000000123UnixMs:1562708916414UnixUs:1562708916414123UnixNs: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 的时间戳。



