用Filebeat收集日志,用logstash过滤掉你想要的日志。

利用国外大佬的开源项目,不需要做任何改动,就可以快速搭建一个单机版的ELK进行手动训练。

注:logstash已经被我改造过了。如果用这个项目构建ELK,记得更改logstash.conf。

ELK项目github链接:/deviantony/docker-elk

这里不太描述es,主要关注filebeat和logstash。

Filebeat是用于转发和集中日志数据的轻量级发送器。Filebeat作为代理安装在服务器上,监控您指定的日志文件或位置,收集日志事件,并将其转发到Elasticsearch或Logstash进行索引。

Filebeat如何工作:当您启动Filebeat时,它将启动一个或多个输入,这些输入将找到您为日志数据指定的位置。对于Filebeat找到的每个日志,Filebeat都会启动一个收集器。每个收集器读取一个新内容的日志,并将新的日志数据发送到libbeat,后者聚合事件并将聚合的数据发送到您为Filebeat配置的输出。

官方流程图如下:

Logstash是一个具有实时管道功能的开源数据收集引擎。Logstash可以动态地统一来自不同来源的数据,并将数据标准化到您选择的目的地。清理和民主化各种高级下游分析和可视化用例的所有数据。

Logstash的优势:

然后进入正文,先说说我的需求。

麋鹿由elasticsearch+logstash+kibana组成。

本文中filebeat的功能是收集特定目录下的日志并发送出去,但只能收集不能过滤数据。此时,使用logstash。logstash有很多插件,可以提供过滤和过滤功能。因为logstash本身是基于jdk的,占用内存比较大,而filebeat没有。有图有真相:

因此,可以采用以下方案来收集筛选日志:

参考配置,只列出我用的。详见官方文件:

注意:6.0以上需要将filebeat.yml挂载到/usr/share/filebeat.yml,另外还需要挂载/usr/share/filebeat/data/registry文件,避免filebeat容器挂起后重复收集日志。

我用的logstash不是用来收集日志的,而是用来匹配和过滤日志的,所以不要从项目开始,只需要单独启动,暴露端口5044,接收filebeat发来的日志,也就是说它只是起到一个处理转发给elasticsearch的作用。

配置参考:

备注:

我在上面定制的格式是:

测试要上传到github的项目。

地址:/liaozihong/ELK-CollectionLogs

参考链接:

ELK Filebeat结合Logstash

Grok调试器

ELK日志存储配置语法(第24版)

Filebeat的官方文档

正式文件