`
guoyunsky
  • 浏览: 854316 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
3d3a22a0-f00f-3227-8d03-d2bbe672af75
Heritrix源码分析
浏览量:206245
Group-logo
SQL的MapReduce...
浏览量:0
社区版块
存档分类
最新评论

开源日志收集系统Scribe学习笔记(一) 参数说明

 
阅读更多

          本博客属原创,转载请注明出处:http://guoyunsky.iteye.com/blog/1654505

        开始要使用开源日志收集系统scribe去收集日志,花了一点时间整理了下它的各种参数.由于只是学习阶段,难免理解/翻译有误,以后再使用过程中再慢慢整理修改总结吧.

 

 一.scribe配置参数的两种方式:

1) 通过命令行,-c commandname

2) 通过指定配置文件

 

二.全局参数

1)port: (number)

scribe监听的端口

默认为0

可以通过命令行-p指定

2)max_msg_per_second: (number)

每秒最大日志并发数

默认为0,0则表示没有限制

在scribeHandler::throttleDeny中使用

3)max_queue_site:(byte)

队列最大可以为多少

默认为5,000,000 bytes

在scribeHandler::Log中使用

4)check_interval:(second)

检查存储的频率

默认为5

5)new_thread_per_category:(yes/no)

是否为每个一个分类创建一个线程,为false的话,只创建一个线程为每个存储服务

默认为yes

6)num_thrift_server_threads:(number)

接收消息的线程数

默认为3

 

三.store大概配置

1.三种store方式:

1)default store:默认分类,处理其他store无法处理的分类.每个消息都应该指定一个store cateogry

2)prefix store: 前缀分类

3)multiple categories:多个分类

2.store配置参数说明:(string)

1)cateogry:

哪些消息由这个category的store处理

2)type

store类型,有file,buffer,network,bucket,thriftfile,null,multi

3)target_write_size:(byte)

对应category的消息在处理之前,消息队列最大可以为多大

默认为16,384

4)max_batch_size:(byte)

内存存储队列一次性可以处理的消息数量,超过这个大小将调用thrift

5)max_write_interval:(second)

对应category的消息队列在处理消息这些消息之前可以维护多长时间

默认为1秒

6)must_succeed:(yes/no)

消息是否必须要成功处理,如果一个消息存储失败再重试,如果设置为no,则如果一个消息存储失败,则该条消息会被抛弃.强烈建议使用buffer store去指定一个secondary store去处理失败的消息

默认为yes

3.例子:

<store>

category=statistics

type=file

target_write_size=20480

max_write_interval=2

</store>

 

四.file-store配置

1.概述

store消息到文件

2.参数说明

1)file_path:(string)

文件路径

默认为default

2)base_file_name:(string)

文件名字

默认为category名字

3)use_hostname_sub_directory:(yes/no)

是否使用服务器的hostname作为子目录

默认为no

4)sub_directory:(string)

子目录名

5)rotate_period:(hourly,daily,never,number[suffix])

多长时间创建一个文件

i.hourly:多少小时;

ii.daily:多少天;

iii.never:从不;

iv.number[suffix]:其中suffix可以为s,m,h,d,w,对应秒,分钟,小时,天,星期,默认为s

默认为never

6)rotate_hour:(0-23)

如果rotate_period=daily,每隔1天多少小时创建一个文件

默认为1

7)rotate_minute:(0-59)

如果rotate_period=daily或hourly,每隔一天多少分钟或者1小时多少分钟创建一个文件

默认为15

8)max_site:(bytes)

文件大约到多大时写入到一个新的文件

默认为1,000,000,000

9)write_meta:(yes/no)

是否写入元数据,如果是yes,则一个文件的最后一行为write_meta加下一个文件名

10)fs_type:(std/hdfs)

文件系统类型,有std和hdfs

默认为std

11)chunk_size:(number)

chunk大小,如果指定了则文件内的任何消息都不会越过这个数值,除非消息本身比chunk大

默认为0

12)add_newlines:(0/1)

是否每写入一个消息就新增一行,1表示新增

默认为0

13)create_symlink:(yes/no)

如果为yes,则会维护一个符号链接指向最近写入的文件

默认为yes

14)write_stats:(yes/no)

如果为yes,则会为每一个store创建一个scribe_stats文件去跟踪文件写

默认为yes

15)max_write_size:(byte)

当块大小大到max_write_size时,store会将数据刷新到文件系统,max_write_size不能超过max_site.由于target_write_size大小的消息被缓存,file-store会被调用去保存这些缓存中的消息.file-store每次最少会保存max_write_size大小的消息,但file-store最后一次保存消息的大小肯定会小于max_write_size.

默认值为1,000,000

3.例子:

<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配置

1.概述

scribe可以将消息发送到其他scribe.scribe会保持长连接到其他scribe,除非发生错误或者超载才会重新连接.scribe以批处理的方式将消息发送到其他scribe

2.参数

1)remote_host:(String)

要发送到的scribe服务器的host name或者ip

2)remote_port:(number)

要发送到的scribe服务器的端口

3)timeout:(millisecond)

socket超时时间

默认为5000,对应DEFAULT_SOCKET_TIMEOUT_MS变量

4)use_conn_pool:(yes/no)

是否使用连接池

默认为false

3.例子:

<store>

category=default

type=network

remote_host=hal

remote_port=1465

</store>

 

六.buffer-store配置

1.概述:

每个buffer-store都应该要有primary和secondary两个子store.buffer-store会先尝试将消息写到primary-store,如果写入不成功则会暂时写到secondary-store,但一旦primary-store重新接,buffer-store则又会从secondary-store读取消息再发送到primary-store,但如果replay_buffer=no则不会这样做.secondary-store只支持这两种sotre:file和null

2.参数:

1)buffer_send_rate:(number)

每次check_interval,做多少次从secondary-store将数据发送到primary-store

默认为1

2)retry_interval:(second)

将secondary-store数据发送到primary-store的间隔,单位为秒

默认为300

3)retry_interval_range:(second)

在retry_interval范围内随机产生一个时间间隔

默认为60

4)replay_buffer:(yes/no)

如果设置为yes,会将失败的消息从secondary-store移到primary-store中

3.例子:

<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配置

1.概述:

bucket-store可以理解为并行store,会通过每一个消息的前缀作为key散列之后写到多个文件.你可以隐式(只使用一个bucket定义)或显式的定义bucket(每个bucket使用一个bucket定义).隐式定义的bucket必须有一个名为bucket的子store,并且这个子store只能是file-store,network-store或者thriftfile-store.

2.参数:

1)num_buckets:(number)

多少个bucket,如果消息无法hash则会放入一个编号为0的bucket

默认为1

2)bucket_type:(key_hash,key_modulo,random)

bucket类型

3)delimiter(1-255的ascii代码)

第一次出现在消息前缀中的delimiter在key_hash或key_modulo中被当作key.random不会使用delimiter.

4)remove_key:(yes/no)

如果为yes,则会删除每个消息的前缀key

默认为false

5)bucket_subdir:(string)

如果是使用单个bucket定义,则每个文件的子目录名字为该值加bucket的hash编号

3.例子:

1).通用例子

<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>

2).单一定义bucket,你可以显式的定义每个bucket

<store>

category=bucket_me

type=bucket

num_buckets=2

bucket_type=key_hash

  <bucket0>

    type=file

    fs_type=std

    file_path=/tmp/scribetest/bucket0

    base_filename=bucket0

  </bucket0>

  <bucket1>

    ...

  </bucket1>

  <bucket2>

    ...

  </bucket2>

</store>

3)定义network-store的bucket

<store>

category=bucket_me

type=bucket

num_buckets=2

bucket_type=random

  <bucket0>

    type=file

    fs_type=std

    file_path=/tmp/scribetest/bucket0

    base_filename=bucket0

  </bucket0>

  <bucket1>

    type=network

    remote_host=wopr

    remote_port=1463

  </bucket1>

  <bucket2>

    type=network

    remote_host=hal

    remote_port=1463

  </bucket2>

</store>

 

八.null-store配置

1.概述:

null-store用于忽略指定category的消息

2.没有参数

3.例子:

<store>

category=tps_report*

type=null

</store>

 

九.multi-store配置

1.概述:

multi-store会将消息存储到它的多个子store中.一个multi-store有多个子store,命名为store0,store1,store2等.

2.参数:

1)report_success:(all/any)

是否所有子sotre存储成功再报告为成功还是只要任何一个子sotre存储成功就回报为成功

默认为all

3.例子:

<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>

 

十.thriftfile-store配置

1.概述:

thriftfile-store也是file-store的一种,只不过存储消息到的文件为TFileTransport文件

2.参数:

1)file_path:(string)

要写入的文件路径

默认为/tmp

2)base_filename:(string)

要写入的基本文件名

默认为category名字

3)rotate_period:(hourly,daily,never,number[suffix])

多长时间创建一个文件

i.hourly:多少小时;

ii.daily:多少天;

iii.never:从不;

iv.number[suffix]:其中suffix可以为s,m,h,d,w,对应秒,分钟,小时,天,星期,默认为s

默认为never

4)rotate_hour:(0-23)

如果rotate_period=daily,每隔1天多少小时创建一个文件

默认为1

5)rotate_minute:(0-59)

如果rotate_period=daily或hourly,每隔一天多少分钟或者1小时多少分钟创建一个文件

默认为15

6)max_site:(bytes)

文件大约到多大时写入到一个新的文件

默认为1,000,000,000

7)fs_type:(std/hdfs)

文件系统类型,有std和hdfs

默认为std

8)chunk_size:(number)

chunk大小,如果指定了则文件内的任何消息都不会越过这个数值,除非消息本身比chunk大

默认为0

9)create_symlink:(yes/no)

如果为yes,则会维护一个符号链接指向最近写入的文件

默认为yes

10)flush_frequency_ms: (milliseconds)

多长时间同步thrift文件到硬盘

默认为3000

11)msg_buffer_site: (buffer)

store将会拒绝存储大于msg_buffer_site

默认为0,存储任何文件

3.例子:

<store>

category=sprockets

type=thriftfile

file_path=/tmp/sprockets

base_filename=sprockets_log

max_size=1000000

flush_frequency_ms=2000

</store>

 

 

整理翻译自:https://github.com/facebook/scribe/wiki/Scribe-Configuration

 

更多技术文章、感悟、分享、勾搭,请用微信扫描:

0
6
分享到:
评论

相关推荐

    开源日志系统比较:scribe、chukwa、kafka、flume.pdf

    本文主要对比了四个知名的开源日志系统:Facebook的Scribe、Apache的Chukwa、LinkedIn的Kafka以及Cloudera的Flume。这四个系统各自拥有独特的设计和优势,适用于不同的场景。 1. Facebook的Scribe Scribe是一款由...

    开源日志系统比较:scribe、chukwa、kafka、flume.docx

    本篇将对比分析四个流行的开源日志系统:Facebook的Scribe、Apache的Chukwa、LinkedIn的Kafka以及Cloudera的Flume,主要关注它们的设计架构、负载均衡能力、可扩展性和容错机制。 **1. Facebook的Scribe** Scribe...

    scribe日志系统文档

    Scribe是一款由Facebook开源的分布式日志收集系统,主要用于集中式地收集并处理各种来源的日志数据。它基于跨平台的语言Thrift进行开发,能够很好地支持Java Log4j等日志框架,并允许通过Log4j等工具将日志信息发送...

    Scribe日志记录讲解

    Scribe 是一个由 Facebook 开源的日志记录框架,它基于 Thrift 框架构建,旨在提供分布式环境下的日志收集服务。Scribe 的主要特点是其简单架构、灵活的日志格式以及支持异步消息发送和队列处理。由于它与 Thrift ...

    Thrift+Scribe分布式日志系统的构建

    Scribe 是 Facebook 开源的一个日志收集系统,适用于分布式环境。其设计目标是处理大规模的日志数据,尤其是对于那些需要实时监控和分析的日志数据。Scribe 采用了分布式架构,每个节点都可以独立收集日志,然后将...

    开源日志系统比较.pdf

    【开源日志系统比较】 日志系统在现代IT环境中扮演着至关重要的角色,尤其是在大数据分析和监控方面。本文主要对比了四个开源的日志系统:Facebook的Scribe、Apache的Chukwa、LinkedIn的Kafka以及Cloudera的Flume。...

    开源日志系统比较.docx

    总结来说,这四个开源日志系统各有侧重点,Scribe强调容错和简单架构,Chukwa针对Hadoop环境优化,Kafka擅长实时数据处理,而Flume则提供灵活的数据收集和动态配置。选择哪个系统取决于具体业务需求,如是否需要实时...

    【推荐】开源日志系统-word范文模板 (17页).docx

    本文主要探讨了几个流行的开源日志系统,包括Facebook的Scribe、Apache的Chukwa以及LinkedIn的Kafka,这些都是处理海量日志数据的有效工具。 1. Facebook的Scribe Scribe是一款由Facebook开发的日志收集系统,广泛...

    【推荐】开源日志系统-word范文模板 (17页).pdf

    本文将重点介绍几种流行的开源日志系统,包括Facebook的Scribe、Apache的Chukwa以及LinkedIn的Kafka和Cloudera的Flume,探讨它们的设计理念、架构特性以及在海量日志处理方面的优势。 1. Facebook的Scribe Scribe...

    开源日志管理最全对比.docx

    日志管理是IT系统运维和开发中的核心环节,它涵盖了...总之,开源日志管理工具的多样性为系统监控和分析提供了强大的支持,通过合理选择和配置,可以构建出高效、灵活的日志管理系统,确保IT环境的稳定运行和持续优化。

    facebook scribe

    Facebook Scribe 是一个分布式日志收集系统,由Facebook开源,主要用于处理大规模的日志数据。在大型分布式系统中,各个服务会产生大量的日志信息,这些信息对于监控、调试和数据分析至关重要。Scribe设计的目标是...

    scribe软件

    scribe是一款开源的日志收集系统,最初由Facebook开发并贡献给了开源社区。它设计的主要目标是为大规模分布式系统提供可靠、高效且可扩展的日志管理解决方案。scribe允许不同的服务将它们的日志数据流式传输到一个...

    基于Flume的美团日志收集系统.pdf

    常用的开源日志收集系统有 Flume 和 Scribe。 二、Flume-NG 与 Scribe 比较 Flume-NG 是 Cloudera 提供的一个高可用的、分布式的海量日志采集、聚合和传输的系统,而 Scribe 是 Facebook 开源的日志收集系统。 ...

    scribe客户端所需jar包

    1. **scribe**:scribe是Facebook开源的日志收集系统,它提供了一种简单的方式来聚合分布在多个服务器上的日志数据。 2. **Thrift**:Thrift是一种接口定义语言和跨语言的RPC(远程过程调用)框架,它在scribe中...

    scribe详细安装文档

    scribe是一个广泛使用的日志聚合系统,主要设计用于收集、分类和转发分布式系统的日志数据。在大型分布式环境中,如Hadoop或Facebook等,scribe扮演着至关重要的角色,它允许各个节点将日志数据发送到中心位置进行...

    scribe-apache-1.5.0.zip

    结合这两个压缩包,我们可以构建一个Java应用,该应用能够从Scribe收集的日志数据中获取相关信息,然后利用Junrar库处理其中可能包含的RAR文件,例如,从日志文件中提取的归档日志数据。这种组合在处理如网络日志...

    Facebook大量相似高速数据实时日志收集系统

    **Scribe**:一个分布式日志收集系统,正在集成Zookeeper来提高系统的可靠性和一致性。 **HDFS**:一种可靠的分布式文件系统,其中`hdfsSync`和`ConcurrentReader`是关键组件,用于确保数据的一致性和并发访问。 *...

    海量日志处理开源系统比较.docx

    Flume是另一个日志收集系统,由Cloudera开发,用于聚合、聚合和移动大量日志数据。Flume的特点包括: (1) 易于配置:通过简单的配置文件,Flume可以灵活地定义数据流路径。 (2) 高可用性:Flume支持数据复制和...

    facebook-scribe-63e4824.tar

    Facebook Scribe 是一个开源的日志收集系统,最初由Facebook开发并贡献给开源社区。这个"facebook-scribe-63e4824.tar"安装包包含的是Scribe的一个特定版本,63e4824,它是一个源代码包,需要编译后才能在Linux或...

    scribe+hadoop+log4j+hive+mysql

    - **定义与作用**:Scribe 是 Facebook 开源的一款高性能的日志收集系统,主要用于从多个日志源收集日志信息,并将其存储在一个中央系统中,以便进行进一步的分析。 - **特点**:Scribe 可以处理大量数据流,并且...

Global site tag (gtag.js) - Google Analytics