【发布时间】:2019-02-27 10:54:34
【问题描述】:
快速背景:
- 我们正在使用文件节拍向消息添加字段 - 一个“管道标记”和一个“服务”标记。
- 理想情况下,它们将进入一个名为
foo-${[fields][service]}-${+YYYY.MM.dd}的索引
但是,我们担心“某些”服务器可能配置错误并且没有这些标记(我们有自动化来保护我们,但我们全都采用腰带和护腕的方法)。
Logstash 文档充其量是模糊的,有时甚至是错误的,例如在某些元素周围使用或不使用引号。但这就是我们所拥有的:
- pipeline.id beats-server
config.string |
input { beats { port => 5504 }}
output {
if [fields][pipeline_marker] == "application" { # works
pipeline { send_to => "application" }
} else if [fields][pipeline_marker] == "REDACTED" { # works
pipeline { send_to => "REDACTED" }
} else if [service] in [fields] { # THIS DOESNT
pipeline { send_to => "default-service" }
} else { # Works
pipeline { send_to => "default"
}
}
然后是管道配置,这些都很好。
所以特别是声明if [service] in [fields]。我尝试了if "service" in [fields] 的一些替代方案 - Logstash 文档说“in”是一回事,我发现了一个模糊的例子。基本上所有内容都符合我的默认捕获所有内容索引。
【问题讨论】:
标签: logging logstash elastic-stack