在使用 Filebeat 已经 Logstash 时,通常我们可以使用通配符让它们作用于许多的文件。在一些时候,比如有的文件很久没有更新,它们已经失去了被用作分析的目的,另外在同一个目录中,有可能有一些是我们不想要的文件,我们并不想处理这些文件,那么我们该如何过滤掉这些文件呢?
ignore_older
在 Filebeat 和 Logstash 之中,我们都可以发现一个叫做 ignore_older 的配置项。在默认的时候,它是没有被启动的。一旦它被启动了,表示它将忽略在指定时间跨度之前修改的所有文件。这个被修改的文件,我们通常可以使用如下的命令来进行获得:
ls -al
比如:
$ ls -al test.log
-rw-r--r--@ 1 liuxg staff 194 Jul 23 2020 test.log
上面的输出可以看出来文件在 Jul 23, 2020 年被修改过。
在默认的情况下这个值为 0,也就是没有被启动。
Filebeat
你可使用时间的字符串,比如 2h (2小时)及 5m (5 分钟)。我们可以在官方文档处找到详细的说明。
filebeat.inputs:
- type: log
paths:
- /var/log/*.log
ignore_older: 24h
...
在上面,它表示如果日志文件的 modified 时间超过 24 小时,那么, Filebeat 将不导入该文件,即使该文件出现在 path 里,比如:
Logstash
同样地,我们也可以在 Logstash 里进配置。不过根据官方文档,该值为数值类型,并且是以秒为单位。
input {
file {
path => "/logs/*.log"
start_position => "beginning"
sincedb_path => "/dev/null"
ignore_older => 1000
type => "apache"
}
}
output {
stdout {
codec => rubydebug
}
}
在上面的配置中,任何文件的修改时间超过 1000 秒,那么该文件将不被处理。
Logstash 排除一些不需要的文件
排除项(与文件名匹配,而不是完整路径)。 文件名模式在这里也是有效的。 例如,如果你有:
input {
file {
path => "/var/log/*"
start_position => "beginning"
sincedb_path => "/dev/null"
exclude => "*.gz"
type => "apache"
}
}
output {
stdout {
codec => rubydebug
}
}
在上面,我们可以使用 exclude 来排除那些以 .gz 为结尾的文件。
使用 Filebeat 处理所需要的行
exclude_lines
正则表达式列表,以匹配你要 Filebeat 排除的行。 Filebeat 会删除列表中与正则表达式匹配的所有行。 默认情况下,不删除任何行。 空行将被忽略。
如果还指定了多行设置,则在通过 exclude_lines 过滤行之前,将每条多行消息组合为一行。
下面的示例将 Filebeat 配置为删除以 DBG 开头的所有行。
filebeat.inputs:
- type: log
...
exclude_lines: ['^DBG']
有关受支持的正则表达式模式的列表,请参见正则表达式支持。
include_lines
正则表达式列表,以匹配你要 Filebeat 包括的行。 Filebeat 仅导出与列表中的正则表达式匹配的行。 默认情况下,所有行均被导出。 空行将被忽略。
如果还指定了多行设置,则在通过 include_lines 过滤行之前,将每条多行消息合并为一行。
下面的示例将 Filebeat 配置为导出以 ERR 或 WARN 开头的任何行:
filebeat.inputs:
- type: log
...
include_lines: ['^ERR', '^WARN']
注意:如果同时定义了 include_lines 和 exclude_lines,Filebeat 将首先执行 include_lines,然后再执行 exclude_lines。 定义两个选项的顺序无关紧要。 即使 exclude_lines 在配置文件中的 include_lines 之前出现,include_lines 选项也将始终在 exclude_lines 选项之前执行。
以下示例导出所有包含 sometext 的日志行,但以 DBG 开头的行(调试消息)除外:
filebeat.inputs:
- type: log
...
include_lines: ['sometext']
exclude_lines: ['^DBG']
有关受支持的正则表达式模式的列表,请参见正则表达式支持。