文章目录
- 前言
- **主要功能**
- 一、前期准备
- 本教程环境为:Centos7,可以跑Docker的系统都可以使用本教程安装。
- 本教程使用Docker部署服务,如何安装Docker详见:
- 二、Docker部署Uptime Kuma
- 三、实现公网查看网站监控
- 四、使用固定公网地址访问本地部署的监控服务
前言
本文主要介绍如何在Linux系统中一键部署Uptime Kuma运维监控服务,并将这个服务映射至公网实现随时随地远程访问。
如果您像我一样在服务器上托管了多个网站,并且没有足够的时间来手动检查每个网站的在线状态,那么当出现问题时,您可能无法及时收到通知来处理这些问题。因此,搭建一个在线监控服务是很有必要的,它可以在状态异常时提醒您,以便您能够及时处理问题,确保网站的稳定性和可用性。
监控服务有很多,我最终选择了Uptime Kuma,因为Uptime Kuma是开源免费的,在GIthub上目前有43.1k Star! 它搭建非常方便,占用系统资源低。
主要功能
- 监控 HTTP(s) / TCP / HTTP(s) 关键字 / Ping / DNS 记录 / 推送 / Steam 游戏服务器的正常运行时间
- 花哨的、反应式的、快速的 UI/UX
- 通过 Telegram、Discord、Gotify、Slack、Pushover、电子邮件 (SMTP) 和 70 多种通知服务发送通知
- 提供代理支持
- 支持多种语言
- Ping 图(Ping Chart)
- 证书信息(Certificate Info)
一、前期准备
本教程环境为:Centos7,可以跑Docker的系统都可以使用本教程安装。
本教程使用Docker部署服务,如何安装Docker详见:
Install Docker Engine on CentOS | Docker Docs
使用如下命令测试Docker是否正常工作:
docker run hello-world
二、Docker部署Uptime Kuma
按照顺序执行如下命令,路径位置可自行修改
mkdir -p /root/dockertest/kuma # 新建安装文件夹cd /root/dockertest/kuma # 切换至安装路径touch docker-compose.yml # 创建docker配置文件
执行结果如下:
编辑我们刚才新建的yml配置文件:
vim docker-compose.yml
写入如下信息:
version: '3.3'services:uptime-kuma:image: louislam/uptime-kumacontainer_name: uptime-kumavolumes:- /root/dockertest/kuma/data:/app/dataports:- 5702:3001 # 我设置的访问端口号为5702,可以自行修改端口
在此目录:/root/dockertest/kuma 下执行如下命令启动监控服务:
docker-compose up -d
拉取运行完毕后,docker ps ,即可查看已经启动的容器:
此时我们浏览器打开服务器IP:5702,我的地址是:
http://192.168.1.237:5702/
输入用户名密码后进入登陆界面:
在此界面我们可以添加要监控的网站:
点击左上角添加,配置监控URL,设置下监控名称:
设置网站异常通知:
支持各种通知功能,建议配置使用邮件和飞书通知等报警功能。
配置完毕后显示如下:
如因网络问题拉取不到镜像,
可尝试在终端执行
sudo nano /etc/docker/daemon.json
输入:
{ "registry-mirrors": [ "https://do.nark.eu.org", "https://dc.j8.work", "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn" ] }
保存退出
然后执行:
sudo systemctl restart docker
三、实现公网查看网站监控
上面我们使用Docker在本地服务器上部署了网站监控服务,在本地可以随意访问,但是一旦离开本地时需要查看网站状态,配置监控报警,就不灵了。
此时我们需要安装使用内网穿透工具将本地服务映射至公网,这样我们无需自己注册域名购买云服务器,即可发布到公网进行远程访问 !
我在服务器上安装了免费不限流量的Cpolar,具体安装方法如下:
cpolar官网地址: https://www.cpolar.com
- 使用一键脚本安装命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
- 向系统添加服务
sudo systemctl enable cpolar
- 启动cpolar服务
sudo systemctl start cpolar
cpolar安装成功后,在外部浏览器上访问Linux 的9200端口即:【http://局域网ip:9200】,使用cpolar账号登录,登录后即可看到cpolar web 配置界面,结下来在web 管理界面配置即可。
打开我的Cpolar Webui地址并登陆进去:
http://192.168.1.237:9200/
点击左侧仪表盘的隧道管理——创建隧道
配置如下:
- 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
- 协议:选择http
- 本地地址:5702(填入自定义修改的端口号)
- 域名类型:免费选择随机域名
- 地区:选择China Top
点击创建
隧道变为active状态,即为创建成功:
隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是http 和https
打开这个https地址,就是映射出的公网地址:
小结
为了更好地演示,我们在前述过程中使用了cpolar生成的隧道,其公网地址是随机生成的。
这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址由随机字符生成,不太容易记忆(例如:3ad5da5.r10.cpolar.top)。另外,这个地址在24小时内会发生随机变化,更适合于临时使用。
我一般会使用固定二级子域名,原因是我希望它是一个固定、易记的公网地址,更利于长期监控服务(例如:crm.cpolar.cn),这样更显正式,便于交流协作。
四、使用固定公网地址访问本地部署的监控服务
登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称。
保留成功提示如下:
返回登录http://192.168.1.237:9200 Cpolar Webui管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击 编辑
修改隧道配置信息如下:
修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名
- 地区:选择保留域名时选择的地区
点击更新
(注意,点击一次更新即可,不需要重复提交)
更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名。
最后,我们使用固定的公网地址访问,可以看到访问成功,这样一个固定且永久不变的公网地址就设置好了。
到这里我们实现了使用本地服务器部署网站监控服务,并配置了固定公网地址访问,这样我们无需租云服务器,就可以随时随地查看网站监控。
PS:如果拉取不到镜像,可以在终端执行 nano /etc/docker/daemon.json
输入:
{
“registry-mirrors”: [
“https://do.nark.eu.org”,
“https://dc.j8.work”,
“https://docker.m.daocloud.io”,
“https://dockerproxy.com”,
“https://docker.mirrors.ustc.edu.cn”,
“https://docker.nju.edu.cn”
]
}保存退出
然后执行:sudo systemctl restart docker