Logstash Filter date 插件介绍

2019-05-05 0 By admin

date插件可以用来将日志记录中的时间字符串,转换成LogStash::Timestamp对象,然后替换到@timestamp字段中。
注意:如果output 中使用了 %{YYYY.MM.dd} 这种写法,其数值从 @timestamp 字段中读取。所以应该将日志中时间字段转为 @timestamp ,不应该直接删除timestamp字段。

一、配置实例

Nginx 日志默认日期格式:“17/Jan/2018:17:14:08 +0800”

filter {
	grok {
		match => {"message" => "%{HTTPDATE:local_time}"}
		}
	date {
		locale => "en"
		match => ["local_time","dd/MMM/yyyy:HH:mm:ss Z"]
		target => "local_time"
		#remove_field => ["timestamp"]
     }
}

二、使用参数介绍

1、locale

指定用于日期分析的区域设置;常用设置:en:美国的BCP47或者en_US的POSIX。

2、match
使用数组,指定字段和匹配的格式。

3、target
值类型是字符串,默认值是“@timestamp”。将匹配的时间戳存储到给定的目标字段中。 如果未提供,则默认更新事件的@timestamp字段。

4、timezone
指定要用于日期分析的时区标准ID。好像并不起效。

三、date 插件的5种时间格式

1、ISO8601
类似 “2011-04-19T03:44:01.103Z” 这样的格式。具体Z后面可以有 “08:00″也可以没有,”.103″这个也可以没有。
常用场景里来说,Nginx 的 log_format 配置里就可以使用 $time_iso8601 变量来记录请求时间成这种格式。

2、UNIX
UNIX 时间戳格式,记录的是从 1970 年起始至今的总秒数。Squid 的默认日志格式中就使用了这种格式。

3、UNIX_MS
这个时间戳则是从 1970 年起始至今的总毫秒数。JavaScript 里经常使用这个时间格式。

4、TAI64N
将解析tai64n时间值

5、Joda-Time 库
Logstash 内部使用了 Java 的 Joda 时间库来作时间处理。所以我们可以使用 Joda 库所支持的时间格式来作具体定义。

四、date 插件中时间字段字符

用于解析日期和时间文本的语法使用字母来指示时间值(月,分等)的类型,以及重复的字母来表示该值的形式(2位月份,全月份名称等)。
以下是可用于解析日期和时间的内容:
1、y year:
yyyy #全年号码。 例如:2015。
yy #两位数年份。 例如:2015年的15。

2、M month of the year :
M #最小数字月份。 例如:1 for January and 12 for December.。
MM #两位数月份。 如果需要,填充零。 例如:01 for January and 12 for Decembe
MMM #缩短的月份文本。 例如: Jan for January。 注意:使用的语言取决于您的语言环境。 请参阅区域设置以了解如何更改语言。
MMMM #全月文本,例如:January。 注意:使用的语言取决于您的语言环境。

3、d day of the month :
d #最少数字的一天。 例如:1月份的第一天1。
dd #两位数的日子,如果需要的话可以填零.例如:01 for the 1st of the month。

4、H hour of the day (24-hour clock):
H #最小数字小时。 例如:0表示午夜。
HH #两位数小时,如果需要填零。 例如:午夜00。

5、m minutes of the hour (60 minutes per hour):
m #最小的数字分钟。 例如:0。
mm #两位数分钟,如果需要填零。 例如:00。

6、s seconds of the minute (60 seconds per minute) :
s #最小数字秒。 例如:0。
ss #两位数字,如果需要填零。 例如:00。

7、S 秒的小数部分最大精度是毫秒(SSS)。 除此之外,零附加。
S #十分之一秒。例如:0为亚秒值012
SS #百分之一秒 例如:01为亚秒值01
SSS #千分之一秒 例如:012为亚秒值012

8、Z 时区偏移或身份

Z #时区偏移,结构为HHmm(Zulu/UTC的小时和分钟偏移量)。例如:-0700。
ZZ #时区偏移结构为HH:mm(小时偏移和分钟偏移之间的冒号)。 例如:-07:00。
ZZZ #时区身份。 例如:America/Los_Angeles。

9、w 一年中的一周

w #最小数字周。 例如:1。
ww #两位数周,如果需要填零。例如:01。

10、D 一年中的一天

11、e 星期几(数量)

12、E 一周中的天(文本)
E,EE,EEE #星期几缩写。 例如:Mon, Tue, Wed, Thu, Fri, Sat, Sun。 注意:这个的实际语言将取决于您的语言环境。
EEEE #一周中的全文。 例如:Monday, Tuesday,…注意:这个的实际语言将取决于您的语言环境。