StatsD与Graphite联合作战

这4个文章是一个系列的,关于如何配置 StatsD,Graphite以及如何使用两者来显示访问信息:

  1. StatsD学习:http://blog.csdn.net/puncha/article/details/9083061
  2. 在Ubuntu Server 12.04 x64下安装Graphite: http://blog.csdn.net/puncha/article/details/9092765
  3. StatsD与Graphite联合作战:http://blog.csdn.net/puncha/article/details/9112293
  4. Graphite实战:http://blog.csdn.net/puncha/article/details/9137001


前几天学习了StatsD和Graphite,这几天开始把他们俩挂接起来。没想象中那么容易,费了好一番功夫。

1,创建一个新目录,开始一个新的NodeJs项目,比如SG (我已经上传到Github上了:https://github.com/puncha/StatsDnGraphite.git)

2,使用“npm install statsD --save”来安装StatsD服务器

3,进入“SG ode_modulesstatsD目录,拷贝一份exampleConfig.js并重名名为config.js。

4,修改config.js,改成如下内容(GraphiteHost要改成你Graphite服务器地址,端口默认识2003,前文也提到我们公司比较特殊,所以我改成了2013,backends我使用了graphite和console,这样就可以看到控制台输出了,debug设置成true,可以看到一些调试信息,legacyNamespace可以忽略掉):

{
    graphitePort: 2013,
    graphiteHost: "10.31.143.230",
    port: 8125, 
    backends: [ "./backends/graphite", "./backends/console" ],
    debug: true,
    legacyNamespace: false
}
5,使用”node stats.js config.js“来启动statsD服务。好了,到此为止,statsD服务器就配置好了。

6,接下来就是准备写程序了。

7,回到SG目录,使用”npm install statsD-client --save“来安装statsD-clinet库,这个库代码比较简单,是使用socket和statsD通讯的,一共也没几行代码。

8,创建app.js,写一些简单的测试代码:

var sdc_init = require('statsd-client')
var sdc = new sdc_init({ host: 'localhost' });
sdc.increment('my.test.1', 5);
sdc.close();
9,可以稍加测试,看看statsD有没有日志显示,graphite有没有生成一个叫stats.my.test.1的计数器。

10,顺利的话,你应该能看到图表了,但是还有一个重大的问题,精度问题!statsD默认是10s一个周期(可以修改config.js的flushInterval属性),而carbon的配置是60s,所以两者不同步,会导致各种问题(参见:https://github.com/etsy/statsd/issues/32),解决方法是修改/opt/graphite/conf/storage-schemas.conf(参见:http://graphite.readthedocs.org/en/0.9.10/config-carbon.html),在default_1min_for_1day前添加下面2段(每一个时间间隔必须是第一个的倍数,也就是说,第一个是10s,那么第二个不能是12s):

[statsD]
pattern = ^stats.
retentions = 10s:1d,30s:7d,1m:21d,15m:5y

[statsD-2]
pattern = ^stats_counts.
retentions = 10s:1d,30s:7d,1m:21d,15m:5y
修改完,重启carbon就可以了:

/opt/graphite/bin$ sudo python carbon-cache.py stop
/opt/graphite/bin$ sudo python carbon-cache.py start

稍加配置,你应该可以看到如下图表:



在本博文即将写完之时,发现别人写了类似的博文,将来说不定能参考下:(一共有4篇,这是其中之一)



原文地址:https://www.cnblogs.com/puncha/p/3876902.html