在Windows环境中使用Etsy的StatsD

时间:2011-03-25 18:30:13

标签: c# .net windows graphite

在Windows环境中,我需要使用Etsy的Statsd?我的意图是创建一个.net客户端来使用Statsd。

7 个答案:

答案 0 :(得分:15)

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

以下是获取Linux VM设置的注意事项:

注意:我知道Linux足够危险但是否则是一个菜鸟,可能会做一些无意识的事情。

  1. 安装Ubuntu Server 12.04。我使用VirtualBox for dev,然后使用EC2 for prod。
  2. graphite-fabric下载到您的主文件夹。这是一个下载,编译和安装graphite和statsd的脚本。它需要一个干净的盒子,并使用nginx作为Web服务器。

    sudo apt-get install git

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

    cd graphite-fabric/

  3. 安装fabric的先决条件

    sudo apt-get install python-setuptools

  4. 接下来的步骤是下载,编译和安装,这可能需要一些时间。在继续之前,在任何putty 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
  10. 现在您的服务器正在运行,请尝试使用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. 中使用的时区
    6. 保存并重新启动此框(不确定如何在不重新启动的情况下接收更改)
    7. EC2备注

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

      VirtualBox Notes

      VBoxVMService在我的Windows开发环境中自动将VM作为服务运行是很方便的。

答案 1 :(得分:7)

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日起投入生产使用。

答案 2 :(得分:5)

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

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

答案 3 :(得分:5)

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

Statsify

enter image description here

答案 4 :(得分:2)

有很多开源的StatsD客户端实现可用于不同的语言,包括C#.NET。 Etsy在他们的github examples上提供了一个,也查看了statsd_clients的AppFirst版本。

答案 5 :(得分:2)

当前的statsd和nodejs版本允许您在Windows上运行statsd而无需修改。 statsd package.json文件已包含用于安装和卸载Windows服务的脚本。

安装程序如下:

  • 安装nodejs for Windows
  • 创建一个类似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上运行。

答案 6 :(得分:1)

您需要一台statsd服务器才能连接 您还需要一个客户端库来连接它,例如this onethe nuget package