我已经设置了日志记录,如 https://quarkus.io/guides/centralized-log-management 中所述。使用 7.7 版本的 ELK Stack。
我的logstash管道看起来像建议的示例:
input {
gelf {
port => 12201
}
}
output {
stdout {}
elasticsearch {
hosts => ["http://elasticsearch:9200"]
}
}
大多数消息都使用logstash.* 作为索引模式显示在我的Kibana 中。但有些消息被丢弃。
2020-05-28 15:30:36,565 INFO [io.quarkus](Quarkus 主线程)Quarkus 1.4.2.Final 在 38.335 秒内开始。收听:http://0.0.0.0:8085
问题似乎是,字段 MessageParam0、MessageParam1、MessageParam2 等映射到首先出现在日志中的类型,但实际上包含多个数据类型。 Elasticsearch 日志显示错误,例如 ["org.elasticsearch.index.mapper.MapperParsingException: 无法解析字段 [MessageParam1]。
Quarkuslogging-gelf 扩展中有什么方法可以正确映射值吗?
最佳答案
ELK 可以通过查看第一个索引文档来自动创建 Elasticsearch 索引映射。这是一个非常方便的功能,但它有一些缺点。
例如,如果您有一个可以包含数字或字符串的字段,如果第一个文档包含该字段的数字,则映射将使用数字字段创建,因此您将无法索引包含该字段内的字符串...
唯一的解决方法是预先创建映射(您只能定义导致问题的字段,其他字段将自动创建)。
这是一个 ELK 问题,Quarkus 方面我们无能为力。
关于elasticsearch - 使用 quarkuslogging-gelf 扩展和 ELK 堆栈时出现索引错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62066353/