Beats是用于单用途数据托运人的平台。它们以轻量级代理的形式安装,并将来自成百上千台机器的数据发送到Logstash或Elasticsearch。
Beats对于收集数据非常有用。它们位于你的服务器上,将数据集中在Elasticsearch中,Beats也可以发送到Logstash来进行转换和解析。
Beats可以直接(或者通过Logstash)将数据发送到Elasticsearch,在那里你可以进一步处理和增强数据,然后在Kibana中将其可视化
我们昨天使用了下ELK发现一个问题,就是收集过来的日志含有一些我们不需要的行,所以今天我们来给大家讲下如何过滤掉这些无用的日志,因为beat家族有多个产品,收集linux日志使用filebeat,windows的日志则需要winlogbeat,此处我们所讲的为filebeat
filebeat提供了很多方法解决这些文件
1.使用exclude_lines和include_lines
我把我的filebeat.yml文件进行了修改,如下
filebeat.inputs: - type: log enabled: true paths: - /usr/local/nginx/logs/access.log fields: log_source: nginx-access include_lines: ['jsrpc.php'] exclude_lines: ['dashboard'] - type: log enabled: true paths: - /usr/local/nginx/logs/error.log fields: log_source: nginx-error
上面用了include_lines,和exclude_lines排除和包含关键词的行
我们看到新进来的日志已经排除了dashboard的日志
2.我们可以使用multiline来处理多行匹配,具体用法如下
在var.paths下面添加,添加位置和刚才的include_lines一样
multiline.pattern: '^\d{4}/\d{2}/\d{2}' #2019\10\25 这样就可以匹配出日志开头 multiline.negate: true multiline.match: after multiline.Max_lines:20 multiline.timeout: 10s
pattern:多行日志开始的那一行匹配的pattern
negate:是否需要对pattern条件转置使用,不翻转设为true,反转设置为false
match:匹配pattern后,与前面(before)还是后面(after)的内容合并为一条日志
max_lines:合并的最多行数(包含匹配pattern的那一行 默认值是500行
timeout:到了timeout之后,即使没有匹配一个新的pattern(发生一个新的事件),也把已经匹配的日志事件发送出去
另外还可以使用logstash中的gork正则来重新匹配日志输出,后面我们再对那个进行学习