文档章节

carbon配置

摩云菜
 摩云菜
发布于 2016/07/05 09:29
字数 2313
阅读 281
收藏 0

carbon配置

所有carbon的配置文件都放在/opt/graphite/conf/目录下。如果你的graphite是新安装的,那么conf文件夹下不会有任何.conf的文件存在,但是有很多.conf.example的文件。你只需要把.conf.example相应的文件复制一份,并且把.example后缀去掉,然后就生成了你自己的配置文件,再对配置文件进行配置就可以了:

pushd /opt/graphite/conf
cp carbon.conf.example carbon.conf
cp storage-schemas.conf.example storage-schemas.conf

carbon.conf

这是一个主要的配置文件,定义了每个carbon daemon的运行环境。

配置文件里面的每个配置项,在配置文件里面都有相应的注释和说明。

配置文件被分成了几个部分,用来配置不同的daemon。carbon-cache使用[cache]这个部分的配置项,carbon-relay使用[relay]这部分的配置项,carbon-aggregator使用[aggregator]这部分的配置项。如果你是第一次使用graphite,除了[cache]这部分配置需要修改外,其他的两个部分的配置可以先不用关心。

提示:

carbon-cache和carbon-relay可以运行在一台机器上。试着交换列在[cache]和[relay]下面的LINE_RECEIVER_PORT和PICKLE_RECEIVER_PORT两个默认的端口,这样指标发送端不需要做任何修改,就可以把指标发送给carbon-relay。在设置[relay]下面的DESTINATIONS字段的时候,记得[relay]下面的PICKLE_RECEIVER_PORT端口已经修改成新的端口了。

storage-schemas.conf

这个配置文件详细地定义了数据的采样频率,存储时长以及指标的的匹配规则。Whisper数据库将使用这个配置文件来生成数据库里面的所有数据点。

一些重要的提示:

1:这个文件里面可能会有多个section

2:匹配数据的时候,文件里面的section是从上到下顺序遍历的。

3:匹配规则使用的是正则表达式

4:第一个匹配上metrics的名字的规则会被使用。

5:收到第一个metrics的时候设置采样频率

6:改变这个配置文件不会改变已经生成的.wsp文件,使用whisper-resize.py来改变已经生成的文件。

规则由三行组成:

1:名字,定义在方括号里面

2:正则表达式,定义方式:pattern=xxx

3:数据采样频率,定义方式:retentions=xxx

采样频率这一项可一定义多个采样频率,使用逗号分隔开

采样频率的定义使用到下面一些后缀:

1:s : 秒

2:m :分钟

3:h :小时

4:d:天

5:y:年

下面是个简单的例子:

[garbage_collection]
pattern = garbageCollections$
retentions = 10s:14d

名字garbage_collection主要是写日志的需求,当有metrics匹配上这个规则后,这个名字会出现在create.log里面。

所有以garbageCollections结尾的metrics都会匹配到这个规则。比如说com.acmeCorp.instance01.jvm.memory.garbageCollections可以匹配上这个规则,但是com.acmeCorp.instance01.jvm.memory.garbageCollections.full 不会匹配上这个规则。

retentions这一行的意思是:采样频率为10秒采样一次,并且保存14天的数据。

下面是个复杂的例子:

[apache_busyWorkers]
pattern = ^servers\.www.*\.workers\.busyWorkers$
retentions = 15s:7d,1m:21d,15m:5y

在这个例子里面,假设你的指标数据格式是servers.<servername>.<metrics>,这个正则表达式可以匹配名字以‘www’开头,接着可以是任何字符,然后以‘‘.workers.busyWorkers’结尾的服务器名字。

这个例子使用了多个采样频率。设置指标采样频率的一般规则是高精度短时长到低精度长时长– whisper会根据指定的聚合规则(默认是取平均值)对指标进行聚合。

通过使用多个retentions,你可以存储很长时间的数据,但是又不浪费磁盘空间。

比如说你按1m:1y,1h:5y这个retentions来存储销售额数据。如果你想知道去年1月1号总共的销售额,然后你可以从whisper数据库里面查到24个数据点,每个小时一个数据点。然后你把每个数据点乘以60,就得到了每个小时的总销售额。

