Scribe配置文件解析

scribe配置文件詳解緩存

1.全局配置項服務器

(1)port:指示scribe服務器在哪個端口上監聽,默認是0,經過命令行參數選項-P能夠指定端口,也可以經過配置文件指定。在源代碼中就賦值給變量port。dom

(2)max_msg_per_second:默認值是0,若是這個參數值是0將被忽略。隨着最近的改變這個參數不多被關聯使用到,max_queue_size參數將被應用到限制每秒最大的消息數。在scribeHandler::throttleDeny被使用。socket

(3)max_queue_size(按字節):接收消息的隊列的最大字節,默認是5,000,000字節。在scribeHandler::Log使用。ide

(4)check_interval(秒):用於控制多長時間檢查一次存儲,默認值是5.性能

(5)new_thread_per_category(是/否):若是爲是,將爲每個分類場景建立一個新的線程,不然將創一個單線程爲每個在配置文件中定義的存儲。對於前綴存儲或默認存儲,若是這個參數設置成「否」將致使全部匹配這個分類的消息都由一個單獨的存儲來處理。不然將爲每個惟一的分類名建立一個新的存儲。默認爲「是」。url

(6)num_thrift_server_threads:爲接收消息的監聽線程數量,默認是3.spa

(7)max_conn:最大的連接數。.net

 

2.存儲配置命令行

         Scribe服務器決定怎樣將日誌消息寫入是基於在配置中定義的存儲類型和相關參數設置,每個存儲都必須指定一個消息分類來處理三種異常。

(1)默認存儲:默認分類處理任何不能被其餘存儲處理的分類,這兒僅僅可以有一個默認存儲。

(2)前綴存儲:若是指定分類以一個*結尾,這個存儲將處理全部以指定前綴開頭的分類。

(3)多個類別:在一個存儲定義中可以使用‘categories=’建立多個類別。

在上面三種狀況下,在文件存儲中將爲每個惟一的分類建立一個子目錄(除非new_thread_per_category被設置爲false)。

 

3.存儲配置變量

(1)category:決定哪些消息被這個存儲處理。

(2)type:存儲類型,有file、buffer、network、bucket、thriftfile、null、mutil。

(3)target_write_size:默認是16,384字節,決定在這些消息處理以前在給定分類的消息隊列能夠增加到多大。

(4)max_batch_size: 默認1,024,000字節(可能沒有被開源),決定在內存存儲隊列中一次可以被處理的數據的總數,這個(加上緩衝文件旋轉的大小)控制多大的一個thrift調用可行。

(5)max_write_interval:默認是10秒,決定在這些消息處理以前在給定分類的消息隊列能夠用多長時間。

(6)must_succeed(yes/no):是否必須成功,若是一個存儲處理消息失敗是否從新進入消息隊列排隊,若是設置成 ‘no’,且一個存儲不能處理這些消息,消息將被丟棄。默認是yes。強烈建議使用緩存來指一個定二級存儲來處理失敗的日誌。

 

4.file存儲配置

         File存儲寫入消息到一個文件。

(1)file_path:文件路徑,默認是「/tmp」。

(2)base_filename:基本文件名稱,默認是分類名稱。

(3)use_hostname_sub_directory(yes/no):使用服務器的主機名建立一個子目錄,默認是no。

(4)sub_directory:使用指定的名稱建立一個子目錄。

(5)rotate_period:文件建立週期,取值能夠是 「hourly」, 「daily」, 「never」,或者是name[後綴], 「never」是默認值,決定多長時間建立一個新文件,特別的後綴「s」, 「m」, 「h」, 「d」, 「w」分別表明second(默認)、minutes、hours、days和weeks。

(6)rotate_hour:取值0-23,默認是1,若是rotate_period取值是daily,這個就決定天天的何時建立新文件。

(7)rotate_minute:取值0-59,默認是15,若是rotate_period設置爲daily或hourly,這個就決定以一個小時事後多久建立一個新文件。

(8)max_size:文件上限大小,默認1,000,000,000多字節,決定在輪流建立一個新文件之前一個文件可以增加到多大。

(9)write_meta:取值yes或其餘任何,false爲默認值,若是文件被旋轉,最後一行將包含「scribe_meta」,跟着就是下一個文件名。

(10)fs_type:文件類型,支持「std」和「hdfs」兩種格式,「std」爲默認值。

(11)chunk_size:默認值是0,若是一個塊大小被指定,在文件內沒有消息可以跨越塊的邊界,除非有消息的大小超過塊的大小。

(12)add_newlines:取值0或1,默認是0,若是設置爲1,之後的每個消息都寫入一個新行。

(13)create_symlink:yes或其餘任何,默認是yes。若是爲yes,將保持一個符號連接指向最近一個被寫入的文件。

(14)write_stats:yes/no,默認是yes。是否建立一個scribe_stats文件爲每個存儲來保持文件寫入的軌跡。

(15)max_write_size:默認是1000000字節。File存儲將嘗試按max_write_size字節的塊大小刷新數據到文件系統。max_write_size的大小不能超過max_size。因爲target_write_size必定數量的消息被緩存。那麼文件存儲被調用來保持這些消息。File_store以一次性至少max_write_size大小字節的塊來保存這些消息。File存儲的最後一次寫入比max_write_size小;

(16)write_category:寫入一個分類下面;

(17)rotate_on_reopen:循環從新打開。

