我有几台安装了文件拍的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"
  }
  }
}

但是上述conf结果



这是if语句发生的地方。有什么帮助吗?

我想以嵌套格式将上述内容作为
if [beat][hostname] == "lina"
{
index = lina
}
else if [beat][hostname] == "lona"
{
index = lona
}

等。有什么帮助吗?

最佳答案

要访问任何内部字段,您必须将其用%{}括起来。

试试这个

%{[beat][hostname]}

有关更多说明,请参见this

更新:

不能将%{[beat] [hostname]}与==一起使用,请尝试
if "lina" in [beat][hostname]{
    index = lina
}

关于elasticsearch - Logstash条件输出到elasticsearch(每个文件拍主机名的索引),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43914397/

10-11 08:39