从对象存储服务同步数据到Elasticsearch

AWS的S3, 阿里云的OSS, 腾讯云的COS, 都是常见的对象存储服务。对象存储服务面向非结构化数据,支持通过HTTP/HTTPS协议访问,支持存入文本、图片、视频等多种类型的数据。

实际应用中,部分云计算产品会把业务日志存进对象存储中,如腾讯云容器服务的容器运行日志,腾讯云负载均衡服务的实例访问日志等。日志虽然存进相对廉价的对象存储bucket中了,但是查看或检索起来比较麻烦,还是把日志存进Elasticsearch,通过Kibana进行检索比较靠谱。

本文利用之前自行开发的logstash-input-cos插件,将存放在腾讯云对象存储服务COS中的日志,通过logstash同步到Elasticsearch中,以实现日志的快速查看与检索。

logstash-input-cos插件

logstash-input-cos插件的github地址:https://github.com/gaobinlong/logstash-input-cos.git

安装logstash-input-cos插件

拉取logstash-input-cos插件:

代码语言:txt
复制
git clone https://github.com/gaobinlong/logstash-input-cos.git

进入logstash的解压目录,执行:

代码语言:txt
复制
./bin/logstash-plugin install ~/logstash-input-cos/logstash-input-cos-0.0.1-java.gem

执行结果为:

代码语言:txt
复制
Validating /usr/local/githome/logstash-input-cos/logstash-input-cos-0.0.1-java.gem
Installing logstash-input-cos
Installation successful

编写配置文件

编写配置文件cos.logstash.conf

代码语言:txt
复制
input {
    cos {
        "endpoint" => "cos.ap-guangzhou.myqcloud.com" # COS访问域名
        "access_key_id" => "*****" # 腾讯云账号secret id
        "access_key_secret" => "****" # 腾讯云账号secret key
        "bucket" => "******" # 腾讯云COS bucket
        "region" => "ap-guangzhou" # 腾讯云COS bucket所在地域
        "appId" => "**********" # 腾讯云账号appId
        "interval" => 60 # 数据同步时间间隔,每60s拉取一次数据
    }
}

output {
elasticsearch {
hosts => ["http://172.16.0.39"] # ES endpoint地址
index => "access.log" # 索引
}
}

执行logstash

代码语言:txt
复制
./bin/logstash -f cos.logstash.conf

通过kibana查看日志

通过kibana查看从COS中同步到ES中的日志: