搭建Ward服务器监控面板

  1. 1. Ward 监控面板简介
  2. 2. 搭建前的环境准备
    1. 2.1 Docker环境搭建
    2. 2.2 申请泛域名SSL证书
      1. 2.2.1 安装 acme.sh
      2. 2.2.2 生成SSL泛域名证书
  3. 3. 搭建 Ward 监控面板
    1. 3.1 使用 Docker 部署 Ward 监控面板
      1. 3.1.1 克隆项目并构建镜像
      2. 3.1.2 创建容器并完成基本设置。
    2. 3.2 添加反向代理并开启 HTTPS
      1. 3.2.1 新建网站
      2. 3.2.2 给网站开启HTTPS
      3. 3.2.3 设置反向代理
    3. 3.3 Ward 监控面板说明
      1. 3.3.1 处理器监控
      2. 3.3.2 内存监控
      3. 3.3.3 存储监控
      4. 3.3.4 运行情况监控
  4. 4. 参考资料

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环境搭建

1
2
3
4
$ apt-get update -y && apt-get install curl -y  # 安装curl
$ curl https://get.docker.com | sh - # 安装docker
$ sudo systemctl start docker # 启动docker服务
$ docker version # 查看docker版本(客户端要与服务端一致)

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 新建网站

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

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