【问题标题】:Sanitize log via Logstash filter通过 Logstash 过滤器清理日志
【发布时间】:2019-07-17 18:15:15
【问题描述】:

我是 logstash 新手,想看看是否有人可以帮助解析我的应用程序日志,看起来像这样(用随机字符更改了 api 密钥):

2019-07-17 16:57:20,522:钎焊信息:正文:{“属性”: [{“external_id”:“vT9fswqW”,“电子邮件”:“aaa@yahoo.com”,“站点”: “站点”}],“api_key”:“fg09831e-9re0-tc19-81c6-08934539f0vx2”,“事件”: [{“属性”:{“站点”:“站点”},“external_id”:“vT9fswqW”,“名称”: "注册", "时间": "2019-07-17'+0'16:57:20.522380"}]}

此日志会转到 logstash,在将日志存储到 ES 之前可以在其中应用过滤器。我想清理此日志以隐藏某些信息,例如电子邮件、external_id 和 api_key,因此 logstash 的最终输出将类似于:

2019-07-17 16:57:20,522:钎焊信息:正文:{“属性”: [{“external_id”:“****”,“电子邮件”:“****”,“网站”: “站点”}],“api_key”:“fg09831e-****”,“事件”: [{“属性”:{“站点”:“站点”},“external_id”:“****”,“名称”: "注册", "时间": "2019-07-17'+0'16:57:20.522380"}]}

{"attributes"... 开头的部分是一个有效的 JSON,所以我在想如果我可以将日志的那部分存储在一个单独的字段中,然后我可以应用 json logstash 过滤器,然后改变这些字段。我正在尝试分离日志以仅获取 json,但是我使用 grok 的所有尝试都失败了。有什么想法可以让它发挥作用吗?

【问题讨论】:

    标签: elasticsearch logstash logstash-grok


    【解决方案1】:

    你可以使用

        grok { match => { "message" => "Body: %{GREEDYDATA:[@metadata][json]}" } }
        json {
            source => "[@metadata][json]"
            remove_field => [ "[api_key]", "[attributes][0][email]", "[attributes][0][external_id]", "[events][0][external_id]" ]
        }
    

    要解析消息的第一部分,我会使用 dissect 而不是 grok。

    【讨论】:

    • 谢谢@Badger,这确实帮助解决了我的问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    相关资源
    最近更新 更多