Logstash AWS Kinesis JSON输入和输出到AWS S3

时间:2017-08-07 11:11:22

标签: json logging amazon-s3 logstash elastic-stack

我正在使用AWS Kinesis作为源输入(在每个触发事件中都有JSON,写入Kinesis Stream)使用Logstash https://github.com/logstash-plugins/logstash-input-kinesis

我正在使用ES插件进行输出,数据完全进入Elasticsearch,我可以轻松查询数据。

但是,如果我为Logstash选择AWS S3输出插件,数据将被发送到我选择的S3存储桶,但每个事件的JSON对象没有正确隔离,我无法对S3数据运行查询,因为JSON既不嵌套也不由适当的Delimeter分隔。当S3插件的输入是JSON时,这不会发生,对于简单的服务器日志,S3使用“\ n”分隔符将每个日志事件分成单独的行。

有人可以帮助我吗?

Logstash配置: 的 INPUT

input {
    kinesis {

       dynamodb app name
       application_name => "logstash"
       kinesis_stream_name => "data_stream"
       type => "kinesis"
       region => "us-west-2"
       metrics => "cloudwatch"
     }
    }

过滤器 #NOT在这里显示,

输出

s3{
           access_key_id => "XXXX"
           secret_access_key => "XXX"
           region => "us-west-2"
           bucket => "rtest"
           time_file => 1
           prefix => "Logs/"
           canned_acl => "private"
           codec => json

    }

我可以以某种方式使用分隔符选项,例如delimiter => “\ n” 根据分隔符隔离不同的JSON条目。

存储在存储桶中s3文件中的JSON行示例如下:

{{timestamp:dasdsa,xyz:abc},{hello:bye}}{{timestamp:dasdsd,xzy:bcn},{hello:hi}}

因此,我可以使用两个JSON之间没有分隔符。如果您需要更多详细信息,请告诉我们。

1 个答案:

答案 0 :(得分:0)

您尝试过

code => "json"

输出代码的最后一行?您需要报价。