carbon配置
2019獨角獸企業重金招聘Python工程師標準>>>
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.confcarbon.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-itemRewrite-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接受。
-----------------------------------------------------
歡迎關注我的微信公眾號 ^_^
轉載于:https://my.oschina.net/u/1263964/blog/706030
總結
- 上一篇: 工具地址
- 下一篇: Swift の 函数式编程