阿小信大人的头像
Where there is a Python, there is a way. 阿小信大人

ubuntu14.04安装配置StatsD2014-10-15 11:41

collectd收集系统metric,statsd可以收集任意的数据,比如你自己的程序,通过监听UDP包收集数据,通过TCP连接Graphite。

安装

ubuntu默认库中没有提供StatsD,所以只能自己编译安装。

安装所需依赖:

sudo apt-get install git nodejs devscripts debhelper

编译statsd:

mkdir ~/build
cd ~/build
git clone https://github.com/etsy/statsd.git
cd statsd
dpkg-buildpackage
cd ..

完成后会在~/build目录下生成一个.deb的文件。

因为statsd一旦安装就会立刻运行发送数据,所以建议先停止carbon服务,再安装。

sudo service carbon-cache stop
sudo dpkg -i statsd*.deb

完成后停掉statsd,再重启carbon

sudo service statsd stop
sudo service carbon-cache start

配置

编辑配置文件:

sudo vi /etc/statsd/localConfig.js

关闭legacy namespacing,修改为

{
  graphitePort: 2003
, graphiteHost: "localhost"
, port: 8125
, graphite: {
    legacyNamespace: false
  }
}

创建schema:

sudo vi /etc/carbon/storage-schemas.conf

添加

[statsd]
pattern = ^stats.*
retentions = 10s:1d,1m:7d,10m:1y

修改聚合配置:

sudo vi /etc/carbon/storage-aggregation.conf

内容为:

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

[max]
pattern = \.max$
xFilesFactor = 0.1
aggregationMethod = max

[count]
pattern = \.count$
xFilesFactor = 0
aggregationMethod = sum

[lower]
pattern = \.lower(_\d+)?$
xFilesFactor = 0.1
aggregationMethod = min

[upper]
pattern = \.upper(_\d+)?$
xFilesFactor = 0.1
aggregationMethod = max

[sum]
pattern = \.sum$
xFilesFactor = 0
aggregationMethod = sum

[gauges]
pattern = ^.*\.gauges\..*
xFilesFactor = 0
aggregationMethod = last

[default_average]
pattern = .*
xFilesFactor = 0.5
aggregationMethod = average

重新启动carbon:

sudo service carbon-cache stop      ## wait a few seconds here
sudo service carbon-cache start

启动statsd

sudo service statsd start

访问graphite,可以看到statsd对本身的一些记录数据。

向statsd发送数据:echo "metric_name:metric_value|type_specification" | nc -u -w0 127.0.0.1 8125

type有Gauges|gCounts|cSets|sTimers|ms

echo "sample.gauge:14|g" | nc -u -w0 127.0.0.1 8125
echo "sample.count:1|c" | nc -u -w0 127.0.0.1 8125
echo "sample.set:50|s" | nc -u -w0 127.0.0.1 8125
echo "sample.timer:512|ms" | nc -u -w0 127.0.0.1 8125

用python客户端向statsd发送数据

pip install python-statsd

In [1]: import statsd

In [2]: gauge = statsd.Gauge('Python_metric')

In [3]: gauge.send('some_value', 15)
Out[3]: True

In [4]: timer = statsd.Timer('Python_metric')

In [5]: timer.start()

In [6]: timer.stop('some_timer')
Out[6]: True

In [7]: counter = statsd.Counter('Python_metric')

In [8]: counter += 1

如果您觉得从我的分享中得到了帮助,并且希望我的博客持续发展下去,请点击支付宝捐赠,谢谢!

若非特别声明,文章均为阿小信的个人笔记,转载请注明出处。文章如有侵权内容,请联系我,我会及时删除。

#Linux/Mac#  
分享到:
阅读[2046] 评论[1]

你可能也感兴趣的文章推荐

本文最近访客

发表评论

#1 网友202.*.*.48[济南]15945 :
为什么我按这个步骤做会出错
2015-07-04 15:29 回复