用Filebeat收集日志,用logstash过滤掉你想要的日志。
注: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的官方文档
正式文件