开发者社区> 冷月_wjh> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用Fluentd读写OSS

简介: 前言 Fluentd是一个实时开源的数据收集器,基于CRuby实现,td-agent是其商业化版本,由Treasure Data公司维护。本文将介绍如何使Fluentd能够读写OSS。 安装 首先下载并安装td-agent,笔者使用的是td-agent-3.
+关注继续查看

前言

Fluentd是一个实时开源的数据收集器,基于CRuby实现,td-agent是其商业化版本,由Treasure Data公司维护。本文将介绍如何使Fluentd能够读写OSS。

安装

首先下载并安装td-agent,笔者使用的是td-agent-3.3.0-1.el7.x86_64.rpm,使用rpm命令安装:

[root@apache ~]# rpm -ivh td-agent-3.3.0-1.el7.x86_64.rpm

然后,需要安装Fluentd的OSS plugin:

[root@apache ~]# /usr/sbin/td-agent-gem install fluent-plugin-aliyun-oss

这里请注意,因为我们使用的是td-agent,安装Fluentd plugin时需要使用td-agent的td-agent-gem(/usr/sbin/td-agent-gem)。原因是td-agent有自己的Ruby,你需要将plugin安装到它的Ruby里面,而不是其他的Ruby,否则将会找不到已经安装好的plugin。

具体可以参见Fluentd的官方文档

安装完成后,我们可以查看安装的OSS plugin:

[root@apache ~]# /usr/sbin/td-agent-gem list fluent-plugin-aliyun-oss

*** LOCAL GEMS ***

fluent-plugin-aliyun-oss (0.0.1)

fluent-plugin-aliyun-oss这个plugin包含两部分:

Fluent OSS output plugin
将数据缓存在本地,达到设定的条件后,将缓存的数据(压缩后,如果设置的话)上传到OSS。

Fluent OSS input plugin
首先,OSS的bucket需要配置事件通知,这篇文章介绍了如何设置,得到MNS的Queue与Endpoint。
设置好之后,这个plugin会定时地从MNS拉取消息,从消息中获取上传的Objects,最后从OSS读取这些Objects,再发往下游。

下面将分别介绍如何配置,具体的配置参数说明参见github: https://github.com/aliyun/fluent-plugin-oss

配置(向OSS写数据)

下面是一个例子,将读到的数据,每分钟一个文件写到OSS中。其中endpoint/bucket/access_key_id/access_key_secret是必填项,其他的都是可选项。

<system>
  workers 6
</system>

<match input.*>
  @type oss
  endpoint <OSS endpoint to connect to>
  bucket <Your Bucket>
  access_key_id <Your Access Key>
  access_key_secret <Your Secret Key>
  upload_crc_enable false
  path "fluent-oss/logs"
  auto_create_bucket true
  key_format "%{path}/%{time_slice}/events_%{index}_%{thread_id}.%{file_extension}"
  #key_format %{path}/events/ts=%{time_slice}/events_%{index}_%{thread_id}.%{file_extension}
  time_slice_format %Y%m%d-%H
  store_as gzip
  <buffer tag,time>
    @type file
    path /var/log/fluent/oss/${ENV['SERVERENGINE_WORKER_ID']}
    timekey 60 # 1 min partition
    timekey_wait 1s
    # timekey_use_utc true
    flush_thread_count 1
  </buffer>
  <format>
    @type json
  </format>
</match>

我们可以从OSS控制台看到效果:
15_40_01__04_23_2019

配置(从OSS读数据)

下面是一个配置示例,其中endpoint/bucket/access_key_id/access_key_secret和MNS的endpoint/queue是必填项,其他的都是可选项。

<source>
  @type oss
  endpoint <OSS endpoint to connect to>
  bucket <Your Bucket>
  access_key_id <Your Access Key>
  access_key_secret <Your Secret Key>
  store_local false
  store_as gzip
  flush_batch_lines 800
  flush_pause_milliseconds 1

  download_crc_enable false
  <mns>
    endpoint <MNS endpoint to connect to, E.g.,{account-id}.mns.cn-zhangjiakou-internal.aliyuncs.com>
    queue <MNS queue>
    poll_interval_seconds 1
  </mns>
  <parse>
    @type json
  </parse>
</source>

我们可以从log中看一下运行状态

