温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

logstash关于date时间处理的几种方式总结

发布时间:2020-07-25 01:33:17 来源:网络 阅读:316 作者:andy_f 栏目:系统运维

1、第一种,直接在配置文件中自定义时间格式

logstash关于date时间处理的几种方式总结

这是tomcat配置文件中的一段日志时间配置,按照这样的配置,那么输出的日志是这样子的:

logstash关于date时间处理的几种方式总结

然后你继续在logstash中这样子配置

logstash关于date时间处理的几种方式总结

此时logstash就不会报"_dateparsefailed"错误了。

这种形式在nginx、apache等web服务器中配置是最好的,也比较方便分析。

2、第二种,带有中括号的(其实跟上面是一回事)

日志本身输出是这样子的

[07/Feb/2018:16:24:19 +0800]

带有一对中括号

那么在grok插件中这样子定义就行:

\[%{HTTPDATE:timestamp}\]

date插件可以直接转换,如下:

logstash关于date时间处理的几种方式总结

最后的效果是这样子的

logstash关于date时间处理的几种方式总结

这样子也不会报错

3、ISO8601形式

在日志文件中原生日志是这样子的:

2019-03-19 13:08:07.782

重点是后面的”.782“,后面附加以毫秒为单位的。

 那么grok插件中可以这样子定义匹配的规则:

logstash关于date时间处理的几种方式总结

此时date插件可以这样子定义:

 date {
                match => [ "access_time","MMM  d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601"]
        }

上面的形式没有写错,直接复制粘贴到配置文件即可

最后匹配如下:

logstash关于date时间处理的几种方式总结

这样子也不会报”_dateparsefailed“错误。

最后附加一张时间匹配规则表,平时可做参考

logstash关于date时间处理的几种方式总结

4、根据时间戳来转换数据。

mysql的慢查询日志中收集时,由于某些情况下只能根据时间戳来确定时间,那么我们就必须使用转换的方案了。主要是将时间戳转换成UNIX风格的时间,比如:

mysql慢查询日志的时间是这样子的:

logstash关于date时间处理的几种方式总结

那么我们在logstash的配置文件中使用的date插件这样子来写:

logstash关于date时间处理的几种方式总结

这样子就可以匹配成功了。

上面的“timestamp_mysql”是我在grok插件中的匹配后的时间赋值,比如:

%{NUMBER:timestamp_mysql};

4、ISO8601形式

时间日志:

2018-02-09T10:57:42+08:00

此时在grok中可以这么写:

grok {
        match => { "message" ; "{TIMESTAMP_ISO8601:localtime}
}

而在时间转存到@timestamp有两种写法可以供使用

date {
        match => ["localtime", "yyyy-MM-dd'T'HH:mm:ssZZ"]
        target => "@timestamp"
}

或者是

date {
        match => ["localtime", "ISO8601"]
    }

都可以实现ISO8601时间的匹配格式

 


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI