Scribe核心分析

2021-09-09 03:58:37 字數 1889 閱讀 6219

facebook scribe日誌聚合系統有三個核心內容:configurarion(配置)、running scribe server(執行伺服器)、logging messages(記錄日誌)

scribe 執行下面thrift介面:

enum resultcode

struct logentry

service scribe extends fb303.facebookservice

為了給指定主機和埠的scribe伺服器傳送一條訊息,我們需要簡單地建立乙個scribe client和呼叫log()方法,下面是使用python寫的乙個例項:

from scribe import scribe

from thrift.transport import ttransport, tsocket

from thrift.protocol import tbinaryprotocol

category='

test

'message='

hello world

'log_entry = scribe.logentry(category, message)

#depending on thrift version

#log_entry = scribe.logentry(dict(category=category, message=message))

socket = tsocket.tsocket(host='

localhost

', port=1463)

transport = ttransport.tframedtransport(socket)

protocol = tbinaryprotocol.tbinaryprotocol(trans=transport, strictread=false, strictwrite=false)

client = scribe.client(iprot=protocol, oprot=protocol)

transport.open()

result = client.log(messages=[log_entry])

transport.close()

$scribed [ -p  ] [ -c  ] #

啟動scribe伺服器

$scribe_ctrl stop [ ] #

停止scribe伺服器

$scribe_ctrl [ ] #

監控、管理scribe伺服器

scribe_ctrl 的子命令:

status – 如果伺服器執行正常則返回'alive'

version – 返回當前scribe伺服器的版本

alive – 返回伺服器執行時間

stop – 停止scribe伺服器

counters – 返回下列統計資訊 (如果非零):

scribe server是通過配置檔案啟動的。 

更詳細的配置資訊參見:

客戶端呼叫log(messages)函式傳送訊息,通過thrift框架的實現,遠端方法scribehandler:: log(const vector& messages)函式被呼叫,過程如下:

參考文章:

Scribe應用例項

源 裡所給的example很簡單,但大體上了模擬了其執行的過程,分三個部分。可參考裡面的readme檔案 configurarion 配置 running scribe server 執行伺服器 logging messages 記錄日誌 先執行scribe example來看看效果。1.examp...

scribe 架構及其store

1 概述 scribe是facebook開源的日誌收集系統,在facebook內部已經得到大量的應用。它能夠從各種日誌源上收集日誌,儲存到乙個 儲存系統 可以是nfs,分布式檔案系統等 上,以便於進行集中統計分析處理。它為日誌的 分布式收集,統一處理 提供了乙個可擴充套件的,高容錯的方案。當 儲存系...

mysql核心分析文件 mysql 核心分析

mysql從功能上來講,並不完善,適用於oltp,不適用於olap,在開源資料庫而言,對於重要的資料儲存的話,而是建議採用postgresql 下面把mysql和postgresql從核心級做一些對比分析,找出mysql快,但功能不足的方面.估計要很長時間才能寫完,每天看到哪寫到哪.1.mysql是...