分享

如何将scribe运用到实际业务当中

 昵称17690251 2014-07-04

    Scribe是Facebook开源的日志收集系统,之前我也写过一篇关于scribe的博文,主要是关于scribe各个依赖包的编译安装方法和scribe服务的配置方法。今天我们来学习一下如何把scribe运用到实际业务当中。

    在学习之前,需要大家先了解如何正确安装和配置scribe服务。还不会的同学,请移步我的另一篇博文《Scribe安装及配置方法》,链接地址是:http://cyr520.blog.51cto.com/714067/1209485。

    想让scribe在你的业务当中发挥作用,需要我们在安装完scribe服务之后用thrift生成头文件,然后把这个生成的头文件引用到你的程序当中。这样我们就有了scribe的客户端了。有了客户端之后,我们想收集什么数据就轻而易举了。

    thrift支持的语言非常多,有as3、C++、C#、java、python、php、perl、ruby等等。

    以下以php为例,具体讲解以下操作过程:

1、在源码包里找两个文件,fb303.thrift和scribe.thift,并放在同一个目录下。

1
2
3
4
mkdir -p /data/tmp
cd /data/tmp/
cp /data/software/thrift-0.4.0/contrib/fb303/if/fb303.thrift /data/tmp/
cp /data/software /scribe-2.1/if/scribe.thrift /data/tmp/

2、修改scribe.thrift中包含fb303的路径为当前路径。

1
vim scribe.thrift

clip_image002

3、用thrift生成php的接口文件,生成的目录名是gen-php。

1
/usr/local/thrift/bin/thrift -r --gen php scribe.thrift

clip_image004

4、将生成的gen-php改成有意思的名称,再复制几个必要的目录。

1
2
3
4
5
6
mkdir includes
mv gen-php includes/packages
cp /data/software/thrift-0.4.0/lib/php/src/Thrift.php /data/tmp/includes/
cp /data/software/thrift-0.4.0/lib/php/src/autoload.php /data/tmp/includes/
cp -r /data/software/thrift-0.4.0/lib/php/src/protocol /data/tmp/includes/
cp -r /data/software/thrift-0.4.0/lib/php/src/transport /data/tmp/includes/

整个目录结构如下:

clip_image006

5、编写php客户端测试程序。

1
vim php_client_test.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$GLOBALS['THRIFT_ROOT'] = './includes';
include_once $GLOBALS['THRIFT_ROOT'] . '/packages/scribe/scribe.php';
include_once $GLOBALS['THRIFT_ROOT'] . '/transport/TSocket.php';
include_once $GLOBALS['THRIFT_ROOT'] . '/transport/TFramedTransport.php';
include_once $GLOBALS['THRIFT_ROOT'] . '/protocol/TBinaryProtocol.php';
$msg1['category'] = 'TEST';
$msg1['message'] = "Test Message.";
$entry1 = new LogEntry($msg1);
$messages = array($entry1);
$socket = new TSocket('localhost', 1463, true);
$transport = new TFramedTransport($socket);
$protocol = new TBinaryProtocol($transport, false, false);
$scribe_client = new scribeClient($protocol, $protocol);
$transport->open();
$scribe_client->Log($messages);
$transport->close();
?>

6、执行测试脚本。

1
php php_client_test.php

7、验证程序执行效果。

clip_image008

到这里,我们的实验就完成了。如果你在使用当中有何问题,欢迎和我一起讨论。

本文出自 “小崔的成长之路” 博客,请务必保留此出处http://cyr520.blog.51cto.com/714067/1265181

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多