[英]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.