【问题标题】:Need to convert string to JSON in LogStash需要在 LogStash 中将字符串转换为 JSON
【发布时间】:2014-06-16 18:11:55
【问题描述】:

我让 logstash 摄取了一个 Json 格式的日志,其中有一个包含 JSON 的特定字段。由于值被引用,Logstash 将带有 JSON 的特定字段视为字符串。我希望 Logstash 将该字段的内容也视为 JSON,但不知道如何去掉引号。

这是日志: {"Time":"2014-06-16","Hostname":"FOOname","Event":"Warning","CustomField":"{"Title":"这是作为字符串处理的数据", "用户":"FooUser"}"}

“CustomField”值周围的引号引起了问题。

谢谢

【问题讨论】:

    标签: json elasticsearch logstash


    【解决方案1】:

    您当前的配置是什么,您正在运行什么版本的 Logstash?

    我认为以下方法可行:

    filter {
      json {
        source => "CustomField"
        target => "CustomFieldParsed"
      }
    }
    

    http://logstash.net/docs/1.4.1/filters/json

    如果您的 JSON 在标题字段中,那么

        source => "CustomField.Title"
    

    【讨论】:

    • 我正在使用 Logstash 1.4.0。我的配置看起来像
    • 我正在使用 Log 1.4.0。我已经有了正确格式化日志主要部分的 json{source=>"message"}。如果我的 CustomField 看起来像 "CustomField":{"foo":"bar"},那么 json 将被正确创建。但是由于 {"foo":"bar"} 周围有一个双引号,因此它将 {"foo":"bar"} 视为 "CustomField" 的字符串值。这是一个由 nxlog 格式化并发布的 windows 事件。 nxlog 将事件日志中的自定义事件“消息”视为字符串。我希望在 logstash 摄取中修复它。
    • 再次使用 json 过滤器,然后可能从其中一个字段中提取 json。
    • 好的,我试试。早些时候我尝试了第二个 json 过滤器,得到了 _jsonparsefailure 并认为也许你不能有两个 json 过滤器。但我会再试一次。谢谢
    • 过滤器是按顺序执行的,所以它会在第一个过滤器被操作后作用于日志的结构,而不是原来的结构。
    猜你喜欢
    • 2015-09-04
    • 2020-11-27
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 2014-04-24
    • 1970-01-01
    相关资源
    最近更新 更多