首页 > 代码库 > scribe conf,编译了一天,鬼知道用不用得到,找到的conf解释

scribe conf,编译了一天,鬼知道用不用得到,找到的conf解释

 Scribe的配置文件由全局的section和一个或多个store的section组成。这篇来了解一下scribe的配置文件,在源码包的examples目录下有多个配置文件实例:

 

?
1
2
3
4
5
6
7
8
9
examples/
├── example1.conf  #模拟服务端
├── example2central.conf  #在同一台机器模拟服务端的配置
├── example2client.conf  #在同一台机器模拟客户端的配置
├── hdfs_example2.conf
├── hdfs_example.conf
├── README
├── scribe_cat  #python客户端
└── scribe_ctrl  #管理scribe实例的工具

    scribe运行时的配置文件可以在命令行用-c指定,默认的配置位置在env_default.h中的DEFAULT_CONF_FILE_LOCATION设置,也就是/usr/local/scribe/scribe.conf。

Global Configuration Variables

port  

    设置scribe server监听在哪个端口上,默认是0,可以在命令行通过-p指定。

max_msg_per_second  

max_queue_size  

    设置消息队列的大小,用在scribeHandler::Log中,默认值是5,000,000 bytes。

check_interval  

    设置多长时间检测一次存储,默认值是5秒。

new_thread_per_category  

    值如果是yes,则会为每一个actegory创建一个线程,如果是no,则所有定义的store只创建一个线程,对于prefix stores或者default store,如果值是no,则会导致所有匹配这个category的消息都由一个单独的存储来处理,否则,将为每一个唯一的category创建存储。

num_thrift_server_threads  

    监听进入消息的线程数,默认是3。

Store Configuration

    scribe server根据配置文件中store的定义来记录消息,每一个store必须指定消息category用来处理三种异常情况:

default store  

    默认category处理任何不能被其他store处理的category,只能有一个默认store,category=default。

prefix stores  

    如果一个指定的category以*结尾,这个存储将处理所有以指定前缀开头的category 。

multiple categories  

    在一个store的定义中可以使用‘categories=‘创建多个store。categories=rock paper* scissors

在上面三种情况下,scribe将为每一个唯一的category创建一个子目录,除非new_thread_per_category被设置为false。

Store Configuration Variables

category  

    设置哪些消息被这个store处理。

type  

    存储类型,有file、buffer、network、bucket、thriftfile、null、mutil。

target_write_size  

    默认是16,384 bytes,消息在被处理之前,category的消息队列可以增长到多大。

max_batch_size  

    默认是1,024,000 bytes,在内存存储队列中一次可以被处理的数据量。

max_write_interval  

    默认是1秒,决定在这些消息处理之前在给定category的消息队列可以用多长时间。

must_succeed  

    是否必须成功,默认是yes,如果一个store处理消息失败,是否重新进入消息队列排队。如果设置为no,一个store不能处理这些消息的话,消息将被丢弃。建议使用缓存来指一个定二级存储来处理失败的日志。

?
1
2
3
4
5
6
<store>
category=statistics
type=file
target_write_size=20480
max_write_interval=2
</store>

File Store Configuration

file store把信息写入文件中。

file_path  

    默认路径是‘/tmp’。

base_filename  

    默认category名称。

use_hostname_sub_directory  

    是否使用server的hostname建立子目录,默认是no。

sub_directory  

    使用指定的名称创建子目录。

rotate_period  

    设置多久创建一个文件,周期可以是“hourly”, “daily”, “never”, or number[suffix]; “never”是默认值,suffix可以是“s”, “m”, “h”, “d”, “w”,‘s’是默认值。

rotate_hour  

    如果rotate_period是daily,设置每天何时创建新文件,值可以是0-23,默认是1。

rotate_minute  

    如果rotate_period是daily或者hourly,设置一个小时多久后可以创建新文件,值可以是0-59,默认是15。

max_size  

    在轮转一个文件前,该文件可以增长到多大,默认是1,000,000,000 bytes 。

write_meta  

    值可以是yes或者其他值,false是默认值,如果文件被轮转,最后一行将包含"scribe_meta",跟着就是下一个文件名。

