我需要在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,可能会在不知不觉中做一些事情。
下载石墨面料到您的家庭文件夹。 这是一个脚本,将下载,编译和安装石墨和statsd。 它期望一个干净的盒子,并使用nginx的Web服务器。
sudo apt-get install git
git clone git://github.com/gingerlime/graphite-fabric.git
cd graphite-fabric/
为织物安装prereq
sudo apt-get install python-setuptools
下一步是下载,编译和安装,这可能需要一些时间。 在继续之前,在任何腻子ssh会话中设置一个活着的值是值得的。
现在按照gingerlime的说明安装在README.md中 – 包括需求部分。
netstat -nulp
并观察8125是否正在使用以确认statsd正在侦听。 tail /opt/graphite/storage/log/carbon-cache/carbon-cache-a/listener.log
。 如果不是,请尝试sudo /etc/init.d/carbon start
现在,您的服务器正在运行,请尝试使用NStatsD客户端向其中添加一些计数器。
时区修正 :
这将在您的本地区域修复石墨到图表时间
cd /opt/graphite/webapp/graphite
sudo cp local_settings.py.example local_settings.py
sudo chown www-data:www-data local_settings.py
(用ls -l
检查权限是否正确) sudo pico local_settings.py
将TIME_ZONE设置为Australia/Sydney
。 发现你可以在/usr/share/zoneinfo/
EC2说明
root在EC2上被禁用。 Fabric会提示您没有root密码。 使用fab的-i keyfile
参数来替代你的ssh keyfile。
VirtualBox笔记
VBoxVMService很方便在我的Windows开发环境中自动运行虚拟机作为服务。
TL; DR:
完全披露:我是这两个项目的作者,我写了他们,因为我不能把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服务。
安装过程将是:
cd \StatsD
npm install https://github.com/etsy/statsd.git
node_modules\statsd
目录下创建你自己的config.json
cd node_modules\statsd
和npm run-script install-windows-service
但是,Graphite只能在Linux上运行。
你需要一个statsd服务器来连接。
你还需要一个客户端库来连接它,例如这个和它的nuget包 。