【问题标题】:Logstash JSON Parsing from RabbitMQ从 RabbitMQ 解析 Logstash JSON
【发布时间】:2015-06-18 08:41:30
【问题描述】:

我从 RabbitMQ 收到以下消息,我认为从 RabbitMQ 收到的 JSON 有 BOM

{"ID":"811b7858-a926-479f-939a-2b0ab17de855","Name":"Johnson","Age": "30", "Work":"Engineer","Timestamp":"4/13/2015 10:53:29 AM"}

当我将其保存到 Elastic 搜索中时,如下所示:

{
"_index": "logstash-2015.04.13",
"_type": "logs",
"_id": "AUyxO4R8g98unoWRM4eU",
"_version": 1,
"_score": 1,
"_source": {
    "message": "{"ID":"811b7858-a926-479f-939a-2b0ab17de855",","Name":"Johnson","Age": "30", "Work":"Engineer","Timestamp":"4/13/2015 10:53:29 AM"}",
    "@version": "1",
    "@timestamp": "2015-04-13T05:23:29.935Z",
    "type": "Employees"
    }
}

但我希望它们被存储为

{
"_index": "logstash-2015.04.13",
"_type": "logs",
"_id": "AUyxO4R8g98unoWRM4eU",
"_version": 1,
"_score": 1,
"_source": {
    "ID":"811b7858-a926-479f-939a-2b0ab17de855",
    "Name":"Johnson",
    "Age": "30",
    "Work":"Engineer",
    "Timestamp":"4/13/2015 10:53:29 AM"
    "@version": "1",
    "@timestamp": "2015-04-13T05:23:29.935Z",
    "type": "Employees" 
    }
}

我尝试了 json 过滤器。但它不起作用。

【问题讨论】:

  • 消息字段的开头真的有问号吗?
  • 不,我认为它是在我复制粘贴时添加的。更新了帖子
  • json 过滤器应该可以正常工作。你的过滤器是什么样子的?发生什么了?日志中有什么有趣的东西(您可能需要使用--verbose--debug 调高日志级别)? json codec 也应该可以正常工作。
  • 我认为 JSON 有 BOM,当我将它复制粘贴到 notepad++ 中时,它显示问号,有没有办法在 logstash 中删除 BOM?
  • 是的,您应该可以使用mutate filter。那么又是什么问题呢? BOM 实际上是您从 RabbitMQ 获得的消息的一部分吗?请相应地调整问题。

标签: json parsing elasticsearch logstash


【解决方案1】:

您可以尝试使用 json filter for logstash,它将消息字符串转换为 json 格式

filter {
  json {
    source => "message"
    remove_field => ["message"]
  }
}

【讨论】:

    猜你喜欢
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多