閱讀403 返回首頁    go 阿裏雲 go 技術社區[雲棲]


通過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的下載地址,是從文檔裏拿到的最新的安裝包。以後版本可能會更新,用戶也可以直接從文檔上拿最新的安裝包。

  1. 安裝 目前安裝包裏隻包含了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

最終結果是
b4

配置

DataHub配置

在DataHub的控製台裏創建一個Project,然後創建一個Topic(Topic對應到數據庫是一個表的概念)
b1
因為隻是測試,我這裏就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 上,我們可以看到日誌為:
b2
來到datahub上可以看到新寫進去的日誌:
b3
至此大功告成,/tmp/test.log上的新增數據會被實時推送到DataHub裏了。

最後更新:2017-06-06 07:31:21

  上一篇:go  idea 兩種啟動maven項目方式
  下一篇:go  【資料合集】首屆互聯網新兵進階在線峰會:講義PDF+活動視頻!(持續更新)