十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
logstash使用date处理时间有几种方式?针对这个问题,今天小编总结了这篇文章,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。
创新互联公司是一家专业提供瑶海企业网站建设,专注与网站制作、做网站、H5高端网站建设、小程序制作等业务。10年已为瑶海众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。1、第一种,直接在配置文件中自定义时间格式
这是tomcat配置文件中的一段日志时间配置,按照这样的配置,那么输出的日志是这样子的:
然后你继续在logstash中这样子配置
此时logstash就不会报"_dateparsefailed"错误了。
这种形式在nginx、apache等web服务器中配置是最好的,也比较方便分析。
2、第二种,带有中括号的(其实跟上面是一回事)
日志本身输出是这样子的
[07/Feb/2018:16:24:19 +0800]
带有一对中括号
那么在grok插件中这样子定义就行:
\[%{HTTPDATE:timestamp}\]
date插件可以直接转换,如下:
最后的效果是这样子的
这样子也不会报错
3、ISO8601形式
在日志文件中原生日志是这样子的:
2019-03-19 13:08:07.782
重点是后面的”.782“,后面附加以毫秒为单位的。
那么grok插件中可以这样子定义匹配的规则:
此时date插件可以这样子定义:
date { match => [ "access_time","MMM d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601"] }
上面的形式没有写错,直接复制粘贴到配置文件即可
最后匹配如下:
这样子也不会报”_dateparsefailed“错误。
最后附加一张时间匹配规则表,平时可做参考
4、根据时间戳来转换数据。
在mysql的慢查询日志中收集时,由于某些情况下只能根据时间戳来确定时间,那么我们就必须使用转换的方案了。主要是将时间戳转换成UNIX风格的时间,比如:
mysql慢查询日志的时间是这样子的:
那么我们在logstash的配置文件中使用的date插件这样子来写:
这样子就可以匹配成功了。
上面的“timestamp_mysql”是我在grok插件中的匹配后的时间赋值,比如:
%{NUMBER:timestamp_mysql};
时间日志:
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时间的匹配格式
看完上述内容,你们掌握logstash使用date处理时间的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。