【发布时间】:2020-06-05 23:50:18
【问题描述】:
我在 C# 中使用 Serilog 创建一个日志文件,该文件由 Filebeat 摄取并通过 Logstash 发送到 Elasticsearch。 Elasticsearch 索引符合 ECS 1.5。
日志文件有时包含字段“host.ip”的错误值,它可能包含诸如“localhost:5000”之类的值。这会导致日志帖子被拒绝,因为这样的字符串无法转换为 ip 号。这都是意料之中的事,更正日志文件的问题不在本题讨论范围内。
我决定在索引级别添加“ignore_malformed: true”设置。之后,日志帖子不再被拒绝 - 我可以在 Elasticsearch 中找到它们。因此,该设置被证明是有效的。但是字段“host.ip”现在实际上包含格式错误的值“localhost:5000”。我看不出这怎么可能,这不是我所期望或想要的。
从“ignore_malformed”的文档中可以看出,与字段类型不匹配的值似乎应该被丢弃 - 而不是写入字段。我也发现没有添加“_ignored”字段。
就好像将 ignore_malformed 设置为 true 实际上允许格式错误的数据进入索引,而不是丢弃它。如果值格式错误,我期望/希望该字段为空。这是一个错误,还是我错过了什么?
【问题讨论】:
标签: elasticsearch serilog filebeat