fs_type  

    支持两种类型std和hdfs,默认是std。

chunk_size  

    默认是0,如果一个chunk大小被指定,在文件内没有消息能够跨越chunk的边界,除非有消息的大小超过chunk的大小。

add_newlines  

    默认是0,如果是1,则在每行后面加入换行符。

create_symlink  

    默认值是yes,如果是真,则维护一个符号连接到最近被写入的文件。

write_stats  

    是否对每一个store创建一个scribe_stats文件用来跟踪文件的写入轨迹,默认yes。

max_write_size

?
1
2
3
4
5
6
7
8
9
10
11
12
<store>
category=sprockets
type=file
file_path=/tmp/sprockets
base_filename=sprockets_log
max_size=1000000
add_newlines=1
rotate_period=daily
rotate_hour=0
rotate_minute=10
max_write_size=4096
</store>


Network Store Configuration

    network store向其它scribe server发送消息,Scribe保持持久的链接打开以至于它能够发送消息。在正常运行的情况下,scribe会基于当前缓存中存在多少条消息等待发送而分批次的发送。

remote_host  

    远程主机的ip或者名称。

remote_port  

    远程主机的端口。

timeout  

    socket超时时间,默认为default_socket_timeout_ms,在store.h中设定默认为5000毫秒。

use_conn_pool  

    是否使用连接池代替为每一个远程主机打开的链接,默认是false。


Buffer Store Configuration

    buffer store中包含两个子store:primary和secondary。日志会先尝试写到primary store中,如果primary store出现故障,则scribe会将日志暂存到secondary store中,待primary store恢复性能后,再将secondary store中的数据拷贝到primary store中(除非replay_buffer=no)。其中,secondary store仅支持两种store:file和null。

buffer_send_rate  

    默认是1,在check_interval周期内,执行多少次secondary store读出一组消息并且发送到primary store中。

retry_interval  

    默认是300秒,primary store写入失败后,等待多久尝试重新发送primary store。

retry_interval_range  

    默认是60秒,将在retry_interval的区间内随机的选择一个重新发送时间。

replay_buffer  

    默认是yes,如果设置为no,将不会从secondary store迁移消息到primary store。

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<store>
category=default
type=buffer
buffer_send_rate=1
retry_interval=30
retry_interval_range=10
  <primary>
    type=network
    remote_host=wopr
    remote_port=1456
  </primary>
  <secondary>
    type=file
    file_path=/tmp
    base_filename=thisisoverwritten
    max_size=10000000
  </secondary>
</store>

Bucket Store Configuration

    bucket stores使用消息前缀作为key,将消息hash到多个文件中去 
num_buckets  

    默认值是1,hash到buckets的个数,不能被hash进bucket的消息将被放入一个特别的0号bucket。

bucket_type  

    “key_hash”, “key_modulo”, or “random”。

delimiter  

    值必须是1~255之间的ascii,默认是‘:‘,第一次出现在消息前缀中的delimiter在‘hash/modulo’中将被用作key。

remove_key  

   是否移除key的前缀,默认是no。

bucket_subdir  

   如果使用一个单独定义的bucket,则每一个子目录的名称根据bucket的数量编号生成。

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<store>
category=bucket_me
type=bucket
num_buckets=5
bucket_subdir=bucket
bucket_type=key_hash
delimiter=58
  <bucket>
    type=file
    fs_type=std
    file_path=/tmp/scribetest
    base_filename=bucket_me
  </bucket>
</store>

Null Store Configuration

    Null store告诉scribe对给定的category,忽略所有的消息。

?
1
2
3
4
<store>
category=tps_report*
type=null
</store>


Multi Store Configuration

    一个multi store会将消息转发到多个子stores中去,子store以“store0”, “store1”, “store2”命名。

report_success  

    值可以是all或者any,默认是any,是否所有substores或任何substores必须成功地记录消息。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<store>
category=default
type=multi
target_write_size=20480
max_write_interval=1
  <store0>
    type=file
    file_path=/tmp/store0
  </store0>
  <store1>
    type=file
    file_path=/tmp/store1
  </store1>
</store>

scribe conf,编译了一天,鬼知道用不用得到,找到的conf解释