5.network存儲配置

         Network存儲向其餘scribe服務器發送消息。Scribe保持持久的連接打開以致於它可以發送消息。(爲了錯誤信息或者若是下游機器過載,它將從新打開一個連接)。在正常運行的狀況下,scribe會基於當前緩存中存在多少條消息等待發送而分批次的發送。(若是scribe備份和緩存消息到本地磁盤,scribe會基於緩存文件大小按塊發送消息)

 (1)remote_host:發送消息的遠程主機的名稱或IP地址。

 (2)remote_port:在遠程主機上的端口。

(3)timeout:socket超時,MS爲單位,默認是DEFAULT_SOCKET_TIMEOUT_MS, 在store.h中被設置爲5000。

(4)use_conn_pool:yes或者任何其餘,默認是false。是否使用鏈接池代替爲每個遠程主機打開的連接。

(5)smc_service:

(6)service_options:

(7)service_cache_timeout:

(8)ignore_network_error:

(9)dynamic_config_type:

6.buffer存儲配置

         這是最經常使用的一種store。該store中包含兩個子store,其中一個是primary store,另外一個是secondary store。日誌會優先寫到primary store中,若是primary store出現故障,則scribe會將日誌暫存到secondary store中,待primary store恢復性能後,再將secondary store中的數據拷貝到primary store中。其中,secondary store僅支持兩種store,一個是file,另外一個是null。

(1)max_queue_length:默認2,000,000條消息。若是在隊列中的消息數量超過了這個值,buffer存儲將切換寫入secondary store。

(2)buffer_send_rate:默認值是1。決定每一次check_interval內,多少次從secondary store讀出一組消息而且發送到primary store中。

(3)retry_interval:默認是300秒。在寫primary store失敗之後等待多長時間從新發送到primary store。

(4)retry_interval_range:默認是60秒。將在指定retry_interval區間內隨機的選擇一個從新發送時間區間。

(5)replay_buffer:取值yes/no,默認是yes。若是設置爲 ‘no’,buffer存儲不能從secondary store移除消息而且發送到primary store中去。

7.bucket存儲配置

         Bucket存儲使用每一個帶前綴的消息做爲key寫入到多個文件中去。可以定義一個隱藏的或明確的bucket。定義隱藏的bucket必需要有一個名稱是 「bucket」 子bucket,這個子bucket能夠是file存儲、network存儲或者thriftfile存儲。

(1)num_buckets:hash進入的bucket個數,默認是1。不能被hash進入任何bucket的消息將被放入一個特別的0號bucket。

(2)bucket_type: 取值是「key_hash」, 「key_modulo」, 或者 「random」。

(3)delimiter:必須是1-255之間的ascii代碼,不然默認是 ‘:’。第一次出如今消息前綴中的delimiter在‘hash/modulo’中將被用做key。Random不使用這個delimiter。

(4)remove_key:取值yes/no,默認是是no。是否從消息中移除key前綴。

(5)bucket_subdir:若是使用的是一個單獨定義的bucket,每個子目錄的名稱根據bucket的數量編號生成。

8.null存儲配置

         忽略被給分類的全部消息。沒有參數。

9.mutil存儲配置

         一個mutil存儲是將全部消息轉發到子存儲中去的一個存儲。一個mutil存儲可能有多個名叫「store0」, 「store1」, 「store2」等等的子存儲。

         (1)report_success:取值 「all」 or 「any」, 默認是 「all」。是否全部substores或任何substores必須成功地記錄消息,以報告爲成功的消息記錄在日誌消息

10.thriftfile存儲配置

         Thriftfile存儲相似於file存儲,出了thriftfile存儲是用Thrift TFileTransport file存儲消息。

(1)file_path:文件路徑,默認是「/tmp」。

(2)base_filename:基本文件名稱,默認是分類名稱。

(3)rotate_period:文件建立週期,取值能夠是 「hourly」, 「daily」, 「never」,或者是name[後綴], 「never」是默認值,決定多長時間建立一個新文件,特別的後綴「s」, 「m」, 「h」, 「d」, 「w」分別表明second(默認)、minutes、hours、days和weeks。

(4)rotate_hour:取值0-23,默認是1,若是rotate_period取值是daily,這個就決定天天的何時建立新文件。

(5)rotate_minute:取值0-59,默認是15,若是rotate_period設置爲daily或hourly,這個就決定以一個小時事後多久建立一個新文件。

(6)max_size:文件上限大小,默認1,000,000,000多字節,決定在輪流建立一個新文件之前一個文件可以增加到多大。

(7)fs_type:文件類型,當前只支持「std」,「std」爲默認值。

(8)chunk_size:默認值是0,若是一個塊大小被指定,在文件內沒有消息可以跨越塊的邊界,除非有消息的大小超過塊的大小。

(9)create_symlink:yes或其餘任何,默認是yes。若是爲yes,將保持一個符號連接指向最近一個被寫入的文件。

(10)flush_frequency_ms:毫秒單位,若是沒有指定就使用默認300的 TFileTransport。決定一步到thrift file磁盤時間的頻率。

(11)msg_buffer_size:以字節爲單位,若是沒有指定將使用默認爲0的TFileTransport。若是非零,將拒絕寫入比這個值大的。

11.總結:今天把基本上全部配置文件選項的意義簡單介紹一下,要深刻理解這些參數的意義還必需要深刻到源代碼去,還在scribe的源代碼比較簡單,很快就能夠全面的深刻的分析了,下一篇就本身分析的一些簡單流程介紹一下,須要深刻到仍是直接源代碼最好。源碼以前,了無密碼!



相關連接

http://my.oschina.net/guol/blog/110258

相關文章
相關標籤/搜索