Ubuntu12.04 LTS下Facebook scribe安裝過程
Ubuntu12.04 LTS下Facebook scribe安裝過程
說明:scribe是Facebook於2008年開源的分散式日誌收集系統。現在Facebook已經不再對scribe進行維護。Scribe網上資料較少,安裝過程也比較複雜,網上很少詳細的安裝報告,而且資料大都歷史較為久遠。如果真的想要安裝scribe,請務必要耐心,結合查詢到的資料,並進行分析。
起初,我打算使用Ubuntu 16.04 LTS來安裝scribe,但是怎麼都安裝不好在make或者make
install的地方總是出錯,並且難以追蹤錯誤原因,可能是沒有向後相容的緣故。除此之外還要考慮Ubuntu和thrift
1、在開始之前,首先要安裝相關的依賴包,這點非常重要。
安裝依賴包,命令:
sudo apt-get install libevent-dev libglib2.0-dev automake libboost-dev libssl-dev
ruby-dev python-dev collectd-dev bison flex autoconf ant git-core
注意:可能還會需要其他的安裝包,請根據後續的編譯提示進行安裝,或者網上查詢資料,進行補充。安裝包的需要數量根據系統的執行環境有所差異,因為可能有些安裝包你之前安裝過,那麼現在就不必再重新安裝了。
接下來在終端輸入以下命令(將thrift-0.9.0.tar.gz解壓至home目錄):
$tar -zxf thrift-0.9.0.tar.gz
$cd thrift-0.9.0
$./configure CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H"
$ make
$ sudo make install
$ cd contrib/fb303
$ ./bootstrap.sh
$ make
$ sudo make install
3、安裝scribe
(1)安裝依賴包:
命令:
sudo apt-get install gawk libboost-system-dev libboost-filesystem-dev libtool
(2)執行以下命令(仍然選擇home目錄存放scribe):
$ git clone git://github.com/facebook/scribe.git
$ cd scribe
$ ./bootstrap.sh
$./configure CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H -DBOOST_FILESYSTEM_VERSION=2"
$ make
(3)嘗試連線到scribed時make可能出錯,報錯如下:
file.cpp:(.text.startup+0x23): undefined reference to `boost::system::generic_category()'
file.cpp:(.text.startup+0x2f): undefined reference to `boost::system::generic_category()'
file.cpp:(.text.startup+0x3b): undefined reference to `boost::system::system_category()'
解決方法是將錯誤資訊前面的g++行進行修改,g++行的原始資訊如下:
g++ -Wall -O3 -L/usr/lib -lboost_system-mt -lboost_filesystem-mt -o scribed store.o store_queue.o conf.o file.o conn_pool.o scribe_server.o network_dynamic_config.o dynamic_bucket_updater.o env_default.o -L/usr/local/lib -L/usr/local/lib -L/usr/local/lib -lfb303 -lthrift -lthriftnb -levent -lpthread libscribe.a libdynamicbucketupdater.a
進行小小的修改 (將“-lboost_system-mt -lboost_filesystem-mt” 移動到行的末尾), 進入src目錄,手動執行g++命令:
$ cd src
$ g++ -Wall -O3 -L/usr/lib -o scribed store.o store_queue.o conf.o file.o conn_pool.o scribe_server.o network_dynamic_config.o dynamic_bucket_updater.o env_default.o -L/usr/local/lib -L/usr/local/lib -L/usr/local/lib -lfb303 -lthrift -lthriftnb -levent -lpthread libscribe.a libdynamicbucketupdater.a -lboost_system-mt -lboost_filesystem-mt
“-DBOOST_FILESYSTEM_VERSION=2”只有在你的libboost版本為1.46或者更高的時候才需要。
(4)執行命令:
$sudo make intall
在/home目錄/scribe/src目錄下生成可執行檔案:scribed.
4、scribe包在examples目錄下有一些例子可以直接根據README檔案執行,但是在執行之前還需要進行一項工作,執行以下命令:
cp -a /usr/lib/python2.7/site-packages/* /usr/lib/python2.7/dist-packages/
具體的路徑,根據自己的環境進行相應的替換。另一種方法就是在跑例子之前,配置環境變數PYTHONPATH,但是我設定之後發現執行./scribe_ctrl stop會出錯,提示:ImportError: No module named fb303_scripts。
5、關於參考文獻。
文末所列參考文獻基本可以比較完美的解決scribe安裝的問題。這也是我花了很多時間進行篩選最後選定的覺得較好的參考文獻,希望能對大家有所幫助。
參考文獻