Scribe配置文件解析

2023-11-09

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

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不能处理这些消息的话,消息将被丢弃。建议使用缓存来指一个定二级存储来处理失败的日志。

<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

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

<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的数量编号生成。

<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,忽略所有的消息。

<store>
category=tps_report*
type=null
</store>

Multi Store Configuration

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

report_success  

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

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


参考:

https://github.com/facebook/scribe/wiki/Scribe-Configuration

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scribe配置文件解析 的相关文章

  • error: invalid conversion from ‘void*‘ to ‘char*‘ [-fpermissive]

    include
  • 【计算机视觉】InvaSpread 讲解

    任何的书写错误 排版错误 概念错误等 希望大家包含指正 在阅读本篇之前建议先学习 机器学习 噪声对比估计 NCE 计算机视觉 MoCo 讲解 计算机视觉 InstDis 讲解 InvaSpread 在 InvaSpread 中 负样本的个数
  • 点云数据学习总结之一:点云数据存储格式

    最近研究点云数据 找了下相关的资料 看了许多的博文 下面总结了我认为比较写的比较好的博文链接 有需要的可以看下 刚刚才研究 所以可能不全 欢迎大家补充 共同学习 同时 未避免转载的博客链接失效 所以对博客内容进行了截图 如果原博主觉得受到侵
  • RestHighLevelClient封装使用,Java调用ES客户端 [支持ES6.x]

    前言 之前做项目的时候 需要用到Es的操作 本来想使用EsJpa的 即SpringDataElasticsearch 结果项目采用的是SpringBoot1 x版本 不得已 只要自己封装RestHighLevelClient来使用 不过网上
  • 蓝桥杯python技能升级

    只通过了百分之40 后面超时了 给没有头绪的伙计们一个思路吧 也请大佬给一个更好的解题思路 import math n m map int input split max 0 此为加的最大点 当加的次数小于0的时候 return0 if m
  • el-select下拉框只回显value不回显label的原因以及解决方法

    el select的采用的是map的key value结构 因此只显示value而不显示label的原因是 value的类型不正确 只需要在回显之前加上一行代码 将这个value转换成对应的类型即可 我这个里面需要的int类型 因此转成in
  • 集合相似度(PAT)

    题目链接 https www patest cn contests gplt L2 005 一开始用map超时了 总是有一组数据超时 当时觉得很纳闷 后来学到了 其实set也是可以开数组的 map也是 include
  • ubuntu 下安装chrome浏览器

    1 将google chrome stable current amd64软件复制移动到家目录下 2 打开终端 路径在家目录下 3 依次运行下面三条命令 sudo apt get install google chrome stable s
  • Swift的几种传值方式

    传值方式 在进行页面跳转过程中无法避免需要进行值的传递 那么值的传递可以分为正向传值和反向传值 例如在SourceViewController跳转至DestinationViewController的过程中需把前者的属性值传递给后者称为正向
  • 【系列 1】手写vue响应式原理

    手写vue响应式原理 首先我们看看原生 vue 做了什么 可见 vm 第一层与 data 内都能获取到 data 数据 并且其数值都进行了 ge
  • 王道训练营-C语言-1

    1 字符 include
  • 【热门框架】Maven中聚合,继承指的是什么?有什么作用?

    Maven中的聚合和继承是两个重要的功能 用于管理多个项目的共同部分 1 聚合 Maven中的聚合 Aggregation 指的是将多个子项目聚合成一个父项目的过程 聚合的语法如下 xml
  • 数据库初探(1)————关于InnoDB和MyISAM两种数据库存储引擎

    1 mysql中最常见的两种数据库引擎 InnoDB存储引擎 InnoDB存储引擎是Mysql的默认事务引擎 也是最重要 使用最广泛的存储引擎 它被设计用来处理大量的短期事务 短期事务大部分情况下都是可以正常提交的 很少回滚 MyISAM存
  • 【超详解】JavaWeb三大组件讲解

    文章目录 前言 一 Servlet 二 Filter 三 Listener 总结 前言 JavaWeb三大组件指的是 Servlet Filter Listener 三者提供不同的功能 然而很多人可能只用过其中一个或者两个 Servlet
  • 创建React项目

    在开发React项目前最关键的当然是项目的创建 现在的前端工程化使得前端项目的创建也变得越来越复杂 在这里介绍三种从零开始创建React项目的方式 分别是在浏览器中直接引入 使用官方脚手架create react app 使用Webpack

