三步跑通 Checkmate 服务器监控的 Docker 部署
【免费下载链接】CheckmateCheckmate is an open-source, self-hosted tool designed to track and monitor server hardware, uptime, response times, and incidents in real-time with beautiful visualizations. Don't be shy, join here: https://discord.com/invite/NAb6H3UTjK :)项目地址: https://gitcode.com/GitHub_Trending/checkm/Checkmate
Checkmate 是一款开源自托管的服务器监控系统。它周期性检查网站可用性、响应时间与硬件状态,异常时向你的聊天工具或邮箱推送告警。本文用 Docker 部署把它跑起来,三条命令得到可用的监控面板,再讲清上生产前要补的配置。
📌 为什么值得自己搭一套 Checkmate
- 监控对象多:HTTP(含 SSL 证书到期)、Ping、端口、DNS、Docker、gRPC、WebSocket、游戏服务器,外加页面速度测试
- 13 种告警渠道:邮件、Webhook、Discord、Slack、PagerDuty、Teams、Telegram 等,任选组合
- 占用小:323 台服务器分钟级监控的实测里,Node.js 进程与 MongoDB 内存都在几百 MB
- 数据全在你自己的 MongoDB,不经过第三方云
⚡ 三条命令启动监控面板
目标机装好 Docker 与 Git 即可。快速启动的 compose 拉取一体化预构建镜像和 MongoDB,无需本地构建:
git clone https://gitcode.com/GitHub_Trending/checkm/Checkmate cd Checkmate/docker JWT_SECRET="$(openssl rand -hex 32)" docker compose up -ddocker/docker-compose.yaml 已内置 MongoDB 连接串和默认CLIENT_HOST,启动后直接打开页面就行。
✅ 验证部署是否健康
运行docker compose ps,对照检查四项:
mongodb容器为 healthy,compose 内置健康检查,checkmate 会等它就绪再启动checkmate容器 running,对外映射 52345 端口- 浏览器打开
http://localhost:52345出现登录页 - 注册后给自己的服务建一个 HTTP 监控,检查间隔过后状态从 initializing 变为 up,部署即跑通
🧭 三种部署形态怎么选:生产、开发、K8s
| 形态 | 服务组成 | 宿主机端口 | 适用场景 |
|---|---|---|---|
| 生产快速启动 | 预构建 checkmate 一体化镜像 + mongo:8.0,两个容器 | 52345 | 正式部署、单机 |
| 开发从源码 | 用 docker/Dockerfile 本地构建,checkmate、worker、mongo 三个容器 | 52345、52346、27017 | 调试代码、跑独立工作节点 |
| Kubernetes | Helm chart,传统前后端分离镜像(锁定 v3.8.1) | 由 ingress 配置 | K8s 集群环境 |
- 生产快速启动用 docker/docker-compose.yaml,MongoDB 只在 compose 网络内可达,不对外暴露端口
- 开发从源码用 docker/dev/docker-compose.yaml,需在同目录创建
server.env(含DB_CONNECTION_STRING、JWT_SECRET、CLIENT_HOST三项),首次docker compose up -d自动构建镜像 - K8s 的步骤写在 charts/helm/checkmate/INSTALLATION.md,注意 chart 仍是分离镜像,未用一体化新镜像
- 要反代与 HTTPS,可参考 docs/hosting/checkmate-so/ 的托管配置:nginx 终结 TLS,Checkmate 跑在其后的 52345
🔔 配置监控项、告警通知与硬件采集
新增一个监控项
登录后在监控列表新建监控,选类型、填必填项:
- HTTP:URL、检查间隔、超时,可加证书到期提醒
- 端口 / Ping / DNS:目标与期望结果
- Docker:host 填本地套接字或远程守护进程
tcp://host:2376,远程需 CA 证书、客户端证书与密钥(仅 mTLS,2375 不加密不被支持),每次检查还会记录容器状态、CPU 与内存
配置邮件与即时告警
- 在通知页新建通知,选渠道并填参数:邮件账号、Discord webhook 地址、Slack token 等
- 再把通知关联到监控,监控转 down 时立即推送
- 13 种渠道的实现都在 server/src/domain/notifications/providers/ 目录,按目录文件名对照即可
采集硬件指标
上面这些监控只报可用性与响应时间。要看 CPU、内存、磁盘使用率与温度,需要在被监控服务器上装 Capture agent(独立项目,支持 Linux、Windows、Mac、树莓派),由它上报数据。监控哪些磁盘的取舍见 docs/infrastructure-disk-selection.md。
⚠️ 上生产前的提醒与两个新手坑
- 资源:几百个监控分钟级检查,几百 MB 内存即可,2 核 4G 的机器够跑
- 网络:监控机要能访问每个被监控目标;监控远程 Docker 守护进程时,目标机只放行 2376 给 Checkmate 主机
- 备份:数据都在 MongoDB 卷里,生产 compose 用命名卷
mongo-data,定期备份它 - 安全:52345 不要直接暴露公网,前面挂反代加 TLS,并把
NODE_ENV设为production启用接口限流
新手最常踩的两个坑:
- 漏配
JWT_SECRET:生产 compose 把它声明为必填,不传时docker compose up直接报错,报错文案就是解决提示 CLIENT_HOST停在默认http://localhost:52345:之后用域名或局域网地址访问,通知邮件与状态页里的链接全指向 localhost 点不开,启动前改成真实访问地址
更多主题如私有证书颁发机构信任见 docs/custom-ca-trust.md,完整环境变量对照表在 README.md 的安装章节。面板跑通后,下一步去通知页配出你的第一封邮件告警。
【免费下载链接】CheckmateCheckmate is an open-source, self-hosted tool designed to track and monitor server hardware, uptime, response times, and incidents in real-time with beautiful visualizations. Don't be shy, join here: https://discord.com/invite/NAb6H3UTjK :)项目地址: https://gitcode.com/GitHub_Trending/checkm/Checkmate
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考