elasticsearch,logstash,Json,elasticsearch,Logstash" /> elasticsearch,logstash,Json,elasticsearch,Logstash" />

需要在LogStash中将字符串转换为JSON

需要在LogStash中将字符串转换为JSON,json,elasticsearch,logstash,Json,elasticsearch,Logstash,我让logstash接收一个Json格式的日志,该日志有一个包含Json的特定字段。Logstash使用JSON将该特定字段视为字符串,因为该值被引用。我希望Logstash也将该字段的内容视为JSON,但不知道如何去掉引号 以下是日志: {“时间”:“2014-06-16”,“主机名”:“FOOname”,“事件”:“警告”,“自定义字段”:“{”标题::“这是作为字符串处理的数据”,“用户”:“FooUser”}” “CustomField”值周围的引号导致了问题 谢谢您当前的配置是什么?您

我让logstash接收一个Json格式的日志,该日志有一个包含Json的特定字段。Logstash使用JSON将该特定字段视为字符串,因为该值被引用。我希望Logstash也将该字段的内容视为JSON,但不知道如何去掉引号

以下是日志: {“时间”:“2014-06-16”,“主机名”:“FOOname”,“事件”:“警告”,“自定义字段”:“{”标题::“这是作为字符串处理的数据”,“用户”:“FooUser”}”

“CustomField”值周围的引号导致了问题


谢谢

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

我认为以下方法可行:

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

如果您的JSON位于标题字段中,则

    source => "CustomField.Title"

我使用的是Logstash1.4.0。我的配置看起来像
我使用的是日志1.4.0。我已经有了json{source=>“message”},它正确地格式化了日志的主要部分。如果我的CustomField看起来像“CustomField”:{“foo”:“bar”},那么将正确创建json。但由于{“foo”:“bar”}周围有一个双引号,因此它将{“foo”:“bar”}视为“CustomField”的字符串值。这是一个windows事件,已由nxlog使用json格式化并提供。nxlog将来自事件日志的自定义事件“消息”视为一个字符串。我希望在logstash摄取中修复它。第二次使用json过滤器,然后可能从其中一个字段提取json。好的,我会试试。早些时候,我尝试了第二个json过滤器,但遇到了jsonparsefailure,并认为可能不能有两个json过滤器。但我会再试一次。ThanksFilter是按顺序执行的,因此它将在第一个筛选器执行后作用于日志的结构,而不是原始结构。