随机推荐

  • 不会盗QQ,还当什么程序员?

    上面这个段子估计很多朋友都看过 程序员被黑过无数次 在其他人眼中 仿佛我们需要写得了木马 翻得了围墙 修得了电脑 找得到资源 但凡是跟计算机沾点边的 咱都得会才行 段子归段子 言归正传 对于咱们程序员来说 多多少少了解一些信息安全的技术知识
  • 打印HashMap的方法分享

    HashMap简介 Hash Map是哈希表基于 Map 接口的实现类 HashMap用于存储数据 允许使用null值和null键 除了非同步和允许使用 null 之外 HashMap 类与 Hashtable 大致相同 HashMap不保
  • 区块链三加一:什么是量化交易

    量化交易是指以先进的数学模型替代人为的主观判断 利用计算机技术从庞大的历史数据中海选能带来超额收益的多种 大概率 事件以制定策略 极大地减少了投资者情绪波动的影响 避免在市场极度狂热或悲观的情况下作出非理性的投资决策 量化交易 有时候也称自
  • Kali Linux Armitage生成被控端和主控端

    目录 说明 使用 Armitage生成被控端和主控端 说明 按照 Kali Linux2 网络渗透测试实践指南 第二版 第八章操作 仅供学习讨论使用 请勿进行非法操作 使用 Armitage生成被控端和主控端 选中 payload 然后选择
  • 深入解析锂电池保护电路工作原理

    1 锂离子电池介绍 锂离子电池是一种二次电池 充电电池 它主要依靠锂离子在正极和负极之间移动来工作 在充放电过程中 Li 在两个电极之间往返嵌入和脱嵌 充电时 Li 从正极脱嵌 经过电解质嵌入负极 负极处于富锂状态 放电时则相反 锂离子电池
  • 对象不支持“addEventListener”属性或方法 ie8 jquery

    解决方法 1 请查看你使用的jquery版本 2 jQuery 2 x 已经不支持IE9以下的IE浏览器 如果你想继续支持IE6 7 8 请使用jQuery 1 x版本 最新版本 jQuery 1 11 0 3 如果要兼容 IE 6 7 8
  • 假设检验/T检验/F检验/Z检验/卡方检验

    显著性水平 一个概率值 原假设为真时 拒绝原假设的概率 表示为 alpha 常用取值为0 01 0 05 0 10 什么是P值 p值是当原假设为真时样本观察结果及更极端结果出现的概率 如果P值很小 说明这种情况发生的概率很小 如果这种情况还
  • react面试题(三)

    1 setState 何时同步何时异步 1 setState 只在合成事件 react为了解决跨平台 兼容性问题 自己封装了一套事件机制 代理了原生的事件 像在jsx中常见的onClick onChange这些都是合成事件 和钩子函数 生命
  • hive遇到的错误

    1 数据库的命名不能用数字开头 0 jdbc hive2 192 168 171 151 10000 gt create database 0328 不区分大小写字母 Error Error while compiling statemen
  • 离散数学期末复习-求主范式

    文章目录 析取范式与合取范式 定义 简单析取式 析取式 简单合取式 合取式 析取范式 合取范式 范式 公式A的析取范式 公式A的合取范式 命题公式的范式 求公式A的范式的步骤 求公式的范式举例 极大项与极小项 定义 主析取范式与主合取范式
  • 银河麒麟操作系统(kylin os)学习

    poweroff 关机命令 sudo su 进入超级用户 su username 切普通用户 Ctrl Alt t 打开终端terminal窗口 Ctrl Alt d 最小化全部应用 然后显示桌面 dpkg i libqt5 deb 安装d
  • 安卓app与阿里云服务器的无线通信(非局域网)

    参考 安卓app与阿里云服务器的无线通信 非局域网 作者 图触靓 发布时间 2020 08 01 16 13 14 网址 https blog csdn net bhbhhyg article details 107732156 目录 写在
  • react学习笔记9:循环处理和数组map函数

    为什么80 的码农都做不了架构师 gt gt gt 在我们实际开发中 循环是必不可少的 尤其在表格中的数据显示 我们会把ajax的json数据显示在表格中 1 一个最简单的例子 import React from react import
  • STM32与FPGA之间的SPI通讯

    STM32与FPGA之间的SPI通讯 SPI通讯协议 SPI协议物理层 协议层 STM32的SPI特性及架构 STM32的SPI架构 SPI初始化结构体 STM32标准库 STM32实验代码 FPGA从机代码编写 实验结果 SPI通讯协议
  • 车间束流变压器定标-2021.2.3

    标定了这么多次 感觉这是最来劲的一次 就兴奋的贴在这里了 无他 因为国产精品示波器的使用 试了一下极限 结果喜人 眼神好的留意一下最后一幅图 看看惊不惊艳 惨不忍睹的顶降还是无视吧 加工的这一批次的磁环太丿了 车间束流变压器定标 2021
  • Ubuntu安装SSH/FTP/NFS

    sudo apt get update 一 SSH sudo apt get install openssh server sudo ps e grep ssh 有出现sshd说明ssh服务已经启动 负责执行 sudo service ss
  • 在Windows和树莓派之间通过WinSCP传送文件,并开启root用户远程登录。

    目录 下载WinSCP工具 设置树莓派root用户密码 打开root远程登录的权限 可选 使用WinSCP远程登录 下载WinSCP工具 要想在Windows和树莓派之间传输文件 我们需要借助一个工具WinSCP WIn指的是Windows
  • 【VUE】vue组件之间通信有几种方式

    vue组件之间通信可分为以下几种 props和 emit 也就是常说的父子组件通信 常用 attrs和 listeners 中央事件总线 非父子组件间通信 v model provide和inject parent和 children vu
  • 新手编写IntelliJ IDEA插件

    需求目的 可能你会想什么场景会需要用到插件开发 其实插件开发算是一种通用的解决方案 由服务平台定义标准让各自使用方进行自需的扩展 这就像我们非常常用的 P3C 代码检查插件 代码审计插件 脚手架工程创建插件 自动化API提取插件 单元测试统
  • Scribe配置文件解析

    Scribe的配置文件由全局的section和一个或多个store的section组成 这篇来了解一下scribe的配置文件 在源码包的examples目录下有多个配置文件实例 examples example1 conf 模拟服务端 ex