storage-aggregation.conf

这个配置文件里面定义了怎么样把高精度数据聚合成低精度数据的数据聚合规则。定义格式跟storage-schema.conf类似。但是有以下几点必须注意:

1:这个文件是可选的,如果没有提供,则会使用默认的配置。

2:配置里面没有retentions这一项了,而是增加了xFilesFactor和aggregationMethod这两项

3:xFilesFactor必须是0到1之间的浮点型数值,这个数值指定了高精度的数据必须有多少个非空值,才能把这些高精度值聚合成一个非空的低精度值。默认值是0.5。

4:aggregationMethod指定了用于聚合的函数,合法的函数有:average, sum, min, max和last。默认值是average。

5:当收到第一个指标数据的时候,这些值会被设置。

6:修改这个配置文件对已经生成的.wsp文件不会产生影响。可以使用whisper-set-aggregation-method.py来修改已经生成的.wsp文件。

下面是个例子:

[all_min]
pattern = \.min$
xFilesFactor = 0.1
aggregationMethod = min

上面这个例子将匹配所有以.min结尾的指标。使用的聚合方式是取最小值。高精度的数据只需要有10%的非空数据就能聚合成一个低精度数据。

如果xFilesFactor或者aggregationMethod没有设置,将会使用默认值。

聚合参数和retentions参数分开设置是因为聚合规则的定义由要收集的数据类型决定,而retentions规则由数据的存储容量和重要性来决定。

relay-rules.conf

当需要把特定的指标数据发送给特定的后端时,需要定义相关的relay规则。Relay规则是由carbon-relay这个模块来处理的。你可以使用正则表达式来过滤指标并且定义过滤出来的指标要被发送给哪个后端服务器。

例子:

[example]
pattern = ^mydata\.foo\..+
servers = 10.1.2.3, 10.1.2.4:2004, myserver.mydomain.com

你必须至少定义一个section作为默认设置。

aggregation-rules.conf

这个配置文件里面定义的规则可以帮助你在收集到多个指标的时候,把多个指标聚合成一个指标。跟其他的配置文件不一样,这个配置文件一旦修改,立马生效。要使用这个功能,必须运行carbon-aggregation。

这个文件里面每一行的格式如下所示:

<env>.applications.<app>.<server>.<metric>

比如你可以配置像下面这样的聚合规则:

<env>.applications.<app>.all.requests (60) = sum <env>.applications.<app>.*.requests
<env>.applications.<app>.all.latency (60) = avg <env>.applications.<app>.*.latency

如果你配置了上面这样的聚合规则,那么当你收到如下指标的时候:

prod.applications.apache.www01.requests
prod.applications.apache.www02.requests
prod.applications.apache.www03.requests
prod.applications.apache.www04.requests
prod.applications.apache.www05.requests

这些指标数据会被送到统一的聚合缓冲区里面,60秒后,carbon-aggregation会把缓冲区里面的这些指标数据相加,然后生成一个‘prod.applications.apache.all.requests’指标数据。

carbon-aggregation除了这个使用场景外,还有另外一个常用的使用场景,就是用来对多个同样的指标数据进行聚合。当你需要从多个主机上收集相同的指标时,或者指标的发送频率高于事先定义好的收集频率时,使用carbon-aggregation对这些指标进行聚合会非常方便。

rewrite-rules.conf

rewrite 规则允许你使用Python的正则表达式对收到的指标名进行重命名。跟其他的配置文件不一样,这个配置文件一旦修改,立马生效。要使用这个功能,必须运行carbon-aggregation。

这个配置文件里面的每一行,都使用下面的格式定义:

regex-pattern = replacement-text

所有匹配上regex-pattern的指标名称都会被捕获,然后被重命名成replacement-text。regex-pattern必须是合法的Python正则表达式,replacement-text可以是任意的值。你也可以使用捕获组:

^collectd\.([a-z0-9]+)\. = \1.system.

使用这个规则可以导致下面的结果:

collectd.prod.cpu-0.idle-time => prod.system.cpu-0.idle-item

