Я пытаюсь переслать журналы в elasti c -search и застрял с динамической установкой индекса (по полю во входных данных).
Мой формат входных данных - JSON и всегда есть ключ "es_idx". Я использую sh для перенаправления в elasticsearch по этому ключу и добавления его отметки времени, я использую logstash_format
true для достижения функции отметки времени и logstash_prefix
для установки имени индекса, отличного от «fluentd»
Это как выглядит моя конфигурация fluentd:
# fluentd/conf/fluent.conf
<source>
type stdin
# Input pattern. It depends on Parser plugin
format json
# Optional. default is stdin.events
</source>
<match *.**>
@type copy
<store>
@type stdout
</store>
<store>
@type elasticsearch
host <es-host>
port<es-port>
logstash_format true
logstash_prefix ${$record["es_idx"]}
type_name fluentd
flush_interval 5s
</store>
</match>
При использовании следующего ввода {"tenant_id": "test", "es_idx": "blabla"} я получаю следующую ошибку:
2020-05-27 10:38:06 +0300 [warn]: #0 dump an error event: error_class=Fluent::Plugin::ElasticsearchErrorHandler::ElasticsearchError error="400 - Rejected by Elasticsearch" location=nil tag="stdin.events" time=2020-05-27 10:37:59.498450000 +0300 record={"tenant_id"=>"test", "es_idx"=>"blabla"}
Если я устанавливаю logstash_pattern на другую строку вроде этой: «logstash_pattern blabla», она работает нормально.
Кто-нибудь знает, в чем может быть проблема?