大规模服务器和流量矿石软件监控

这段时间在和人合作挖矿,很多人会认为流量矿石前景黯淡或者是徒劳,但我至少系这个项目上学会了XenServer,和监控这些一百几十台服务器的技术。

监测每部VM的网卡速度比较容易,因为XenServer是Linux,读取 /proc/net/dev 就可以了。我也参照了部分官方的代码,自己用C编写了监控读数的软件。

因为最初没有设计太多,没有安装很多软件,通常我是只利用一台服务器用来编译软件,然后打包这些软件,放到其他服务器直接使用,其他服务器就无需安装任何软件即可使用,这个就会比较方便,唯一的缺点就是开发C会比较耗费时间,但是可靠性、方便性和运行速度上会有保证。当然也可以选择 Python 或者 Node.JS 。

Windows下的流量矿石软件比较“不寻常”,我利用各种获取窗口文字的软件,尝试获取矿石软件的流量读数,但是没有结果。

之后我尝试用监控每个进程的网络流量进行记录,之后汇总。不过我发现矿石连接数很多,处理起上来可能十分无效率,而且有部分可能是无用的。

montage

最终还是用图像识别的方法,截图,然后识别文字。这里要用到 Capture2Text 。唯一缺点是要处理很多情况,因为读出来的读数不是 100% 正确,要进行各种测试。

循环每隔几秒,利用 XenStore 储存读取读数,然后主机读取,然后主机集中发送到网站上,网站推送数据给用户浏览器,即时看到速度。

不过这个方法也有一个缺陷——就是关掉远程后或者远程窗口最小化后,屏幕变成黑色,所以截图也是黑色,无法读取数值。

最小化的问题可以通过利用注册表解决。但是关掉远程这个问题,网上有很多人提出不同的解决方法,但是都无用。

我最后找到了解决方法,就是当用户退出远程后,通知主机通过 VNC 登录 Windows ,当然这一步要输入密码,你可以通过 vncdotool 等工具,利用命令,模拟输入用户名和密码的过程,不过这里也有很多不确定的情况。只要主机登录到 Windows,读数就会继续。当然你不能设置任何屏保或者覆盖矿石软件读数的东西。当然,如果你设置了透明度,背景也是会影响读数的。

当然你要使用和了解 Windows 2003 下的 Session 0 ,否则会给你很多问题。

大致就是这样的过程。

因为是 Linux ,你可以做很多东西,比如截图,也可以将全部 VM 的截图合并,也可以在图片加入文字,另外可以利用 nginx ,这样截图就可以在浏览器定期刷新而获取最新的截图。

Advertisements

One thought on “大规模服务器和流量矿石软件监控

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s