繁体   English   中英

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

[英]Logstash AWS Kinesis JSON Input and output to AWS S3

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

我正在使用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"
     }
    }

过滤器 #此处未显示

OUTPUT

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之间没有分隔符。 如果您需要更多详细信息,请告诉我。

你有没有尝试过

code => "json"

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM