搭建Ward服务器监控面板

1. Ward 监控面板简介

Ward 是一个使用 Java 开发的简单而简约的服务器监控工具。Ward 支持自适应设计系统,它还支持深色主题,它只显示服务器的主要信息。Ward 在所有流行的操作系统上运行良好,因为它使用 OSHI

项目地址:https://github.com/B-Software/Ward

Ward

效果演示:本站的监控即为 Ward 项目搭建的,见 https://ward.eula.club

2. 搭建前的环境准备

以下我将采用宝塔面板与Docker混合部署的方式(宝塔面板安装PHP和Nginx环境并开启HTTPS,Docker安装Ward),VPS系统用的是Debian 10 x86_64。

VPS的购买及配置、域名解析、宝塔面板的搭建及使用、Docker的概念及使用…这些基本的就不再赘述了,如果不会的话见我的另一篇博客:VPS基本部署环境的搭建与配置

2.1 Docker环境搭建

2.1.1 卸载旧版本Docker

旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本:

1
2
3
4
$ apt-get install -y sudo
$ sudo apt-get remove docker \
docker-engine \
docker.io

2.1.2 安装HTTPS传输包及CA证书

由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们需要添加使用 HTTPS 传输的软件包以及 CA 证书。

Step1:更新apt包索引

1
$ sudo apt-get update

Step2:安装包以允许apt通过HTTPS使用存储库

1
2
3
4
5
6
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common

Step3:添加Docker的官方GPG密钥

1
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

Step4:验证您现在拥有带指纹的密钥

1
$ sudo apt-key fingerprint 0EBFCD88

Step5:添加源

1
2
3
4
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"

2.1.3 安装DOCKER CE

1
2
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

2.1.4 启动Docker服务并查看版本

1
2
$ sudo systemctl start docker
$ sudo docker --version

注:如果是apt安装的docker,开机自启脚本已经自动放置在/etc/init.d/目录下了,无需配置。

2.2 申请泛域名SSL证书

SSL证书是一种数字证书,用于加密从用户的浏览器发送到Web服务器的数据。 通过这种方式,发送的数据对于使用Wireshark等数据包嗅探器来拦截和窃听您的通信的黑客来说是安全的。

Chrome一直在推动https,所有的http协议网站被标记为不安全,如果再不对网站进行https改造的话,那么可能会对信任度造成一定的影响,所以说对一个面向用户的网站来说,开启https是非常有必要的。

下面将使用acme.sh开源项目申请免费的 Let’s Encrypt 泛域名SSL证书。

注:如果懒得折腾泛域名证书,后面也可在宝塔面板直接傻瓜式申请Let’s Encrypt的单域名SSL证书(宝塔面板——网站——设置——SSL——Let’s Encrypt——勾选域名,点文件验证——申请出来后设置强制HTTPS)。

2.2.1 安装 acme.sh

1
$ curl  https://get.acme.sh | sh

acme.sh

普通用户和 root 用户都可以安装使用,安装过程进行了以下几步:

  • [1] 把 acme.sh 安装到你的 root 目录下,并创建 一个 bash 的 alias, 方便你的使用。

  • [2] 自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书。

注:安装过程不会污染已有的系统任何功能和文件,所有的修改都限制在安装目录中。那个socat未安装的问题不用管,那是http验证无Web Server时才需要的。

2.2.2 生成SSL泛域名证书

acme.sh 实现了 acme 协议支持的所有验证协议,一般有两种方式验证:http 和 dns 验证。

  • http 验证:http 方式需要在你的网站根目录下放置一个文件,来验证你的域名所有权。
  • dns 验证:dns 方式,在域名上添加一条 txt 解析记录,验证域名所有权。

dns 方式的可以使用域名解析商提供的 API 自动添加 txt 记录完成验证,下面我们将采用这种方法申请Namesilo的泛域名证书。

Step1:打开 https://www.namesilo.com/account/api-manager 去申请 NameSilo API,勾选第2个复选框,点击Generate,即可生成。

申请NameSilo API

注:务必不要勾选上Generate key for read-only access的哪个复选框,否则会导致Unable to add the DNS record. Error add txt for domain的问题。另外,生成的API只出现一次,如果没记下来只能重置。

