Sat*_*mar 8 elasticsearch kubernetes
我正在尝试在 K8S 集群(本地)上设置 EFK(ElasticSearch 8、FluentD 和 Kibana)堆栈
我按照此链接安装了elasticsearch并使用helm图表安装了它,然后按照此链接安装了fluidd
fluidd 和 elasticsearch pod 的输出
[root@ctrl01 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
elasticsearch-master-0 1/1 Running 0 136m
[root@ctrl01 ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
fluentd-cnb7p 1/1 Running 0 107m
fluentd-dbxjk 1/1 Running 0 107m
Run Code Online (Sandbox Code Playgroud)
然而,elasticsearch日志中堆积着以下警告消息
2021-10-18 12:13:12 +0000 [warn]: temporarily failed to flush the buffer. next_retry=2021-10-18 12:13:42 +0000 error_class="Elasticsearch::Transport::Transport::Errors::BadRequest" error="[400] {\"error\":{\"root_cause\":[{\"type\":\"illegal_argument_exception\",\"reason\":\"Action/metadata line [1] contains an unknown parameter [_type]\"}],\"type\":\"illegal_argument_exception\",\"reason\":\"Action/metadata line [1] contains an unknown parameter [_type]\"},\"status\":400}" plugin_id="out_es"
2021-10-18 12:13:12 +0000 [warn]: suppressed same stacktrace
Run Code Online (Sandbox Code Playgroud)
Conf文件(定制输出)
2021-10-18 12:09:10 +0000 [info]: using configuration file: <ROOT>
<match fluent.**>
@type null
</match>
<source>
@type tail
@id in_tail_container_logs
path /var/log/containers/*.log
pos_file /var/log/fluentd-containers.log.pos
tag kubernetes.*
read_from_head true
format json
time_format %Y-%m-%dT%H:%M:%S.%NZ
</source>
<source>
@type tail
@id in_tail_minion
path /var/log/salt/minion
pos_file /var/log/fluentd-salt.pos
tag salt
format /^(?<time>[^ ]* [^ ,]*)[^\[]*\[[^\]]*\]\[(?<severity>[^ \]]*) *\] (?<message>.*)$/
time_format %Y-%m-%d %H:%M:%S
</source>
Run Code Online (Sandbox Code Playgroud)
我不确定'type'它指的是哪个领域。我无法找到 ElasticSearch 8 的示例match和source指令进行比较
似乎从 ES 8 开始不type支持field ,但我不确定这一点。请让我知道错误的原因
Ama*_*ala 12
当我尝试将 elasticsearch 8.2.3 与 FluentBit 1.9.5 一起使用时,我遇到了类似的错误。我可以看到 Elastic 正在发送日志,但在 kibana 网页中看不到任何数据,因为它无法创建索引,并在 fluid-bit pod 日志中看到上述错误。我关注了这个 github 问题,并在我的 Fluent-bit Helm Chart Values.yaml 文件中的 Outputs: 部分下添加了Suppress_Type_Name On,之后工作正常。
[OUTPUT]
Name es
Match *
Host {{ .Values.global.backend.es.host }}
Port {{ .Values.global.backend.es.port }}
Logstash_Format Off
Retry_Limit False
Type _doc
Time_Key @timestamp
Replace_Dots On
Suppress_Type_Name On
Index {{ .Values.global.backend.es.index }}
{{ .Values.extraEntries.output }}
Run Code Online (Sandbox Code Playgroud)
我在同一个问题上工作了几天,我找到了一个解决方案,但只是一个解决方法,而不是最佳解决方案。
如果您将 设为TypeNamenull ElasticsearchSinkOptions,则不会遇到此问题。
不幸的是,您无法从 appsettings.json 进行设置。至少我没找到办法。
在后台,Serilog.Sinks.ElasticSearch库使用此属性,就像_type在 HTTP 标头中一样。但正如leandrojmp在评论中指出的那样, “_type”标头在ElasticSearch 8.2版本中不再可用。
| 归档时间: |
|
| 查看次数: |
18826 次 |
| 最近记录: |