天天看点

Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台

重点来看Logstash的配置

本文使用了grok插件,grok是Logstash默认自带的Filter插件,能够帮助我们将未结构化的日志数据转化为结构化、可查询的数据格式。grok对日志的解析基于特定的正则模式匹配,对于Apache的Access Log 访问日志,多数情况下我们都适用combined格式。

Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台

可以看到现在logstash输出的内容包括原始日志信息,以及按照日志格式解析后的各字段信息。

配置参考上面,使用了GeoIP插件后,可以对访问IP进行反向解析,返回地址信息。可以用于后续做图。

Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台

但是仅仅这样还不够,因为进入ES的数据会自动进行映射,而对于地理数据,需要映射为特殊的geo_point类型,本文未做详细阐述,后续会有文章专门解决这个问题。

logstash默认为每次导入的数据赋予当前的时间做为时间戳,如果我们希望能够使用日志中的时间做为记录的时间戳,主要用下面的配置。

这个配置匹配了日志中的时间,放入timestamp时间戳中,并且新创建了一个单独的datetime字段。

logstash配置完成后,首先确保ElasticSearch处于运行状态,再启动 logstash,最后启动Filebeat。这样,日志数据就会存放在ES中的 access_log 索引下。

结果如下图

Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台

$DATE需要替换成具体的日期(格式YYYY.MM.DD),本文就是logstash-2017.08.10。

首先在Kibana中创建Index Pattern,索引选择 access_log ,时间戳选择 timestamp 或者 datetime,然后在 Discover 中就可以看到数据了。

Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台

结合Visualize和Dashboar,可以做出按时间统计的访问曲线和返回状态饼图。

Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台

参考资料: