在Windows环境中使用Etsy的StatsD

我需要在Windows环境中使用Etsy's Statsd ? 我的意图是创build一个.NET客户端使用Statsd。

最好的办法是安装一个安装了statsd和Graphite的Linux服务器。 然后,您只需编写一些C#代码,以便进行UDP调用即可将度量标准引入系统。

[更新(2014年6月23日):我遇到了一个名为statsd.net的statsd / Graphite克隆,看起来很有希望,但很大程度上缺乏方程的Graphite方面。 我仍然认为最好的选择是使用实际的statsd / Graphite项目,因为任何克隆都需要追赶。

我使用C#客户端NStatsD在我的Windows环境中运行statsd + graphite。

这里是我得到Linux VM设置的笔记:

注意:我知道有足够的Linux是危险的,但是否则是noob,可能会在不知不觉中做一些事情。

  1. 安装Ubuntu server 12.04。 我使用VirtualBox的开发,然后EC2的产品。
  2. 下载石墨面料到您的家庭文件夹。 这是一个脚本,将下载,编译和安装石墨和statsd。 它期望一个干净的盒子,并使用nginx的Web服务器。

    sudo apt-get install git

    git clone git://github.com/gingerlime/graphite-fabric.git

    cd graphite-fabric/

  3. 为织物安装prereq

    sudo apt-get install python-setuptools

  4. 下一步是下载,编译和安装,这可能需要一些时间。 在继续之前,在任何腻子ssh会话中设置一个活着的值是值得的。

  5. 现在按照gingerlime的说明安装在README.md中 – 包括需求部分。

  6. 根据gingerlime的指示安装statsd。
  7. 重启
  8. 执行netstat -nulp并观察8125是否正在使用以确认statsd正在侦听。
  9. 检查碳运行tail /opt/graphite/storage/log/carbon-cache/carbon-cache-a/listener.log 。 如果不是,请尝试sudo /etc/init.d/carbon start

现在,您的服务器正在运行,请尝试使用NStatsD客户端向其中添加一些计数器。

时区修正

这将在您的本地区域修复石墨到图表时间

  1. cd /opt/graphite/webapp/graphite
  2. sudo cp local_settings.py.example local_settings.py
  3. sudo chown www-data:www-data local_settings.py (用ls -l检查权限是否正确)
  4. sudo pico local_settings.py将TIME_ZONE设置为Australia/Sydney 。 发现你可以在/usr/share/zoneinfo/
  5. 保存并重新启动该框(不知道如何使其在不重新启动的情况下进行更改)

EC2说明

root在EC2上被禁用。 Fabric会提示您没有root密码。 使用fab的-i keyfile参数来替代你的ssh keyfile。

VirtualBox笔记

VBoxVMService很方便在我的Windows开发环境中自动运行虚拟机作为服务。

TL; DR:

  • statsd.net是一个可扩展的statsd克隆,有很多很酷的附加功能,并且设计用于以Windows为中心的环境。 首个产品发布时间为2013年5月29日
  • statsd-csharp-client是一个轻量级的statsd和statsd.net客户端,通过nuget可用于.net 3.5,4.0和4.5。

完全披露:我是这两个项目的作者,我写了他们,因为我不能把etsy的statsd服务用于生产 – 我的组织还没有准备好部署和支持基于nodejs的服务。

我在我的组织中遇到了同样的问题 – 我们是一个以Windows为中心的环境,希望从世界各地收集统计数据到一个单一的石墨库中。 我最初想到使用etsy的statsd,但是我的公司还没有准备好在生产中使用nodejs服务。 一路上我发现拥有自己的聚合服务意味着我可以做很多有趣的事情,比如添加memcached对可伸缩性的支持,添加新的聚合器等等。

该服务现在可以在主机模式下使用,并将从2013年5月29日起准备投入生产使用。

我们重新构建了纯.NET中的Graphite / StatsD。 目前正在生产环境中使用,每天处理约600M数据点。

数据 :

在这里输入图像说明

有不少语言的开源StatsD客户端实现,包括C#.NET。 Etsy在他们的github上提供了一个例子 ,同时也检查了AppFirst版本的statsd_clients 。

当前的statsd和nodejs版本允许您在Windows上运行statsd而不做任何修改。 statsd package.json文件已经包含脚本来安装和卸载它作为Windows服务。

安装过程将是:

  • 为Windows安装nodejs
  • 创建一个像C:\ StatsD的目录
  • 打开一个控制台窗口,然后执行cd \StatsD
  • 然后做npm install https://github.com/etsy/statsd.git
  • node_modules\statsd目录下创建你自己的config.json
  • 在控制台窗口中,执行cd node_modules\statsdnpm run-script install-windows-service

但是,Graphite只能在Linux上运行。

你需要一个statsd服务器来连接。
你还需要一个客户端库来连接它,例如这个和它的nuget包 。