Step2:在服务器输入以下命令,实现自动dns验证生成泛域名证书。

1
2
3
$ cd /root/.acme.sh
$ export Namesilo_Key="xxxxxxxxxxxxxxxxxxxxxxxx"
$ ./acme.sh --issue --dns dns_namesilo --dnssleep 1800 -d example.com -d *.example.com

等待1800s即可看到申请下来的SSL证书(NameSilo的验证比较慢,官方文档上写的900s有时不足以验证完)

申请下来的SSL证书

生成文件都放在/root/.acme.sh/example.com/目录下,其中:example.com.key是密钥文件,fullchain.cer是证书文件。

注:如果你的域名不是NameSilo的,上述操作有所不同,具体请参考: https://github.com/acmesh-official/acme.sh/wiki/dnsapi

3. 搭建 Ward 监控面板

官方提供了两种方式部署Ward监控面板,一种是打包成jar运行,另一种是构建Docker运行,我选择了后者。

3.1 使用 Docker 部署 Ward 监控面板

3.1.1 克隆项目并构建镜像

官方提供了构建Docker镜像的Dockerfile文件,我们直接用它来构建即可。

1
2
3
$ git clone https://github.com/B-Software/Ward.git
$ cd /root/Ward
$ docker build . --tag ward

3.1.2 创建容器并完成基本设置。

构建完镜像之后,我们便可以创建容器了,注意第二个-p 自定义端口号:自定义端口号处一定要填,下面会用到。

1
2
3
4
5
docker run -d --name ward -p 4000:4000 \
-p 自定义端口号:自定义端口号 \
--privileged=true \
--restart always \
ward:latest

然后我们用Chrome打开http://IP:4000/地址,我们会看到如下图的界面,在此完成基本设置。

image-20210628155606181

Server Name随便填,这个就是搭建完后的浏览器地址栏信息;然后可以选择命令主题或者黑暗主题;Application Port要填写成刚刚创建Docker容器时的自定义端口号。然后点击LAUNCH按钮即可完成基本设置。

注:如果这里填错了的话,可以进入容器内部,修改setup.ini文件即可。

1
2
$ docker exec -it ward /bin/sh
$ nano setup.ini

这时候我们用Chrome打开http://IP:自定义端口号/即可访问我们的监控面板了。

3.2 添加反向代理并开启 HTTPS

3.2.1 新建网站

宝塔面板——网站——添加站点——填写域名即可(其他的都不需要,我们只是用它来做反向代理和配置HTPPS)

3.2.2 给网站开启HTTPS

宝塔面板——网站——设置——SSL——其他证书,把example.com.key密钥文件、fullchain.cer证书文件复制上去,强制https。

开启HTTPS

3.2.3 设置反向代理

宝塔面板——网站——设置——反向代理——添加反向代理——填写代理名称和目标URL(http://127.0.0.1:自定义端口)

3.3 Ward 监控面板说明

3.3.1 处理器监控

处理器名称 Card 1
处理器利用率百分比
处理器内核数 (逻辑和物理内核)
当前处理器频率
处理器是否支持64位指令

3.3.2 内存监控

操作系统类型及其版本 Card 2
RAM利用率百分比
已安装的 RAM 总量
生成已安装的 RAM(如果您有 dmidecode)
当前进程数

3.3.3 存储监控

Host0 存储名称 Card 3
存储利用率百分比
当前安装的总存储空间(包括外部驱动器)
安装的磁盘数
虚拟内存总量(Linux中的交换空间)

3.3.4 运行情况监控

Card 4
此块包含正常运行时间和图表部分。正常运行时间表示自上次在 Linux 上启动以来的时间,以及在 Windows 上硬重置之间的时间。它还有分页器,可用于获取作者联系人。图表部分显示最近十五秒的服务器利用率。(处理器、内存、存储)您可以通过单击图表部分右上角的矩形来隐藏分离的数据集。

4. 参考资料

[1] 一个简单而简约的服务器监控工具 Ward from Github

[2] Ward:一个简约的服务器监控工具 from 荒岛

[3] Ward:一个简约美观多系统支持的云监控 from wittoy’s blog

[4] Ward:拥有漂亮仪表盘的服务器监控工具 from HelloGithub