首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在弹性搜索输出ILM滚动别名中使用变量

在弹性搜索输出ILM滚动别名中使用变量
EN

Stack Overflow用户
提问于 2019-06-24 15:15:38
回答 1查看 2K关注 0票数 5

我不能让ILM滚转别名来接受变量。在这个特定的例子中,我们将有一个承载多个环境日志的ELK集群。在进入logstash管道之前,日志条目将使用它们的环境进行标记。我希望条目转到正确的别名,但是在启动logstash (截断堆栈跟踪)时,我会得到以下错误:

发生了意外错误!{:error=>java.net.URISyntaxException:索引0:%{field}-logs处格式错误的转义对

这是我的日志存储管道:

代码语言:javascript
复制
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"
    }
}
EN

回答 1

Stack Overflow用户

发布于 2020-05-13 14:11:13

根据practices

当ilm_enabled为true和使用ilm_rollover_alias时,不能使用动态变量替换。

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

代码语言:javascript
复制
output {
        if <condition> {
            elasticsearch {
                ...
                index => "logstash-<env>-logs"
                ilm...
            }
<etc>

在弹性github上有一些关于这个的问题--这种灵活性被删除了,这真的很奇怪,但是你可以这样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56739563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档