在 Windows 环境中使用 Etsy 的 StatsD
Posted
技术标签:
【中文标题】在 Windows 环境中使用 Etsy 的 StatsD【英文标题】:Using Etsy's StatsD in a Windows Environment 【发布时间】:2011-07-23 03:18:18 【问题描述】:在 Windows 环境中使用 Etsy 的 Statsd 需要什么?我的意图是创建一个.net 客户端来使用 Statsd。
【问题讨论】:
文章说它是一个 node.js 守护进程,所以我假设第一步是在 Windows 中构建 node.js。见github.com/joyent/node/wiki/…你至少做了那么多吗? 是的,我的问题更多源于安装石墨。 【参考方案1】:我使用 C# 客户端 NStatsD 在我的 Windows 环境中运行 statsd+graphite。
以下是我获取 Linux VM 设置的注意事项:
注意:我知道 Linux 很危险,但我是个菜鸟,可能会在不知不觉中做一些可怕的事情。
-
安装 Ubuntu 服务器 12.04。我将 VirtualBox 用于开发,然后将 EC2 用于生产。
将graphite-fabric 下载到您的主文件夹。这是一个将下载、编译和安装石墨和 statsd 的脚本。它需要一个干净的盒子并使用 nginx 作为 Web 服务器。
sudo apt-get install git
git clone git://github.com/gingerlime/graphite-fabric.git
cd graphite-fabric/
为fabric安装prereq
sudo apt-get install python-setuptools
接下来的步骤是下载、编译和安装,这可能需要一些时间。在继续之前,值得在任何 putty ssh 会话上设置保持活动状态。
现在按照 README.md 中的gingerlime 说明安装 - 包括要求部分。
按照gingerlime 的说明安装statsd。 重启 执行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 说明
在 EC2 上禁用了 root。 Fabric 提示输入您没有的 root 密码。将 -i keyfile
参数与 fab 一起使用,将您的 ssh 密钥文件改为。
VirtualBox 笔记
VBoxVMService 可以方便地在我的 Windows 开发环境中自动将 VM 作为服务运行。
【讨论】:
【参考方案2】: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 日起投入生产使用。
【讨论】:
看起来不错,我试试看。如果我觉得它有用,我会添加对 Redis 作为后端的支持。 我很想知道你什么时候会编写一个可以发送到 statsd.net 的 collectd 代理 :)【参考方案3】:最好的办法是安装一个安装了 statsd 和 Graphite 的 Linux 服务器。然后,您只需要编写一些 C# 代码来进行 UDP 调用,即可将指标导入系统。
[更新(2014 年 6 月 23 日):我遇到了一个名为 statsd.net 的 statsd/Graphite 克隆,它看起来很有希望,但在等式的 Graphite 方面很大程度上缺乏。我仍然认为最好的选择是使用实际的 statsd/Graphite 项目,因为任何克隆都需要追赶。]
【讨论】:
github @salerth 几个月前曾向 statsd master 提出了一个 C# 客户端示例的拉取请求 - 请参阅 github.com/etsy/statsd/pull/21。 嗨@bbrown,我是 statsd.net 的作者,可以告诉你我们功能齐全,除了直方图。 Statsd.net 目前在许多运行石墨的站点上运行。一个这样的网站在全球 15 个不同的托管地点运行 statsd.net,每天捕获超过 2.2 亿个指标。我不确定你是如何得出 Graphite 方面缺乏它的结论的——你能帮我理解你为什么这么想吗?为了完成,statsd.net 还支持服务器链接、MS SQL 暂存区、librato.com 输出等等。 我不认为它可以替代 Graphite。它看起来与 StatsD 的功能相匹配,并且可以作为 Carbon 的一种替代品(通过写入 SQL Server)。但它没有石墨的任何其他东西。据我所知,Graphite 在 Windows 上不起作用。因此,对于最初的提问者,statsd.net 不足以替代。无需防御和反对。 如果您认为 statsd.net 是 Graphite 的功能完整替代品,那您就错了。它缺少功能、图形和独立存储。 (我不认为你会声称它是替代品;它在 GitHub 页面上没有。) OP 的问题是“在 Windows 环境中使用 Etsy 的 Statsd 需要什么?” - 而 statsd.net 确实是一个合适的替代品。我同意,Graphite 不能在 Windows 上运行,但这不是他所要求的。当您说缺乏 Graphite 方面时,我以为您指的是 statsd.net 的输出能力。而且,既然我们是绅士,让我们摇一摇和弥补吧。【参考方案4】:我们在纯 .NET 中重新构建了 Graphite/StatsD。它目前用于生产环境,每天处理大约 6 亿个数据点。
Statsify:
【讨论】:
这看起来不错。我查看了 wiki,但找不到任何关于支持输出插件的内容。我可能忽略了,但支持吗?例如,我正在查看的用例是:将收集到的指标发送到各种不同的后端。【参考方案5】:有相当多的开源 StatsD 客户端实现以不同的语言提供,包括 C#.NET。 Etsy 在他们的 github 上提供了一个 examples,还可以查看 AppFirst 版本的 statsd_clients。
【讨论】:
【参考方案6】:当前的 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\statsd
和npm run-script install-windows-service
但是,Graphite 只能在 Linux 上运行。
【讨论】:
【参考方案7】:您需要一个 statsd 服务器来连接。 您还需要一个客户端库来连接它,例如this one 和 the nuget package 。
【讨论】:
以上是关于在 Windows 环境中使用 Etsy 的 StatsD的主要内容,如果未能解决你的问题,请参考以下文章
当给出相对路径时,不使用rss feed在etsy商店上传图像
Paypal:付款后如何更新运费,如 Etsy 所做的那样?