📅  最后修改于: 2023-12-03 15:15:03.977000             🧑  作者: Mango
Filebeat是一个轻量级的日志数据收集器,可以将日志从不同的源头发送到Elasticsearch或Logstash等不同的输出目标。Filebeat常常用于收集日志,在处理日志前,我们需要利用condition来过滤不需要的日志。
Condition是Filebeat中的重要概念之一,用于在处理事件之前对事件进行过滤并且只发送符合条件的事件,以节省网络和计算资源。在定义Condition时,您需要定义一个或多个key:value的映射。代表触发条件的字段称为 'if' 条件,您也可以使用'else if'或 'else' 条件。
如果事件满足if条件,则Filebeat将事件发送到其下游的输出。if条件通常用于引用event的元数据字段,例如:
fields.application: "my_application" AND fields.environment: "production"
上例中,如果事件包含'fields.application'和'fields.environment'字段,它将与表达式匹配,将事件发送到下游输出。您可以使用逻辑运算符AND,OR和NOT来组合表达式。
如果事件不符合第一个条件,Filebeat将检查下一个else if条件。这种条件用于在失败的if条件后执行另一组条件,并且如果满足任一else if条件,Filebeat将发送事件。
else条件不需要条件表达式。如果事件不符合任何if和else if条件,则Filebeat将使用else条件。
让我们看一个简单的例子。
如果我们想仅发送来自特定应用程序且使用特定记录级别的日志:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/my_application.log
fields:
application: my_application
environment: production
processors:
- drop_event:
when:
not:
or:
- equals:
log.level: "info"
- equals:
log.level: "warn"
以上示例中,我们使用了if条件,把关注点放在了log.level字段上,并选择INFO和WARN级别。
Condition提供了一种灵活的方式来过滤事件以确保只有想要的事件被发送。通过在配置文件中使用if、else if和else条件,您可以构建出强大条件表达式来确定哪些事件应该发送,从而使Filebeat的数据收集更加高效。(可参考Elastic%官方文档)