我在使用 Logstash 时遇到问题,它无法处理 NaN 值。
[ERROR][logstash.codecs.json ][main][] JSON parse error, original data now in message field {:message=>"Non-standard token 'NaN': enable JsonParser.Feature.ALLOW_NON_NUMERIC_NUMBERS to allow\n at ...}
我有多个字段从数据源传入 NaN。它们通常是
float
、int
,但也可以是 NaN。我浏览了elastic论坛本身的讨论,我找不到任何答案。
尤其是我遇到的问题是几年前有人问过但没有答案: https://discuss.elastic.co/t/json-codec-dealing-with-nan-inf/138611
我怎样才能允许logstash工作ALLOW_NON_NUMERIC_NUMBERS,就像错误中所说的那样?
我的logstash的kafka_properties如下:我在.yml文件中没有任何额外的配置更改。我正在使用默认的一切。
input {
kafka {
bootstrap_servers => "MY_SERVER"
topics => [
MY_SOURCE_1,
MY_SOURCE_2
]
codec => json
decorate_events=> true
}
}
filter {
mutate{
add_field => { "[topic_name]" => "%{[@metadata][kafka][topic]}"}
}
}
output {
elasticsearch {
hosts => ["MY_SERVER:9200"]
data_stream=>"true"
}
}
提前致谢。
看起来RAW数据结构有问题。为了诊断问题,我建议您更新logstashconf并检查传入的数据格式。这是一个为您提供的 Logstash.conf 示例。
input {
kafka {
bootstrap_servers => "MY_SERVER"
topics => [
MY_SOURCE_1,
MY_SOURCE_2
]
# codec => json
decorate_events=> true
}
}
filter {
mutate{
add_field => { "[topic_name]" => "%{[@metadata][kafka][topic]}"}
}
}
output {
stdout {}
}
我禁用了 Logstash 输入部分中的 JSON 编码。保存此 yaml 并在终端上运行logstash。
./bin/logstash -f /path/to/your/config/test.yml
检查终端上的输出,如果不是正确的 JSON,则需要处理 RAW 数据。