通過Fluentd實時上傳數據到DataHub實踐
本文把我通過Fluentd,把數據上傳到DataHub的配置過程記錄下來,希望對大家在配置中能有幫助。
安裝
前序準備
本文使用一台CentOS 6.8的ECS來做測試的,機器上已經有yum。用戶測試的時候,需要有一台能連接上公網的Linux機器。
1. 安裝依賴包yum -y install gcc gcc-c++ openssl* readline* ncurses* zlib* libxml* libjpeg* libpng* libxslt* libtool*
2. 下載並安裝包
wget https://aliyun-datahub.oss-cn-hangzhou.aliyuncs.com/tools/fluentd-with-datahub-0.12.23.tar.gz&file=fluentd-with-datahub-0.12.23.tar.gz
tar -xzvf fluentd-with-datahub-0.12.23.tar.gz
cd fluentd-with-datahub
這個wget的下載地址,是從文檔裏拿到的最新的安裝包。以後版本可能會更新,用戶也可以直接從文檔上拿最新的安裝包。
- 安裝 目前安裝包裏隻包含了ruby和插件的安裝,沒有提供fluentd的安裝部分的腳本,這裏可以做修改
vi install.sh
##修改裏麵的gem install --local fluent-plugin-datahub-0.0.1.gem,改成
gem install --local string-scrub-0.0.5.gem
gem install --local thread_safe-0.3.5.gem
gem install --local tzinfo-1.2.2.gem
gem install --local tzinfo-data-1.2016.4.gem
gem install --local sigdump-0.2.4.gem
gem install --local http_parser.rb-0.6.0.gem
gem install --local cool.io-1.2.3.gem
gem install --local yajl-ruby-1.2.1.gem
gem install --local msgpack-0.5.12.gem
gem install --local fluentd-0.12.23.gem
gem install --local fluent-plugin-datahub-0.0.2.gem
##注意以上版本號都是一鍵安裝包裏已經有的,以後如果版本更新,這裏的版本號也從dependency_gem裏看看當時提供的版本是多少
##wq保存退出
sudo sh install.sh
配置
DataHub配置
在DataHub的控製台裏創建一個Project,然後創建一個Topic(Topic對應到數據庫是一個表的概念)
因為隻是測試,我這裏就3個字段。
測試
我們在ECS上,用touch /tmp/test.log
生成一個文件。我們通過fluentd監控這個文件的變化,並把變化的內容解析後傳到datahub裏。
配置Fluentd
這裏,我們的datahub配置文件fluentd.conf的內容為
<source>
@type tail
path /tmp/test.log
tag test
format /(?<request_time>\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)\s\[(?<level>.+)\]\s(?<content>.+)/
</source>
<match test>
@type datahub
access_id your_access_id
access_key your_access_key
endpoint https://dh-cn-hangzhou.aliyuncs.com
project_name your_project_name
topic_name fluentd
column_names ["request_time", "level", "content"]
</match>
這裏我把我的project_name和access id/key信息給隱藏了。endpoint 的地址看這裏,我純測試,就用了公網地址。
配置文件生成好了後,使用bin/fluentd -c fluentd.conf
啟動fluentd
測試
我們通過date "+%Y-%m-%d %H:%M:%S [Info] login success" >> /tmp/test.log
往/tmp/test.log裏寫日誌,然後在fluentd 上,我們可以看到日誌為:
來到datahub上可以看到新寫進去的日誌:
至此大功告成,/tmp/test.log上的新增數據會被實時推送到DataHub裏了。
最後更新:2017-06-06 07:31:21