elasticsearch 在Elasticsearch输出ILM滚动别名中使用变量,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch 在Elasticsearch输出ILM滚动别名中使用变量,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch 在Elasticsearch输出ILM滚动别名中使用变量

elasticsearch 在Elasticsearch输出ILM滚动别名中使用变量,elasticsearch,logstash,elasticsearch,Logstash,我无法使ILM滚动别名接受变量。在这个特定的实例中,我们将有一个麋鹿集群来承载多个环境的日志。日志条目在进入logstash管道之前将加盖其环境的印章。我希望条目指向正确的别名,但在启动logstash(截断stacktrace)时出现以下错误: 发生意外错误!{:error=>java.net.URISyntaxException: 索引0处的转义对格式不正确:%{[fields][Environment]}-日志 这是我的日志存储管道: input { rabbitmq { h

我无法使ILM滚动别名接受变量。在这个特定的实例中,我们将有一个麋鹿集群来承载多个环境的日志。日志条目在进入logstash管道之前将加盖其环境的印章。我希望条目指向正确的别名,但在启动logstash(截断stacktrace)时出现以下错误:

发生意外错误!{:error=>java.net.URISyntaxException: 索引0处的转义对格式不正确:%{[fields][Environment]}-日志

这是我的日志存储管道:

input { 
  rabbitmq {
    host => "rabbitmq"
    port => 5672
    user => "guest"
    password => "guest"
    subscription_retry_interval_seconds => 5
    queue => "logstash-queue"
    exchange => "logs"
    exchange_type => "direct"
    durable => true
    key => "logstash"
  }
}

filter {
  mutate {
    rename => {"Properties" => "fields"}
  }
  mutate {
    lowercase => ["[fields][Environment]"]
  }
}

output {
  elasticsearch {
      hosts => ["http://elasticsearch:9200"]
      template_name=>"app-logs"
      ilm_enabled => true
      ilm_rollover_alias => "%{[fields][Environment]}-logs"
      ilm_pattern => "{now/d}-000001"
      ilm_policy => "30_day_retention_logs_policy"
    }
}

当ilm_enabled为true且使用ilm_rollover_别名时,不能使用动态变量替换

建议的解决方案(在编写本文时)是使用多个输出。我建议自动生成
logstash.conf
、salt、ansible等,这样您就不必继续手动编辑配置文件

output {
        if <condition> {
            elasticsearch {
                ...
                index => "logstash-<env>-logs"
                ilm...
            }
<etc>
输出{
如果{
弹性搜索{
...
索引=>“日志存储--日志”
ilm。。。
}
在ElasticGitHub上存在着这样的问题——很奇怪,这种灵活性被移除了,但你就这样做了