在Windows环境下使用Etsy的StatsD

22

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


1
这篇文章说它是一个node.js守护进程,所以我假设第一步是在Windows上构建node.js。请参阅https://github.com/joyent/node/wiki/Building-node.js-on-Cygwin-(Windows)?view。你至少做到了这一点吗? - Dan Esparza
是的,我的问题更多地源于安装石墨烯。 - Christopher
7个回答

15

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

以下是我为Linux虚拟机设置的笔记:

注意:我对Linux有一定了解,但其他方面是个新手,可能会做出无意识的可怕事情。

  1. 安装Ubuntu Server 12.04。我在开发时使用VirtualBox,在生产环境中使用EC2。
  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. 现在按照README.md中的gingerlime说明进行安装,包括要求部分。

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

现在您已经运行了服务器,请尝试使用NStatsD客户端将一些计数器抛到其中。

时区修复:

这将修复本地时区下Graphite绘制图形的时间问题。

  1. cd /opt/graphite/webapp/graphite 进入Graphite的目录
  2. sudo cp local_settings.py.example local_settings.py 复制配置文件模板
  3. sudo chown www-data:www-data local_settings.py (通过 ls -l 检查权限)将文件所有者更改为 www-data 用户
  4. sudo pico local_settings.py 将 TIME_ZONE 设置为类似于 Australia/Sydney 的内容。在 /usr/share/zoneinfo/ 中可以查看可用的时区
  5. 保存并重启设备(不确定如何在不重启设备的情况下使更改生效)

EC2 注意事项

EC2 上禁用了 root 用户。Fabric 会提示输入 root 密码,但您没有密码。使用 -i keyfile 参数将您的 ssh keyfile 文件传递给 fab 命令。

VirtualBox 注意事项

VBoxVMService 工具对于在 Windows 开发环境中自动运行 VM 很有用。


7

简述:

  • 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为中心的环境,想要从世界各地收集统计信息并存储到单个graphite存储库中。我最初考虑使用etsy的statsd,但我的公司还没有准备好在生产中使用nodejs服务。在此过程中,我发现拥有自己的聚合服务意味着我可以做很多有趣的事情,比如添加可扩展性的memcached支持,添加新的聚合器等等。

目前该服务可以在控制台模式下使用,从2013年5月29日起将准备好用于生产环境。


看起来不错,我会试一试。如果我觉得有用的话,我会添加对Redis作为后端的支持。 - DanB
我很好奇你何时会编写一个能够发送到statsd.net的collectd代理程序 :) - Joe Phillips

5
我们已经用纯.NET重新构建了Graphite/StatsD。目前它正在生产环境中使用,每天处理约6亿个数据点。
Statsify:
图片:https://istack.dev59.com/BG0bk.webp Statsify

这看起来不错。我查看了维基,但没有找到任何关于输出插件支持的提及。我可能疏忽了,但是是否支持呢?例如,我正在考虑的用例是:将收集的指标发送到各种不同的后端。 - ayaz

5
你最好的选择是拥有一个安装了statsd和Graphite的Linux服务器。然后,您只需要编写一些C#代码来进行UDP调用,将指标传递到系统中。
[更新(6/23/2014):我发现了一个名为statsd.net的statsd/Graphite克隆版本,看起来很有前途,但在Graphite方面大多数缺失。我仍然认为最好的选择是使用实际的statsd/Graphite项目,因为任何克隆都必须追赶。]

1
@salerth 在几个月前向 statsd 主分支提交了一个 C# 客户端示例的 pull-request - 请参见 https://github.com/etsy/statsd/pull/21。 - Peter Mounce
3
嗨@bbrown,我是statsd.net的作者,可以告诉你我们已经完备了,除了直方图之外。Statsd.net目前已在许多运行Graphite的站点上运行。其中一个站点在全球15个不同的托管位置上运行statsd.net,每天捕获超过2.2亿的指标数据。我不确定您是如何得出Graphite方面缺少它的结论的-您能帮助我理解您为什么这样认为吗?为了完整起见,statsd.net还支持服务器链接,MS SQL分段区域,librato.com输出等等。 - user141682
1
我并没有将它视为Graphite的替代品。它似乎与StatsD匹配功能,并可作为Carbon的一种替代品(通过写入SQL Server)。但它没有Graphite的其他任何东西。据我所了解,Graphite不适用于Windows。因此对于最初的提问者来说,statsd.net并不能成为足够的替代品。没必要变得防守和贬低。 - bbrown
1
如果你认为statsd.net是Graphite的功能完整替代品,那么你就错了。它缺少函数、绘图和自包含存储。(我不认为你会声称它是一个替代品;它在GitHub页面上根本没有出现。) - bbrown
2
OP的问题是“在Windows环境中使用Etsy的Statsd需要什么?”- statsd.net确实是一个适合的替代品。我同意,Graphite无法在Windows上运行,但这不是他所问的。当你说Graphite方面缺乏时,我以为你指的是statsd.net的输出能力。既然我们都是绅士,让我们握手言和吧。 - user141682
1
实际上,他在我的回答之前留下的后续评论表明,他遇到的问题是Graphite。 - bbrown

2

针对不同语言,有很多开源的StatsD客户端实现,包括C#.NET。Etsy在他们的github上提供了一个 示例,同时还可以看看AppFirst版本的 statsd_clients


2
当前的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上运行。

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接