我不能让ILM滚转别名来接受变量。在这个特定的例子中,我们将有一个承载多个环境日志的ELK集群。在进入logstash管道之前,日志条目将使用它们的环境进行标记。我希望条目转到正确的别名,但是在启动logstash (截断堆栈跟踪)时,我会得到以下错误:
发生了意外错误!{:error=>java.net.URISyntaxException:索引0:%{field}-logs处格式错误的转义对
这是我的日志存储管道:
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"
}
}发布于 2020-05-13 14:11:13
当ilm_enabled为true和使用ilm_rollover_alias时,不能使用动态变量替换。
拟议的解决办法(在编写本报告时)是使用多个输出。我建议将logstash.conf、salt、ansible等自动生成,这样您就不必继续手动编辑配置文件。
output {
if <condition> {
elasticsearch {
...
index => "logstash-<env>-logs"
ilm...
}
<etc>在弹性github上有一些关于这个的问题--这种灵活性被删除了,这真的很奇怪,但是你可以这样做。
https://stackoverflow.com/questions/56739563
复制相似问题