Fluentd初探 简介与安装
Fluentd是一個開源的數據收集器,專為處理數據流設計,有點像?syslogd?,但是使用JSON作為數據格式。它采用了插件式的架構,具有高可擴展性高可用性,同時還實現了高可靠的信息轉發。
據分(Y)析(Y),Fluentd是由Fluent+d得來,d生動形象地標明了它是以一個守護進程的方式運行。官網上將其描述為data collector,在使用上,我們可以把各種不同來源的信息,首先發送給Fluentd,接著Fluentd根據配置通過不同的插件把信息轉發到不同的地方,比如文件、SaaS Platform、數據庫,甚至可以轉發到另一個Fluentd。
總結一下,數據流殊途,同歸與Fluentd,Fluentd做一些諸如過濾、緩存、路由等工作,將其轉發到不同的最終接收方。
用Fluentd處理數據還能保證一定的實時性,其提供種類豐富的客戶端lib,很適合處理單位時間emit出log數量巨大的場景。從v10后,Fluentd?不支持?Windows。
其采用Ruby編寫,比較注重性能的地方采用C編寫,Ruby的創始人松本老師這樣評價Fluentd:
Fluentd proves you can achieve programmer happiness and performance at the same time. A great example of Ruby beyond the Web.
Heroku的聯合創始人Adam Wiggins說的挺有道理:
Logs are streams, not files. I love that Fluentd puts this concept front-and-center, with a developer-friendly approach for distributed systems logging.
更多信息請看?這里?。
安裝
安裝前的準備工作
安裝?ntpd
ntpd?,以d結尾,是一個守護進程,全稱是Network Time Protocol (NTP) daemon,它通過與一個Internet標準時鐘服務器同步來維護系統時鐘,同時也可以將本機做為一個時鐘服務器對外提供時鐘同步服務。更多信息請man一下ntpd。
安裝ntpd是為了防止Fluentd在收集log的時候出現非法的時間戳。
在Ubuntu下,apt-get即可安裝:
$ sudo apt-get install ntp之后查看ntpd是否啟動成功(pgrep返回進程號):
$ pgrep ntpd增加系統文件描述符的最大數量
通過ulimit查看當前的文件描述符的最大數量:
$ ulimit -n如果是1024,那是遠遠不夠的,將下面4行添加到?/etc/security/limits.conf?中,重啟機器。
root soft nofile 65536 root hard nofile 65536 * soft nofile 65536 * hard nofile 65536之后用ulimit查看,應該是65536了。
(Optional)優化機器內核TCP/IP參數
如果Fluentd處于一個高負載的運行環境,比如一個機器中運行了多個Fluentd實例,那么最好將下面的參數添加到?/etc/sysctl.conf?中:
net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.ip_local_port_range = 10240 65535然后執行?sysctl?-w?或者重啟機器使之生效。
這個跟TCP/IP的細節有關系,我沒有深究,貌似是為了防止短連接數過多,機器處于?TIME_WAIT?狀態的TCP連接數過多,開啟快速回收與重用。具體請參考?這里?。
安裝Fluentd
寫在前面
有?很多種方式?來安裝Fluentd,比如通過Ruby的Gem,以及Ubuntu的deb、OS X的Homebrew。
采用Ruby的Gem安裝比較簡單,安裝的是基本版的Fluentd,即不自帶?/etc/init.d?腳本,在運行時內存分配采用的是操作系統默認的方式;
而采用.rpm/.deb for Linux的方式安裝呢,安裝的是一個由?Treasure Data, Inc?維護的穩定版本Fluentd,又被稱為td-agent。為了保持一個良好的靈活性,Fluentd采用Ruby編寫,性能要求比較高的地方采用C編寫,考慮到一般的用戶可能安裝操作Ruby有困難,因此該公司維護并提供了一個穩定版本的Fluentd。該版本的Fluentd在內存分配上采用了著重避免內存碎片分配實現?jemalloc?。兩個版本的區別可以在這?查看?。
那么我們到底選用哪種方式呢,根據官方的文檔。td-agent強調new features的穩定性,如果希望自己控制Fluentd的features,自己手動去更新,采用gem的方式安裝。如果是第一次使用Fluentd或者在大規模的生產環境使用,推薦安裝td-agent,每2-3個月,td-agent就會發布一個新的版本。
在Ubuntu 12.04上安裝Fluentd
注意?這種方式截止到筆者發稿僅支持一下兩個Ubuntu的版本:
- Ubuntu 12.04 LTS / Precise
- Ubuntu 10.04 LTS / Lucid
可以在?這里?查看最新進展。
(Optional but Recommend)設置GPG Key
deb包使用?Treasure Data GPG key?簽名,首先將?GPG key?導入apt:
$ apt-key add /path/to/RPM-GPG-KEY-td-agent執行下面的腳本
echo "This script requires superuser access to install apt packages." echo "You will be prompted for your password by sudo."# clear any previous sudo permission sudo -k# run inside sudo sudo sh <<SCRIPT# add treasure data repository to apt echo "deb http://packages.treasure-data.com/precise/ precise contrib" > /etc/apt、sources.list.d/treasure-data.list# update your sources apt-get update# install the toolbelt apt-get install -y --force-yes td-agentSCRIPT即安裝完畢。
也可執行下面的的命令:
$ curl -L http://toolbelt.treasuredata.com/sh/install-ubuntu-precise.sh | sh其實腳本內容就是上面的,我粘過去的。
啟動Fluentd的守護進程
因為我們安裝的是td-agent,自帶?/etc/init.d/td-agent?腳本,通過該腳本啟動Fluentd服務。
$ /etc/init.d/td-agent restart * Restarting td-agent td-agent $ /etc/init.d/td-agent status * ruby is running同時還支持以下命令:
$ /etc/init.d/td-agent start $ /etc/init.d/td-agent stop $ /etc/init.d/td-agent restart $ /etc/init.d/td-agent status配置文件在:?/etc/td-agent/td-agent.conf
測試
默認在配置文件中td-agent在8888端口監聽,接收來自HTTP的log信息,并把其路由到stdout(?/var/log/td-agent/td-agent.log?),可以用curl命令測試:
$ curl -X POST -d ‘json={"json":"message"}‘ http://localhost:8888/debug.test之后可以打開?/var/log/td-agent/td-agent.log查看。
總結
以上是生活随笔為你收集整理的Fluentd初探 简介与安装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一致 Hash 算法
- 下一篇: FaaS介绍