如何將scribe運用到實際業務當中

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_p_w_picpath002

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

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

clip_p_w_picpath004

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_p_w_picpath006

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_p_w_picpath008

到這裏,我們的實驗就完成了。如果你在使用當中有何問題,歡迎和我一起討論。

本文出自 “小崔的成長之路” 博客,請務必保留此出處http://cyr520.blog.51cto.com/714067/1265181


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章