我有几个安装了filebeat的Web服务器,我希望每个主机有多个索引。
我当前的配置显示为
input {
beats {
ports => 1337
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}"}
}
geoip {
source => "clientip"
}
}
output {
elasticsearch {
if [beat][hostname] == "luna"
{
hosts => "10.0.1.1:9200"
manage_template => true
index => "lunaindex-%{+YYYY.MM.dd}"
document_type => "apache"
}
}
}
然而,上述结果导致
给定的配置无效。原因:预期的一个#,=>在 第22行,第6列(字节346)
这是if语句发生的地方。有什么帮助吗?
我希望以嵌套格式将上述内容作为
if [beat][hostname] == "lina"
{
index = lina
}
else if [beat][hostname] == "lona"
{
index = lona
}
等。有什么帮助吗?
答案 0 :(得分:1)
要访问任何内部字段,您必须使用%{}将其括起来。
试试这个
%{[beat][hostname]}
有关详细说明,请参阅this。
更新:
将%{[beat] [hostname]}与==一起使用将无效,请尝试
if "lina" in [beat][hostname]{
index = lina
}
答案 1 :(得分:1)
线程很旧,但希望有人会发现它有用。插件定义不允许使用条件,因此会出现错误。条件必须包括整个定义,如下所示。另外,有关详细信息,请参见documentation。
output {
if [beat][hostname] == "luna" {
elasticsearch {
hosts => "10.0.1.1:9200"
manage_template => true
index => "lunaindex-%{+YYYY.MM.dd}"
document_type => "apache"
}
} else{
elasticsearch {
// alternate configuration
}
}
}