2019-04-23 15:38:14 +0800 [info]: #5 start to poll message from MNS queue fluentd-oss
2019-04-23 15:38:14 +0800 [info]: #5 http://1305310278558820.mns.cn-zhangjiakou-internal.aliyuncs.com/queues/fluentd-oss/messages
2019-04-23 15:38:14 +0800 [info]: #5 read object fluent-oss/logs/20190423-12/events_10_70226640160100.gz, size 4389548 from OSS
2019-04-23 15:38:15 +0800 [info]: #1 http://1305310278558820.mns.cn-zhangjiakou-internal.aliyuncs.com/queues/fluentd-oss/messages?ReceiptHandle=0BC1EA4E51483D4EAC69736941044AAE-MjY5ODkgMTU1NjAwNTAwODMwNSAzNjAwMDA
2019-04-23 15:38:16 +0800 [info]: #1 start to poll message from MNS queue fluentd-oss
2019-04-23 15:38:16 +0800 [info]: #1 http://1305310278558820.mns.cn-zhangjiakou-internal.aliyuncs.com/queues/fluentd-oss/messages
2019-04-23 15:38:16 +0800 [info]: #1 read object fluent-oss/logs/20190423-09/events_50_69939581261780.gz, size 6750045 from OSS

参考资料

https://github.com/aliyun/fluent-plugin-oss
https://rubygems.org/gems/fluent-plugin-aliyun-oss
https://www.fluentd.org/
https://docs.fluentd.org/v1.0/articles/quickstart

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
对象存储 OSS 常见问题
本文列举了阿里云对象存储 OSS 的常见问题,帮助您快速了解 OSS。
8971 0
【答疑】对象存储OSS常见问题解答(咨询类3)
OSS支不支持HTTPS?解答:支持 使用HTTPS的最佳实践: https://yq.aliyun.com/articles/686003?spm=a2c4e.11163080.searchblog.97.34e42ec1yNirpJ 如果使用OSS又用了CDN加速, 第一次CDN没命中的时候, 是怎样收费的?解答:如果访问CDN没有命中的话,CDN会去OSS回源,这时是不消耗下行流量包的,只消耗回源流量包。
1324 0
【答疑】对象存储OSS常见问题解答(咨询类1)
1. OSS最大支持多大的文件? 解答:非multipart方式上传,最大支持5GB的文件; multipart方式上传,最大支持48.8TB。 通过控制台上传、简单上传、表单上传、追加上传的文件大小不能超过5GB, 要上传大小超过5GB的文件必须使用断点续传方式。
3507 0
【答疑】对象存储OSS常见问题解答(工具类1)
1. OSS控制台不支持上传文件夹,是否有其它方式可以支持? 解答:OSS提供了ossutil工具,支持文件夹上传。 使用cp命令进行上传/下载/拷贝文件时: 使用-r选项来拷贝文件夹 详见官网说明:https://help.aliyun.com/document_detail/50561.html Github:http://github.com/aliyun/ossutil 2. OSS的URL,怎么将失效时间设置得久一点? 解答:请使用ossutil工具。
3615 0
对象存储 OSS 上传、下载发生 "便秘"
对象存储 OSS 上传、下载发生 "便秘" 再复杂的网络架构和环境中经常遇到各种各样的网络超时问题,OSS 作为很多企业用户的源站经常会遇到下 GET 、PUT 慢的情况,问题就像便秘一样纠缠,作为存储,很多客户端把矛头指向了 OSS ,鉴于情况众多,我们今天具体分析一下都有哪些种便秘堵塞了你的生活。 确认基础信息 ping 工具,目的测试到对端的 IP 链路是否有丢包,RTT(Roun
2048 0
【OSS】对象存储-图片处理
帮您快速掌握对象存储图片处理功能。
4949 0
【实操】对象存储OSS上传和下载
帮您快速掌握对象存储OSS如何上传和下载文件。
2452 0
阿里云产品对象存储oss的使用心得
前言 之前打算写一篇有关个人博客SEO优化的体验和一些自身体会,但是发现自己还没完全理解SEO的一些核心知识和原理,所以就等到以后再来写,毕竟我的百度权值还是0(笑...)。接下来讲解一下博客中用的图床——阿里云对象存储(Object Storage Service,简称OSS),虽然目前大家用的比较多的是七牛云之类的,但是因为我个人原因我还是选择了阿里云,后面我会简单说明下原因。
4408 0
对象存储oss集成到thinkPHP,将图片上传到oss里面
阿里云的对象存储oss,类似七牛存储。 前几天有客户需要把图片放在阿里云的oss里面,百度过一些资料,好像都是oss比较旧的版本1.几的,现在上传一个比较新的oss版本v2.0.5,并集成到thinkPHP里面。
1458 0
+关注
12
文章
0
问答
来源圈子
更多
阿里云存储基于飞天盘古2.0分布式存储系统,产品包括对象存储OSS、块存储Block Storage、共享文件存储NAS、表格存储、日志存储与分析、归档存储及混合云存储等,充分满足用户数据存储和迁移上云需求,连续三年跻身全球云存储魔力象限四强。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载