首页 文章

在Windows环境中使用Etsy的StatsD

提问于
浏览
21

在Windows环境中使用Etsy的Statsd需要什么?我的目的是创建一个.net客户端来使用Statsd .

7 回答

  • 14

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

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

  • 4

    我使用C#client NStatsD在我的Windows环境中运行了statsd graphite .

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

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

    • 安装Ubuntu Server 12.04 . 我使用VirtualBox for dev,然后使用EC2 for prod .

    • graphite-fabric下载到您的主文件夹 . 这是一个下载,编译和安装graphite和statsd的脚本 . 它需要一个干净的盒子,并使用nginx作为Web服务器 .

    sudo apt-get install git

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

    cd graphite-fabric/

    • 安装Fabric的先决条件

    sudo apt-get install python-setuptools

    • 接下来的步骤是下载,编译和安装,这可能需要一些时间 . 值得在继续之前在任何putty ssh会话上设置保持活动状态 .

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

    • 根据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客户端向其投放一些计数器 .

    Timezone fix

    这会将石墨固定在本地区域的图形时间

    • 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 Notes

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

    VirtualBox Notes

    VBoxVMService在我的Windows开发环境中自动运行VM作为服务非常方便 .

  • 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

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

    Statsify

    enter image description here

  • 1

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

  • 5

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

  • 2

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

相关问题