websocket打造资源监控器

最近在学习Go语言。

发现很多优秀的软件服务其后台程序都是基于Go来实现,今天补缺websocket这一块内容时看到阮一峰老师文章《WebSocket 教程》提到WebSocketd,点进去一看,又是一个使用Go语言实现的web服务。

我来了兴趣,决定实现它。

在macOS里实现它非常简单,安装Go语言环境后,直接brew install websocketd即可安装成功,参照官方实例开箱即用;但监控Linux CPU/IO/Mem stats的那个example只能在Linux上跑,我想着在Docker Linux上实现。

步骤如下:

1、安装Go环境

2、安装WebSocketd服务

3、安装web-vmstat服务

4、执行shell脚本

使用Docker Alpine部署

最开始尝试在Docker Alpine里面部署,结果发现Alpine自带的库对Go语言支持不友好,折腾半天嫌麻烦放弃Alpine改用CentOS,并不是说Alpine里不可以安装Go语言环境。改用CentOS不使用Ubuntu是因为Ubuntu默认自带的shell版本为/bin/dash,部署websocketd过程中需要经常使用bash shell命令,想着少一事就少一事,CentOS是最佳的选择。

使用Docker CentOS部署

运行CentOS容器:

1
docker run -it -p 8080:8080 --name centoswebsocket <image-id>

参照CentOS 镜像使用帮助,更改为清华的源。

下载如下内容:

使用wget下载Go语言包,安装后设置好Go语言环境变量;

使用wget下载websocketd-0.3.0-linux_amd64.zip,解压缩后得到一个二进制文件websocketd,将其拷贝到/usr/bin目录,确保WebSocketd是一个全局命令;

使用yum-install安装Git,然后使用Git下载web-vmstats;

更改run脚本文件

进到web-vmstats目录,修改run这个bash文件。

./websocketd --port=9231 --staticdir=web /usr/bin/vmstat -n 1修改为

websocketd --port=8080 --staticdir=web /usr/bin/vmstat -n 1

两点原因:

1、web-vmstats和websocketd并不在同一个目录,./websocketd命令会报错”not found”

2、端口需要改为使用docker run命令打开的端口

查看监控页面

上图中执行./run脚本后,服务启动成功,浏览器里输入http://127.0.0.1:8080后即可看到这台Docker CentOS服务器实时的资源监控页面。

参考资料

大西洋暖流 wechat
欢迎订阅大西洋暖流