仅将一部分日志发送到 logstash
Ship only a percentage of logs to logstash
我如何配置 filebeat 以仅将一定百分比的日志(如果您愿意,可以作为示例)传送到 logstash?
在我的应用程序的日志文件夹中,每个日志被分块到大约 20 兆。我希望 filebeat 仅将大约 1/300 的日志量发送到 logstash。
我需要在通过线路将其发送到 logstash 之前削减日志量,因此我无法从 logstash 进行过滤,它需要在端点上发生在它离开服务器之前。
我在 ES 论坛上问了这个问题,有人说用 filebeat 是不可能的:https://discuss.elastic.co/t/ship-only-a-percentage-of-logs-to-logstash/77393/2
真的没有办法扩展 filebeat 来做到这一点吗? nxlog 或其他产品可以吗?
据我所知,FileBeat 无法做到这一点。不过,您可以使用 Logstash 来完成。
filter {
drop {
percentage => 99.7
}
}
这可能是您将在服务器上以传送模式使用 Logstash 而不是 FileBeat 的用例。
input {
file {
path => "/var/log/hugelogs/*.log"
add_tags => [ 'sampled' ]
}
}
filter {
drop {
percentage => 99.7
}
}
output {
tcp {
host => 'logstash.prod.internal'
port => '3390'
}
}
这意味着在您的服务器上安装 Logstash。但是,您尽可能少地配置它。只是一个输入,足够的过滤器来获得你想要的效果,以及一个输出(在这种情况下是 Tcp,但它可以是任何东西)。完全过滤将在管道中发生。
无法将 Filebeat 配置为根据概率删除任意事件。但 Filebeat 确实具有根据条件丢弃事件的能力。有两种过滤事件的方式。
Filebeat 有一种方法可以在读取文件时指定要包含或排除的行。这是应用过滤最有效的地方,因为它发生得早。这是使用配置文件中的 include_lines
和 exclude_lines
完成的。
filebeat.prospectors:
- paths:
- /var/log/myapp/*.log
exclude_lines: ['^DEBUG']
所有 Beats 都有 "processors" 允许您根据条件应用操作。一个动作是 drop_events
,条件是 regexp
、contains
、equals
和 range
。
processors:
- drop_event:
when:
regexp:
message: '^DEBUG'
我如何配置 filebeat 以仅将一定百分比的日志(如果您愿意,可以作为示例)传送到 logstash?
在我的应用程序的日志文件夹中,每个日志被分块到大约 20 兆。我希望 filebeat 仅将大约 1/300 的日志量发送到 logstash。
我需要在通过线路将其发送到 logstash 之前削减日志量,因此我无法从 logstash 进行过滤,它需要在端点上发生在它离开服务器之前。
我在 ES 论坛上问了这个问题,有人说用 filebeat 是不可能的:https://discuss.elastic.co/t/ship-only-a-percentage-of-logs-to-logstash/77393/2
真的没有办法扩展 filebeat 来做到这一点吗? nxlog 或其他产品可以吗?
据我所知,FileBeat 无法做到这一点。不过,您可以使用 Logstash 来完成。
filter {
drop {
percentage => 99.7
}
}
这可能是您将在服务器上以传送模式使用 Logstash 而不是 FileBeat 的用例。
input {
file {
path => "/var/log/hugelogs/*.log"
add_tags => [ 'sampled' ]
}
}
filter {
drop {
percentage => 99.7
}
}
output {
tcp {
host => 'logstash.prod.internal'
port => '3390'
}
}
这意味着在您的服务器上安装 Logstash。但是,您尽可能少地配置它。只是一个输入,足够的过滤器来获得你想要的效果,以及一个输出(在这种情况下是 Tcp,但它可以是任何东西)。完全过滤将在管道中发生。
无法将 Filebeat 配置为根据概率删除任意事件。但 Filebeat 确实具有根据条件丢弃事件的能力。有两种过滤事件的方式。
Filebeat 有一种方法可以在读取文件时指定要包含或排除的行。这是应用过滤最有效的地方,因为它发生得早。这是使用配置文件中的 include_lines
和 exclude_lines
完成的。
filebeat.prospectors:
- paths:
- /var/log/myapp/*.log
exclude_lines: ['^DEBUG']
所有 Beats 都有 "processors" 允许您根据条件应用操作。一个动作是 drop_events
,条件是 regexp
、contains
、equals
和 range
。
processors:
- drop_event:
when:
regexp:
message: '^DEBUG'