【问题标题】:is it possible to drop some key-value pairs from logs?是否可以从日志中删除一些键值对?
【发布时间】:2013-09-07 03:14:44
【问题描述】:

我有一个 nginx 日志文件,看起来类似于这个:

{ "@timestamp": "2013-09-03T14:21:51-04:00", "@fields": { "remote_addr": "xxxxxxxxxxxx", "remote_user": "-", "body_bytes_sent": "5", "request_time": "0.000", "status": "200", "request": "POST foo/bar/1 HTTP/1.1", "request_body": "{\x22id\x22: \x22460\x22, \x22source_id\x22: \x221\x22, \x22email_address\x22: \x22foo@bar.com\x22, \x22password\x22: \x2JQ6I\x22}", "request_method": "POST", "request_uri": "foo/bar/1", "http_referrer": "-", "http_user_agent": "Java/1.6.0_27" } }

我想知道是否可以使用logstash 过滤器来发送类似于此的日志:

{"@fields": { "request": "POST foo/bar/1 HTTP/1.1", "request_body": "{\x22id\x22: \x22460\x22, \x22source_id\x22: \x221\x22, \x22email_address\x22: \x22foo@bar.com\x22, \x22password\x22: \x2JQ6I\x22}"}

所以我只对整个日志中的几个领域感兴趣。

换句话说,我想从日志中提取必要的数据,然后将其发送到任何输出

【问题讨论】:

    标签: linux json filter nginx logstash


    【解决方案1】:

    是的,如果您首先通过 json 过滤器,您可以这样做。 然后你需要这样的东西:

    filter {
      json {
        source => "message"
        add_tag => "json"
      }
      mutate {
        tags => [ "json" ]
        remove_field => [ "[@fields][remote_addr]", "[@fields][remote_user]", "[@fields][body_bytes_sent]", "[@fields][request_time]" ]
      }
    }
    

    我的配置与此类似,适用于 1.2.0 版的 logstash。 希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 2017-01-02
      • 2015-12-12
      • 1970-01-01
      • 2018-08-26
      • 1970-01-01
      相关资源
      最近更新 更多