【发布时间】:2017-10-20 11:49:33
【问题描述】:
我正在尝试将 json 字符串发送到 logstash,然后是 kafka,但由于我的 json 文件中的转义双引号,我一直遇到 json 解析失败。
我尝试了很多不同的替换组合,但都不起作用。我不确定是否
- 错误已经出现在配置的输入端,所以它没有继续过滤部分
- 我只是没有正确替换字符串
我得到一个 json 为:
{"message": "This is a \"string with quote"}
我的logstash conf是:
input {
tcp {
codec => json { charset => "UTF-8" }
port => 10000
}
}
filter {
json {
source => "message"
}
mutate {
remove_field => ["@version", "@timestamp", "host", "port"]
gsub => [
# replace all backslashes + double quote with space
'body', '\\"', ' '
]
}
}
output {
kafka {
bootstrap_servers => "localhost:9092"
codec => json {charset => "UTF-8"}
topic_id => 'logstash_logs'
}
file {
path => "/usr/share/logstash/test.log"
codec => rubydebug
}
}
我的 rubydebug 日志是:
{
"message" => "{\"message\": \"This is a \"string with quote\"}",
"tags" => [
[0] "_jsonparsefailure"
]
}
【问题讨论】:
-
完整的源消息是什么?
-
我收到的实际消息是来自高级新闻来源的新闻文章。摘录如下: {"an":"AFNWS00020150624eb6o0006h","body":"展会旨在展示可再生能源的潜力,... \n\n\"我们正在为长期存在的农村地区供电远离国家电网”,她说。“我们一直在优先使用太阳能电池板,为学校和医院等社会基础设施提供电力。}
标签: json apache-kafka logstash