如何将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_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

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



本文转自 cyr520 51CTO博客,原文链接:http://blog.51cto.com/cyr520/1265181

相关文章
电脑耳机声音小怎么调大(笔记本电脑声音太小怎么加强)
电脑耳机声音小怎么调大(笔记本电脑声音太小怎么加强)
2034 0
|
Web App开发 移动开发 JavaScript
通过H5(浏览器/WebView/其他)唤起本地app
通过H5(浏览器/WebView/其他)唤起本地app
|
数据处理 网络架构
ElementUI - 主页面--动态树&右侧内容管理
ElementUI - 主页面--动态树&右侧内容管理
231 0
|
iOS开发
[✔️]xcode Instrucments排查app的内存泄露
[✔️]xcode Instrucments排查app的内存泄露
842 0
|
9天前
|
机器人 API 调度
基于 DMS Dify+Notebook+Airflow 实现 Agent 的一站式开发
本文提出“DMS Dify + Notebook + Airflow”三位一体架构,解决 Dify 在代码执行与定时调度上的局限。通过 Notebook 扩展 Python 环境,Airflow实现任务调度,构建可扩展、可运维的企业级智能 Agent 系统,提升大模型应用的工程化能力。
|
人工智能 前端开发 API
前端接入通义千问(Qwen)API:5 分钟实现你的 AI 问答助手
本文介绍如何在5分钟内通过前端接入通义千问(Qwen)API,快速打造一个AI问答助手。涵盖API配置、界面设计、流式响应、历史管理、错误重试等核心功能,并提供安全与性能优化建议,助你轻松集成智能对话能力到前端应用中。
715 154