干货 | ELK 日志实时分析实战
input、output 基本结合字段含义都能看懂。
就中间部分的 grok、date 处理感觉有点云里雾里,我们下一小节拆解讲解。
3.1.1 date 插件定义
date 插件也可以称为:日期过滤器。
用途:用于解析字段中的日期,然后使用该日期或时间戳作为事件的日志记录时间戳。
如下代码代表将:timestamp 字段转换成 ISO8601 数据类型。
3.1.2 date 插件适用场景
日期或时间戳类型转换。
3.1.3 date 插件核心参数解读
ISO8601 的本质含义:将日期字段解析为 “2011-04-19T03:44:01.103Z“ 类型。
还有其他类型,诸如:UNIX、UNIX_MS、TAI64N 等。
详细解释参考官方文档:
https://www.elastic.co/guide/en/logstash/current/plugins-filters-date.html
3.2.1 grok 插件定义
将非结构化日志数据解析为结构化和可查询的日志。
3.2.2 grok 插件适用场景
适合 syslog 日志、apache 日志和其他网络服务器日志、mysql 日志,以及通常为人类而非计算机使用编写的任何日志格式。
3.2.3 grok 插件附带的 120 + 匹配模式
第一次看 filter 处理环节,不理解:
类似语法的含义。
实际上:
• TIMESTAMP_ISO8601 就是匹配模式;
• timestamp 解析后存储 TIMESTAMP_ISO8601 格式数据的变量,且该变量会作为 elasticsearch Mapping 中的一个字段。
匹配模式的本质其实是:正则表达式。
120 + 匹配模式对应的官方文档:
https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns
本文用到的匹配模式对应的正则表达式如下:
字段说明:
第一列:匹配类型名称。
第二列:匹配的正则表达式。
代码面前,了无秘密。
所以,再回头看 filter 语法会很通透。
3.2.4 grok 插件测试工具
为了更方便我们的提前测试,官方也提供了匹配工具,
工具一:一个网站 http://grokdebug.herokuapp.com/。
工具二:kibana 自带 Grok Debugger 工具。
显然,Kibana 自带 Grok Debugger 更为清爽。
日志实时分析是 ELK 组件的核心业务场景之一,而核心中的核心是 Logstash 中间处理 filter 环节。
掌握了 filter 环节,就掌握了 ELK 实时日志分析的精髓。
欢迎大家留言讨论自己的 ELK 实战遇到的问题。