使用docker在服务器上搭建一个服务器状态监控平台及消息推送平台的方法

最后更新于 2023-11-27 686 次阅读


博主自己本身有购买六台云服务器在手上,但是一直没有搭建一个可以监控各个云服务器运行状态的平台,有时候服务出现问题后博主也没有办法第一时间知道,所以本次博主就记录了在云服务器上搭建Uptime Kuma监控平台+Gotify消息推送平台的过程。

参考资料:

搭建一个属于自己的网站实时监控平台:https://www.blackvoids.com/archives/kuma

Upime kuma官网:https://uptime.kuma.pet/

Gotify官网:https://gotify.net/docs/install

docker官网:https://docs.docker.com/engine/install/centos/

系统的原理是:通过Uptime kuma监控平台来监控服务器的http、tcp port和ping状态,然后当服务器服务出现问题时,通过Gotify平台推送消息到终端上。

需要涉及的软件:docker、docker-compose、Uptime kuma的docker-compose文件、Gotify服务端的compose文件、Gotify手机端apk。

一.安装docker及docker-compose

如果服务器本身已经安装了docker和docker-compose,则可以跳过这一步

①.安装yum-utils包

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

②.安装docker

yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

③.启动docker

systemctl enable docker #让docker能够开机启动
​
systemctl start docker #启动docker
​
systemctl status docker #查看docker运行状态
​

二.安装Uptime-kuma平台

①.创建安装目录

mkdir -p /home/data/docker_data/uptime-kuma && cd /home/data/docker_data/uptime-kuma

②.创建docker-compose配置文件

vi docker-compose.yml

③.复制如下代码到docker-compose文件中

version: '3.3'
services:
uptime-kuma:
  image: louislam/uptime-kuma:1
  container_name: uptime-kuma
  volumes:
     - ./uptime-kuma-data:/app/data
  ports:
     - 3001:3001  # 外部端口:内部端口,左边外部端口可以根据你实际的端口需求更改,后续访问webui时就使用的是左边的端口
   restart: always

④.查看你选用的外部端口是否被占用

使用命令:lsof -i:3001 来查看你选用的外部端口是否被占用,如果被占用的话需要更换端口。

⑤.安装uptime-kuma平台

cd /home/data/docker_data/uptime-kuma
docker-compose up -d

然后使用docker ps -a查看容器是否运行

⑥.主机防火墙放开外部端口

这一步需要根据你云服务器的防火墙来查看如何放开你上边设置的外部端口,这里以firewalld为例子。

firewall-cmd --permanent --add-port=3001/tcp #放开3001端口
​
systemctl restart firewalld #重启firewalld服务让配置生效

firewall-cmd --list-all #查看端口是否放开

⑦.登录webUI查看是否成功安装

访问:http://yourIP:3001,查看是否进入平台页面,成功进入页面后,配置新帐号的账户密码

三.安装Gotify消息推送平台

①.创建安装目录

mkdir -p /home/data/docker_data/gotify && cd /home/data/docker_data/gotify

②.创建docker-compose配置文件

vi docker-compose.yml

③.复制如下代码到docker-compose文件中

version: "3"
​
services:
gotify:
  image: gotify/server
  ports:
     - 8004:80  # 外部端口:内部端口,左边外部端口可以根据你实际的端口需求更改,后续访问webui时就使用的是左边的端口
  environment:
     - GOTIFY_DEFAULTUSER_PASS=admin  #默认admin帐号的密码设定为admin
  volumes:
     - "./gotify_data:/app/data"

④.查看你选用的外部端口是否被占用

使用命令:lsof -i:8004 来查看你选用的外部端口是否被占用,如果被占用的话需要更换端口。

⑤.安装gotify平台

cd /home/data/docker_data/gotify
docker-compose up -d

⑥.主机防火墙放开外部端口

这一步需要根据你云服务器的防火墙来查看如何放开你上边设置的外部端口,这里以firewalld为例子。

firewall-cmd --permanent --add-port=8004/tcp #放开8004端口
​
systemctl restart firewalld #重启firewalld服务让配置生效

firewall-cmd --list-all #查看端口是否放开

⑦.登录webUI查看是否成功安装

访问http://yourip:8004,默认账号为admin,密码为admin

⑧.调试gotify平台

点击右上“app”按钮,然后点击“Create Application”按钮,在“name”中输入要推送消息终端的名字,即可创建一个app信息,可以将Token那一栏的数据复制出来,后边发送消息的时候用的上

然后在手机上下载一个gotify的客户端(谷歌商店中有),下载完成后,在url界面输入自己gotify服务的url地址,例如:http://yourip:8014,然后输入帐号密码即可。

现在ssh进入服务器后台,根据以下格式输入以下代码,看看能否在webui和手机上收到消息。

curl "http://yourip:8004/message?token=<Token>" -F "title=测试" -F "message=这是测试" -F "priority=5"
​
#Token信息就是上图APP中token那一串数字英文
例如:
curl "http://laoju.wisky.top:8004/message?token=A7spnT.3WrMXHyH" -F "title=测试" -F "message=my message" -F "priority=5"

在webui后台可以看到收到了信息,则表示gotify已经调试完成

四.调试Uptime-kuma平台和gotify对接

进入uptime-kuma后台,点击“添加监控项'',根据你需要监控的服务器的内容,选择相应的监控类型,设置完成后就可以开始gotify平台的对接。

点击右上角你的头像,选择“设置”,然后查看“通知”栏

然后添加“Gotify”通知类型,令牌输入Token的值,url输入http://yourip:8014,点击下边的“测试”按钮,测试成功后即可保存。至此就已完成了通知的设置