客户Promtail阶段时间戳

时间戳阶段

时间戳stage是一个动作阶段,可以在日志发送给洛基之前更改日志行的时间戳。当一个时间戳阶段不存在时,日志行的时间戳默认为提取日志条目的时间。

模式

timestamp: #从提取的数据中用于时间戳的名称。决定如何解析时间字符串。可以按名称使用#预定义格式:[ANSIC UnixDate RubyDate RFC822 # RFC822Z RFC850 RFC1123 RFC1123Z RFC3339 RFC3339 nano Unix # UnixMs UnixUs UnixNs]。format:  #回退格式尝试,如果格式解析值失败#可以使用预定义格式的名称:[ANSIC UnixDate RubyDate RFC822 # RFC822Z RFC850 RFC1123 RFC1123Z RFC3339 RFC3339 nano Unix # UnixMs UnixUs UnixNs]。[fallback_formats: []] # IANA Timezone数据库字符串。[location: ] #在时间戳不能被提取或解析的情况下应该采取什么操作。有效值为:[skip, fudge]。#默认为“fudge”。[action_on_failure: <字符串>]

参考时间

格式字段可以如何引用时间,定义为2006年1月2日星期一15:04:05 -0700 MST,将被解释为以下格式,也可以是以下常见格式之一:

  • ANSIC:2006年1月2日15:04:05
  • UnixDate:2006年1月2日星期一MST 15:04:05
  • RubyDate:2006年1月2日星期一15:04:05 -0700
  • RFC822:1月06日15:04 MST
  • RFC822Z:1月6日15:04 -0700
  • RFC850:周一,02- 01 -06 15:04:05 MST
  • RFC1123:2006年1月2日星期一MST时间15:04:05
  • RFC1123Z:2006年1月2日星期一15:04:05 -0700
  • RFC3339:2006 - 01 - 02 - t15:04:05 07:00
  • RFC3339Nano:2006 - 01 - 02 - t15:04:05.999999999 07:00

此外,通过以下方式支持对通用Unix时间戳的支持格式价值观:

  • Unix:1562708916或者用分数1562708916.000000123
  • UnixMs:1562708916414
  • UnixUs:1562708916414123
  • UnixNs:1562708916000000123

自定义格式直接传递给Go的布局参数时间。解析函数。如果自定义格式没有指定年份组件,Promtail将根据系统时钟假设使用当前年份。

自定义格式使用的语法使用时间戳的每个组件的特定值定义引用日期和时间(即,2006年1月2日星期一15:04:05 -0700 MST).下表显示了应在自定义格式中使用的受支持的参考值。

时间戳组件 格式的值
一年 062006
1011月1月
一天 202_2(右对齐两位数字)
星期几 我的周一
小时 3.(12小时),03(12小时零前缀),15(24小时)
一分钟 404
第二个 505
秒的几分之一 组织(ms0前缀),.000000(μs),.000000000(ns),.999(不带后面0的ms),.999999(μs),.999999999(ns)
12个小时的时间
时区名称 MST
时区偏移 -0700年-070000年(秒),-07年07:0007:00:00(秒)
时区iso - 8601 Z0700(Z为UTC或时间偏移),Z070000Z07Z07:00Z07:00:00

对失败采取的行动

action_on_failure设置定义了在事件发生时,阶段应该采取的动作字段在提取的数据中不存在或时间戳解析失败。支持的操作有:

  • 福吉(默认):将时间戳更改为最后一个已知时间戳,总和为1纳秒(以保证日志条目的顺序)
  • 跳过:不更改时间戳,保留日志条目被Promtail抓取的时间

例子

-时间戳:来源:时间格式:RFC3339Nano

这个阶段寻找一个时间字段,并将其值读入RFC3339Nano形式(例如,2006 - 01 - 02 - t15:04:05.999999999 07:00).得到的时间值将被用作日志行发送给Loki的时间戳。