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

    Scribe是Facebook開源的日誌收集系統,以前我也寫過一篇關於scribe的博文,主要是關於scribe各個依賴包的編譯安裝方法和scribe服務的配置方法。今天咱們來學習一下如何把scribe運用到實際業務當中。php

    在學習以前,須要你們先了解如何正確安裝和配置scribe服務。還不會的同窗,請移步個人另外一篇博文《Scribe安裝及配置方法》,連接地址是:http://cyr520.blog.51cto.com/714067/1209485。java

    想讓scribe在你的業務當中發揮做用,須要咱們在安裝完scribe服務以後用thrift生成頭文件,而後把這個生成的頭文件引用到你的程序當中。這樣咱們就有了scribe的客戶端了。有了客戶端以後,咱們想收集什麼數據就垂手可得了。python

    thrift支持的語言很是多,有as三、C++、C#、java、python、php、perl、ruby等等。vim

    如下以php爲例,具體講解如下操做過程:ruby

一、在源碼包裏找兩個文件,fb303.thrift和scribe.thift,並放在同一個目錄下。bash

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/

二、修改scribe.thrift中包含fb303的路徑爲當前路徑。socket

vim scribe.thrift

clip_p_w_picpath002

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

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

clip_p_w_picpath004

四、將生成的gen-php改爲有意思的名稱,再複製幾個必要的目錄。學習

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

五、編寫php客戶端測試程序。

vim php_client_test.php
<?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();
?>

六、執行測試腳本。

php php_client_test.php

七、驗證程序執行效果。

clip_p_w_picpath008

到這裏,咱們的實驗就完成了。若是你在使用當中有何問題,歡迎和我一塊兒討論。

相關文章
相關標籤/搜索