随着云计算时代的到来,我们的互联网系统服务端越来越庞大,一个大型系统通常由成百上千台机器集群而成,我们的系统会部署在这数千台机器中,此时需要时刻监控每一个系统运行的数据。我们可能会需要了解各个系统每天进行了多少交易,并进行汇总、分析、统计、报表。典型的应用就是:收集上千个系统产生的日志,并进行分析统计里面的数据,挖掘、预测。

 

简单的方式可以是:在每个机器上写个shell,实时或定时分析本系统日志,将结果报告给中心服务器。这样我们需要关注所有的系统。

 

但还有一种简单的方式:将每个系统的日志实时报告给中心服务器,在中心服务器锁大的磁盘存储,管理、分析、挖掘、报告,怎么折腾都可以。而这些需求都已经由Facebook发现了(Facebook每天log上百亿条信息,每秒log上百万条),并实现了,实现的结果就是Scribe系统。

 

Scribe是一个分布式的日志手机框架,它可以将我们的系统日志报告给Scribe中心服务器,并可以实现多级报告。Scribe客户端比依赖中心服务器,当中心服务器不可用时log在本地,当中心服务器可用后又会同步到中心服务器。

 


Scribe本身由C++实现, 其客户端与服务端的RPC通信默认实现为Python 实现。为了Scribe能够为多种语言所用,它采用了Thrift框架来进行通信,服务端已经由它实现了,客户端它只实现了Python版,我们可以根据Thrift框架很容易的导出Java实现版本,并在各种语言的系统中应用。

 

比如,可以实现一个Java的客户端,并采用Log4j的方式,配置到log4j中。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