Rewrite-rules.conf由[pre]和[post]两个部分组成。指标刚被收到的时候要改名,使用pre里面的规则。数据聚合以后要改名使用post里面的规则。

例子:

[post]
_sum$ =
_avg$ =

这个定义的意思是说,数据聚合以后,去掉所有以_sum或者以_avg结尾的指标名称里面的_sum或者_avg。

whitelist and blacklist

使用whitelist这个功能可以让carbon daemons只接受白名单里面的指标,拒绝黑名单里面的指标。设置carbon.conf里面的USE_WHITELIST字段可以启用这个功能。当很多指标发送给graphite或者有人发送了很多没有的指标的时候,这个功能会很有用。

Carbon daemon会在GRAPHITE_CONF_DIR路径下搜索whitelist.conf 和 blacklist.conf。配置文件里面的每一行都定义了一个匹配指标的正则表达式。如果whitelist.conf不存在,或者里面的内容是空的,那么所有的指标都会被graphite接受。

-----------------------------------------------------

欢迎关注我的微信公众号 ^_^

© 著作权归作者所有

共有 人打赏支持
摩云菜
粉丝 27
博文 34
码字总数 42147
作品 0
闵行
高级程序员
carbon进程

Carbon进程 当我们谈起”Carbon”的时候,我们指的是一个或者多个carbon进程,Graphite的存储后端就由这些进程所组成。在最简单的安装场景下,只有一个carbon进程carbon-cache.py。 这份文档...

摩云菜
2016/07/05
104
0
使用graphite和grafana进行应用程序监控

graphite+grafana 介绍 grafana,按照官方的说法是 。grafana 负责数据的展示,可以配置各种不同的数据源,其中包括 graphite。 graphite 包含多个模块,这里我们使用的模块包括: Whisper:...

ChanningBJ
2016/11/21
631
0
安装Collectd+Statsd + Graphite 监控openstack swift

Graphite 安装必要软件包: $ sudo apt-get install apache2 libapache2-mod-wsgi python-django python-twisted python-cairo python-pip python-django-tagging 用 pip 安装 whisper (简单......

icheer
2013/12/03
0
0
graphite-web只能展示最新6个小时的数据

业务需求描述:kafka的监控在grfana的展示 监控方案:kafkaoffsetmonitor + graphite + grafana kafka信息描述: kafka的0.9.x版本位移offset信息不在保存在zookeeper上面了,所有kafkaoffset...

liuhuang9496
2017/04/06
0
0
日期及时间处理包 Carbon 在 Laravel 中的简单使用

在编写 PHP 应用时经常需要处理日期和时间,这篇文章带你了解一下 Carbon – 继承自 PHP DateTime 类的 API 扩展,它使得处理日期和时间更加简单。Laravel 中默认使用的时间处理类就是 Carb...

郭周园
09/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

tomcat 设置虚拟路径

Tomcat无法管理<Tomcat安装目录>/webapps目录以外的Web应用程序 在server.xml中配置虚拟目录 <Context path="/imgDetail" docBase="/pictureServer/img/resource"/> 配置前访问图片路径:h......

west_coast
11分钟前
0
0
数据结构

wu

盼望明天
25分钟前
0
0
Bash脚本输入参数的使用

Bash脚本输入参数的使用 Bash脚本传入的参数,在脚本中以位置的形式进行访问,即 $n 。例如,$1 为执行脚本的第一个参数,$2 为执行脚本的第二个参数。另外Bash中还提供了一些其它的便捷操作...

小陶小陶
41分钟前
2
0
多线程场景下,触发OOM的线程是否会影响其他线程的工作

public static void main(String[] args) { Thread t1 = new Thread(new Runnable() { @Override public void run() { int i = 0;......

麦馍
45分钟前
2
0
模拟Dubbo的zookeeper一致性Hash发现

接之前一篇<手写zookeeper来模拟dubbo的注册/发现>,使用一致性Hash来进行查找需要寻找的服务. Hash处理接口 public interface HashFunc { public Long hash(Object key);} 一致性Has...

算法之名
57分钟前
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部