I've lifted the below pattern from the logstash docs and modified for my use case.
Deffo have a field service.region in my log messages that is populated with values dev1 dev2 or sit. But i am not seeing the indexes with [service][region] pattern being created.
Looking at debug logs it seems that my if statement seems always to drop to else clause .
Using ELK 7.12.0
What am I doing wrong ?
filter {
# we don't want these to go to the application log indexes
if [service][region] in [ "dev1","dev2","sit" ] {
mutate {
add_field => { "[@metadata][target_index]" => "blade-logs-%{[service][region]}-%{+YYYY.MM.dd}" }
}
} else {
mutate {
add_field => { "[@metadata][target_index]" => "blade-logs-%{+YYYY.MM.dd}" } }
}
mutate {
rename => {
"message.index" => "message_index"
}
}
}
foo
output {
elasticsearch {
....
index => "%{[@metadata][target_index]}"
ilm_enabled => false
}
}
I get the logic around ILM managed indexes and naming as mentioned in previous answers.