我正在配置logstash以从多个主机上的多个工作人员收集日志。我目前正在为主持人添加字段:
input {
file {
path => "/data/logs/box-1/worker-*.log"
add_field => {
"original_host" => "box-1"
}
}
file {
path => "/data/logs/box-2/worker-*.log"
add_field => {
"original_host" => "box-2"
}
}
但是,我还想添加一个字段{'worker': 'A'}
,依此类推。我有很多工人,所以我不想为主持人和工人的每一个组合写一个file { ... }
块。
我有其他选择吗?
答案 0 :(得分:3)
您应该可以执行path => "/data/logs/*/worker-*.log"
,然后添加一个grok过滤器来提取您需要的内容。
filter { grok { match => [ "path", "/(?<original_host>[^/]+)/worker-(?<worker>.*).log" ] } }
或非常接近的内容....可能希望用if [path] =~ /worker/
包围它,具体取决于配置文件中的其他内容。