Checkmate
是一个开源的、自托管的服务器监控工具,能够实时跟踪和监控网站、基础设施、Docker 容器、端口等多种服务指标,并提供直观的可视化界面和多种通知方式。
本次实践为个人测试环境,操作系统版本为Ubuntu 22.04.1。
hostname | IP地址 | 操作系统版本 | Docker版本 | 部署项目 |
---|---|---|---|---|
jeven01 | 192.168.3.88 | Ubuntu 22.04.1 LTS | 27.1.1 | Checkmate |
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署Checkmate监控应用程序。
检查Docker服务是否正常运行,确保Docker正常运行。
root@jeven01:~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2025-07-02 14:16:57 UTC; 21h ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 878 (dockerd)
Tasks: 28
Memory: 1.2G
CPU: 1min 50.356s
CGroup: /system.slice/docker.service
├─ 878 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
检查Docker版本
root@jeven01:~# docker -v
Docker version 27.1.1, build 6312585
检查Docker compose版本,确保2.0以上版本。
root@jeven01:~# docker compose version
Docker Compose version v2.19.1
拉取Checkmate容器镜像,如下所示:
docker pull ghcr.io/bluewave-labs/checkmate-backend-mono:latest
docker pull ghcr.io/bluewave-labs/checkmate-mongo:latest
mkdir -p /data/checkmate && cd /data/checkmate
在部署目录下,创建docker-compose.yaml文件,需要注意将部署文件中的IP地址替换为自己服务器的IP地址。
vim docker-compose.yaml
services:
server:
image: ghcr.io/bluewave-labs/checkmate-backend-mono:latest
restart: always
ports:
- "52345:52345"
environment:
- UPTIME_APP_API_BASE_URL=http://192.168.3.88:52345/api/v1
- UPTIME_APP_CLIENT_HOST=http://192.168.3.88
- DB_CONNECTION_STRING=mongodb://mongodb:27017/uptime_db?replicaSet=rs0
- REDIS_URL=redis://redis:6379
- CLIENT_HOST=http://192.168.3.88
- JWT_SECRET=EcuqPmIbxHXGCAiJH/uuMzcSFNyJehi3hGtr/l70y6Y=
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- mongodb
mongodb:
image: ghcr.io/bluewave-labs/checkmate-mongo:latest
restart: always
command: ["mongod", "--quiet", "--replSet", "rs0", "--bind_ip_all"]
volumes:
- ./mongo/data:/data/db
healthcheck:
test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh --port 27017 --quiet
interval: 5s
timeout: 30s
start_period: 0s
start_interval: 1s
retries: 30
执行以下命令,创建Checkmate容器。
docker compose up -d
检查Checkmate容器运行状态,确保Checkmate容器正常启动。
root@jeven01:/data/checkmate# docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
checkmate-mongodb-1 ghcr.io/bluewave-labs/checkmate-mongo:latest "docker-entrypoint.s…" mongodb 11 hours ago Up 2 minutes (healthy) 27017/tcp
checkmate-server-1 ghcr.io/bluewave-labs/checkmate-backend-mono:latest "docker-entrypoint.s…" server About a minute ago Up About a minute 0.0.0.0:52345->52345/tcp, [::]:52345->52345/tcp
检查Checkmate容器运行日志,确保Checkmate服务正常运行。
docker logs checkmate-server-1
浏览器地址:
http://<个人的服务器IP>:52345
,访问Checkmate的初始页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。
点击注册账号选项,自定义填写账号密码信息,填写完毕后,确认注册。
点击“L et's create your first uptime monitor”选项,进入监控项配置页。
我们选择“网站监控”选项,例如填写百度网站的网址(如
https://www.baidu.com
)及简要描述。
选择检查频率为1分钟,确认创建该监控项。
查询容器完整ID:使用以下命令,查询需要监控容器的完整ID。
root@jeven01:/data/checkmate# docker container inspect arcane |grep ID
"ExecIDs": null,
"ContainerIDFile": "",
"ID": "7f896f1c56219535d54a01d33edbd27e6049dcd03162b29704bd939a22f27ce0",
"PUID=1000",
"PGID=1000",
"DOCKER_GID=998"
"SandboxID": "66a7e5e9767b4624036d993003b5c67fc6d14be79a1720d640e628f63f9def50",
"EndpointID": "",
"NetworkID": "ff11bdd44d240d4f45010e7d91ce58cc9f1e8409d7f96a5651fc602ff70cbe32",
"EndpointID": "7a1ceab6e4c7ba32f4a2b2c70df66a11f712fde63d307412a466d8c5dbec6ebd",
root@jeven01:/data/checkmate#
在监控项页面,选择容器监控,填写刚才查找的容器ID,选择检查频率后,确认创建该监控项。
等待几分钟后,在Checkmate首页,我们查看效果如下:
通过本次实战,我们成功使用 Docker 部署了 Checkmate 监控应用,实现了对服务器和各类服务的可视化监控。整个部署过程简洁高效,得益于 Docker 的容器化优势,环境依赖和配置更加统一与可控。Checkmate 提供了丰富的监控功能,如网站、端口、SSL 和 Docker 容器监控,非常适合中小型团队用于构建自托管监控系统。通过持续优化配置和结合实际业务需求,可以进一步提升系统的可观测性与稳定性。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。