使用Fluentd讀寫OSS

2021-09-19 19:19:28 字數 2975 閱讀 1203

fluentd是乙個實時開源的資料收集器,基於cruby實現,td-agent是其商業化版本,由treasure data公司維護。本文將介紹如何使fluentd能夠讀寫oss。

[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:

下面是乙個例子,將讀到的資料,每分鐘乙個檔案寫到oss中。其中endpoint/bucket/access_key_id/access_key_secret是必填項,其他的都是可選項。

workers 6

@type oss

endpoint bucket access_key_id access_key_secret upload_crc_enable false

path "fluent-oss/logs"

auto_create_bucket true

key_format "%/%/events_%_%.%"

#key_format %/events/ts=%/events_%_%.%

time_slice_format %y%m%d-%h

store_as gzip

@type file

path /var/log/fluent/oss/$

timekey 60 # 1 min partition

timekey_wait 1s

# timekey_use_utc true

flush_thread_count 1

@type json

我們可以從oss控制台看到效果:

下面是乙個配置示例,其中endpoint/bucket/access_key_id/access_key_secret和mns的endpoint/queue是必填項,其他的都是可選項。

@type oss

endpoint bucket access_key_id access_key_secret store_local false

store_as gzip

flush_batch_lines 800

flush_pause_milliseconds 1

download_crc_enable false

endpoint queue poll_interval_seconds 1

@type json

我們可以從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

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 ?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

2019-04-23 15:38:16 +0800 [info]: #1 read object fluent-oss/logs/20190423-09/events_50_69939581261780.gz, size 6750045 from oss

使用Fluentd讀寫OSS

fluentd是乙個實時開源的資料收集器,基於cruby實現,td agent是其商業化版本,由treasure data公司維護。本文將介紹如何使fluentd能夠讀寫oss。root apache rpm ivh td agent 3.3.0 1.el7.x86 64.rpm然後,需要安裝flu...

fluentd學習 安裝使用

fluentd是非常強大的logging工具,幾句話簡單認識下。1.提供日誌的蒐集,過濾,路由功能 2.使用ruby c開發 3.支援多種資料來源的輸入,比如apache的access log,syslogd,業務log 4.支援多種輸出,file,amazon s3,mongodb,mysql,h...

使用Fluentd和MongoDB構建日誌收集系統

fluentd是乙個日誌收集系統,它的特點在於其各部分均是可定製化的,你可以通過簡單的配置,將日誌收集到不同的地方。目前開源社群已經貢獻了下面一些儲存外掛程式 mongodb,redis,couchdb,amazon s3,amazon sqs,scribe,0mq,amqp,delayed,gro...