前言
logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的 “存储库” 中。
目前logstash已经支持了很多输入和输出插件,本文主要介绍如何使用logstash output oss插件将日志导入OSS。
安装
目前logstash output oss插件可以在RubyGems.org里面找到,并且logstash使用RubyGems.org作为它的插件仓库,因此我们可以直接进入到logstash的安装目录,执行如下命令进行安装
./bin/logstash-plugin install logstash-output-oss
将会产生如下输出
Validating logstash-output-oss
Installing logstash-output-oss
com.aliyun.oss:aliyun-sdk-oss:3.4.0:compile
Installation successful
我们现在可以查看刚才安装的logstash output oss插件
[user@host logstash-6.5.3]# bin/logstash-plugin list --verbose logstash-output-oss
logstash-output-oss (0.1.1)
配置及运行
logstash output oss插件的相关配置项的解释可以在这里找到,需要注意的是,endpoint/bucket/access_key_id/access_key_secret都是必填项,其他的都是可选项。
下面是一个示例,用来将写入/etc/logstash-6.5.3/sample.data中事件,导入到OSS里面。
input {
file {
path => "/etc/logstash-6.5.3/sample.data"
codec => json {
charset => "UTF-8"
}
}
}
output {
oss {
"endpoint" => "oss-cn-zhangjiakou-internal.aliyuncs.com"
"bucket" => "Your bucket"
"prefix" => "logstash/%{index}"
"recover" => true
"access_key_id" => "Your access key id"
"access_key_secret" => "Your access secret key"
"rotation_strategy" => "size_and_time"
"time_rotate" => 2
codec => json_lines {
charset => "UTF-8"
}
}
}
其中,我们生成的event脚本是:
while [[ 1 ]]
do
let index=$RANDOM%10
echo "{\"index\": $index, \"message\": \"Hello, world\"}" >> sample.data
done
我们配置的rotata的策略是size_and_time,基于时间和大小,其中配置了时间是每两分钟(time_rotate),大小采用的是默认值(在代码里面定义,30MB)。
在这里注意一下配置项中的prefix(logstash/%{index})字段,这个字段支持string interpolation,因此它会用event中相同的字段进行替换(如果没有则不替换)。
最终,我们可以通过控制台来查看生成的文件:
参考资料
https://rubygems.org/gems/logstash-output-oss
https://github.com/aliyun/logstash-output-oss
https://www.elastic.co/guide/en/logstash/current/index.html