坚信科学,分享技术

2018全新版本,未来在blog.54chen.com更新博客!

>>>尝试更加利于阅读的2014版科学院,以后都在新版上写。

分布式日志系统scribe使用手记

java,scribe
scribe 是facebook 开源的分布式日志系统 。其使用了thrift传输log,由于使用thrift,所以不论是什么语言的项目都可以实现日志收集,可达到远程或者是本地同步远程的分布式日志收集效果,在其示例配置中,并发量可达到max_msg_per_second=2000000,对普通的应用来说,每秒上百万的访问量可能性很小,因此基本上即使最简单的配置,远程收集所有项目的log也是可靠的,如果压力大的话,可以采取主从的配置,将日志打到本地后由scribe的主从配置来自动同步。下面讲述如何安装和使用scribe。

下载boost、thrift、scribe

boost_1_45_0.tar.gz
thrift-0.5.0.tar.gz
facebook-scribe-2ee14d3.zip

通过yum安装需要的依赖

yum install libevent libevent-devel python-devel
yum install gcc-c++
yum install automake
yum install byacc flex

安装boost

tar -zxvf boost_1_45_0.tar.gz
cd boost_1_45_0
./bootstrap.sh
./bjam install --prefix=/opt/soft/bootstrap

安装thrift-0.5.0

tar zxvf thrift-0.5.0.tar.gz
./configure --with-php-config=/opt/soft/php/bin/php-config --with-boost=/opt/soft/boost/ --with-java --prefix=/opt/soft/thrift
make
make install

安装fb303

cd contrib/fb303
./bootstrap.sh --prefix=/opt/soft/thrift/fb303 --with-boost=/opt/soft/boost/ --with-thriftpath=/opt/soft/thrift/
make
make install

安装scribe

unzip facebook-scribe-2ee14d3.zip
cd facebook-scribe-2ee14d3

export BOOST_ROOT=/opt/soft/boost/
export LD_LIBRARY_PATH=/opt/soft/thrift/lib:/usr/lib:/usr/local/lib:/opt/soft/boost/lib/
./bootstrap.sh --prefix=/opt/soft/scribe --with-boost=/opt/soft/boost/ --with-thriftpath=/opt/soft/thrift/
make
make install

启动scribe服务

cd facebook-scribe-2ee14d3
cp example/exmaple1.conf /opt/soft/scribe/bin
cd /opt/soft/scribe/bin/
export BOOST_ROOT=/opt/soft/boost/
export LD_LIBRARY_PATH=/opt/soft/thrift/lib:/usr/lib:/usr/local/lib:/opt/soft/boost/lib/
./scibed example1.conf

生成客户端使用scribe

先产生java的thrift代码:
cd facebook-scribe-2ee14d3/if/
thrift -r -I ../../thrift-0.5.0/contrib/(这里需要指到你的thrift的源码目录) -gen java scribe.thrift

使用

gen-java目录下有thrift的客户端,即取即用。javaeye里有一篇写配置log4j使用scribe的不错:http://www.javaeye.com/topic/800208


原创文章如转载,请注明:转载自五四陈科学院[http://www.54chen.com]
本文链接: http://www.54chen.com/life/log-server-scribe-helper.html

This entry was posted in 未分类. Bookmark the permalink.

13 Responses to “分布式日志系统scribe使用手记”

  1. Timo 说:

    为什么不跟人人一样用Hadoop来处理日志呢?

  2. wwek 说:

    facebook背后自家的开源软件还不少。

  3. royce wong 说:

    我在搞scribe 静态编译时 发现scribe 不能找到boost静态库。查看scribe生成的makefile,已经对boost的库做了指定,但还是报错:
    scribe_server.cpp:(.text+0xe5): undefined reference to
    `boost::system::system_category()'

    请问有碰到过么?是不是scribe 不能静态编译?

  4. 剑舞 说:

    利用scribe写入hdfs的时候,是否有遇到过内存泄露的问题,例如我通过scribe向hdfs写入1G的数据,内存占用很容易就飙升到700M以上,数据写完之后被占用的内存仍然不被释放

    系统环境 Red Hat 4.1.2-48
    hadoop-0.20.2-cdh3u2

  5. long904 说:

    boost1.45 thritf0.7 安装好了,通过scribe写到本地,也就是file_path=/tmp/scribetest
    没问题。但如果写入hdfs就会报“[hdfs] ERROR: HDFS is not configured for file”错误,查过资料说配置CLASSPATH,但已经配置了。还是不行。
    请问这是为何呢?

  6. fjpqzm 说:

    请教下,scribe仅是用于聚合日志,那收集起来的日志一般都会采用什么工具去分析呢?我现在想把多个分布式应用的日志收集起来,进行分析,然后能序列化的查询交易的完整日志或进一步可以做些统计的。

Leave a Reply