首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >json数据上的Logstash突变过滤器

json数据上的Logstash突变过滤器
EN

Stack Overflow用户
提问于 2013-12-06 05:33:24
回答 1查看 5.6K关注 0票数 2

我打算使用logstash对记录到文本文件中的json数据执行转换。

Logstash配置代码片段:

代码语言:javascript
复制
filter {
  mutate {
    gsub => [
      # replace all '::~~' with '\r\n'
      "alert.explanation.cnc-services.cnc-service.channel", "\:\:~~", "\\r\\n"
#      "channel", "~~", "n"
    ]
  }
}

输入json:

代码语言:javascript
复制
{
  "alert": {
    "explanation": {
      "cnc-services": {
        `enter code here`"cnc-service": {
          "channel": "TEXT1 TEXT2::~~TEXT3::~~TEXT4::~~TEXT5::~~TEXT6::~~::~~"
        }
      }
    }
  }
}

所需输出:

代码语言:javascript
复制
{
  "alert": {
    "explanation": {
      "cnc-services": {
        "cnc-service": {
          "channel": "TEXT1 TEXT2\r\nTEXT3\r\nTEXT4\r\nTEXT5\r\nTEXT6\r\n\r\n"
        }
      }
    }
  }
}

输入的数据只是整个json文档的一部分,可能还有其他字段,但我只需要修改这个字段。此数据是由另一个应用程序生成的,不能修改。我在logstash上看到的文章中没有一篇谈到做这样的事情。

编辑:这里是logstash配置的输入部分

代码语言:javascript
复制
input {
    # Read from log file
    file {
        codec => "json"
        type => "fireeye"
        path => ["/var/log/app/events.json"]
    }
}
EN

回答 1

Stack Overflow用户

发布于 2014-09-24 17:35:29

一些试验和错误表明,gsub数组中的键应该具有以下格式。

代码语言:javascript
复制
first_level[second_level][third_level]...

所以在你的例子中:

代码语言:javascript
复制
filter {
  mutate {
    gsub => ["alert[explanation][cnc-services][cnc-service][channel]", "whatever"]
  }
}

我不知道它背后的逻辑是什么,但它是有效的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20411216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档