所有carbon的配置文件都放在/opt/graphite/conf/目录下。如果你的graphite是新安装的,那么conf文件夹下不会有任何.conf的文件存在,但是有很多.conf.example的文件。你只需要把.conf.example相应的文件复制一份,并且把.example后缀去掉,然后就生成了你自己的配置文件,再对配置文件进行配置就可以了:
cd
/opt/graphite/conf
cp carbon.conf.example carbon.conf
cp storage-schemas.conf.example storage-schemas.conf
1、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端口已经修改成新的端口了。
2、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 =
10
s:
14
d
名字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 =
15
s:
7
d,
1
m:
21
d,
15
m:
5
y
在这个例子里面,假设你的指标数据格式是servers.<servername>.<metrics>,这个正则表达式可以匹配名字以‘www’开头,接着可以是任何字符,然后以‘‘.workers.busyWorkers’结尾的服务器名字。
这个例子使用了多个采样频率。
设置指标采样频率的一般规则是高精度短时长到低精度长时长
–
whisper会根据指定的聚合规则(默认是取平均值)对指标进行聚合。
通过使用多个retentions,你可以存储很长时间的数据,但是又不浪费磁盘空间。
比如说你按1m:1y,1h:5y这个retentions来存储销售额数据。如果你想知道去年1月1号总共的销售额,然后你可以从whisper数据库里面查到24个数据点,每个小时一个数据点。然后你把每个数据点乘以60,就得到了每个小时的总销售额。
3、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规则由数据的存储容量和重要性来决定。
4、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作为默认设置。
5、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对这些指标进行聚合会非常方便。
6、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.s
ystem.
使用这个规则可以导致下面的结果:
collectd.prod.cpu
-0.i
dle-time => prod.system.cpu
-0.i
dle-item
Rewrite-rules.conf由[pre]和[post]两个部分组成。指标刚被收到的时候要改名,使用pre里面的规则。数据聚合以后要改名使用post里面的规则。
例子:
[post]
_sum
$
=_avg
$
=
这个定义的意思是说,数据聚合以后,去掉所有以_sum或者以_avg结尾的指标名称里面的_sum或者_avg。
7、whitelist and blacklist
使用whitelist这个功能可以让carbon daemons只接受白名单里面的指标,拒绝黑名单里面的指标。设置carbon.conf里面的USE_WHITELIST字段可以启用这个功能。当很多指标发送给graphite或者有人发送了很多没有的指标的时候,这个功能会很有用。
Carbon daemon会在GRAPHITE_CONF_DIR路径下搜索whitelist.conf 和 blacklist.conf。配置文件里面的每一行都定义了一个匹配指标的正则表达式。如果whitelist.conf不存在,或者里面的内容是空的,那么所有的指标都会被graphite接受。
https://my.oschina.net/u/1263964/blog/706030