我正在尝试将日志转发到弹性搜索并陷入动态设置索引(按输入数据中的字段)。
我的输入数据格式是 JSON 并且总是有键“es_idx”。我希望通过该键转发到elasticsearch并添加时间戳,我使用logstash_format
true来实现时间戳功能并logstash_prefix
设置“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”,它可以正常工作。
有谁知道可能是什么问题?