【问题标题】:Logstash AWS Kinesis JSON Input and output to AWS S3Logstash AWS Kinesis JSON 输入和输出到 AWS S3
【发布时间】:2017-08-07 11:11:22
【问题描述】:

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

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

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

有人可以帮我吗?

Logstash 配置: 输入

input {
    kinesis {

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

过滤器 #不在此处显示,

输出

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

【问题讨论】:

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


    【解决方案1】:

    你试过了吗

    code => "json"
    

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

    【讨论】:

    • 不,那也没用。我们最终使用了snowplowanalytics.com 的开源版本,然后我们使用 AWS Lambda 函数将数据扔到 S3
    • 感谢您分享这个。
    猜你喜欢
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-25
    相关资源
    最近更新 更多