Краткая справка:
- Мы используем filebeats для добавления полей к сообщениям - маркера конвейера и маркера обслуживания.
- В идеале они попадут в индекс под названием
foo-${[fields][service]}-${+YYYY.MM.dd}
Однако мы обеспокоены тем, что «некоторые» серверы могут быть неправильно настроены и не иметь этих маркеров (у нас есть автоматизация для защитынас, но мы все о подходе пояса и скобок).
Документация Logstash в лучшем случае расплывчата, а иногда и неправильна, например, использование кавычек или не вокруг определенных элементов.Но это то, что у нас есть:
- pipeline.id beats-server
config.string |
input { beats { port => 5504 }}
output {
if [fields][pipeline_marker] == "application" { # works
pipeline { send_to => "application" }
} else if [fields][pipeline_marker] == "REDACTED" { # works
pipeline { send_to => "REDACTED" }
} else if [service] in [fields] { # THIS DOESNT
pipeline { send_to => "default-service" }
} else { # Works
pipeline { send_to => "default"
}
}
, а затем конфиги конвейера, и все это хорошо.
Так что конкретно утверждение if [service] in [fields]
.Я попробовал несколько вариантов if "service" in [fields]
- в документации Logstash говорится, что «in» - вещь, и я нашел один расплывчатый пример.В основном все падает до моего стандартного индекса catch-everything.