简介
Checkmate 是什么?
Checkmate 是一个开源、自托管的服务器和基础设施监控工具。它可以实时跟踪服务器硬件状态、网站正常运行时间、响应时间和事件,并通过精美的可视化界面展示监控数据。Checkmate 定期检查服务器或网站是否可访问和运行正常,提供实时告警和监控服务可用性、停机时间和响应时间的报告。
主要特点
- 多种监控类型:支持
Uptime、Docker、Ping、SSL、端口、游戏服务器等多种监控方式。
- 页面速度监控:监测网页加载速度性能。
- 基础设施监控:通过
Capture agent 监控 CPU、内存、磁盘、温度等硬件状态。
- 选择性磁盘监控:支持按挂载点选择监控特定磁盘。
- 事件概览:集中查看所有监控事件和告警。
- 状态页面:提供
4 款精美主题的公开状态页面。
- 多样化通知:支持邮件、
Webhook、Discord、Slack、PagerDuty、Matrix、Microsoft Teams、Telegram、Pushover、Twilio (SMS) 等多种通知渠道。
- 计划维护:支持设置维护时间段,期间不会触发告警。
- JSON 查询监控:支持自定义
JSON 响应验证。
- 多语言支持:支持包括中文在内的
17 种语言。
- 高性能:已通过
1000+ 活跃监控器压力测试。
- 开源免费:基于
AGPL-3.0 协议开源,可免费使用和修改。
应用场景
- 网站监控:监控网站是否在线、响应时间、
SSL 证书有效期。
- 服务器监控:监控服务器
CPU、内存、磁盘使用情况(需安装 Capture agent)。
- Docker 容器监控:监控容器运行状态和资源使用。
- 服务端口监控:监控特定服务端口是否开放。
- API 监控:通过
HTTP 和 JSON 查询监控 API 接口状态。
- 团队状态页面:为团队或客户提供公用的服务状态展示页面。

Checkmate 是一个功能强大的自托管监控解决方案,可以替代 UptimeRobot、Pingdom 等商业监控服务,特别适合个人开发者、中小企业以及那些青睐开源工具的技术团队使用。
安装
在群晖上以 Docker 方式安装。
推荐使用 Combined FE/BE Docker 方式(前后端集成在一个镜像中),部署最简单。
docker-compose 安装
采用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件。
version: '3.8'
services:
server:
image: ghcr.io/bluewave-labs/checkmate-backend-mono:latest
container_name: checkmate-server
restart: always
ports:
- "52345:52345"
# volumes:
# - /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- UPTIME_APP_API_BASE_URL=http://localhost:52345/api/v1
- UPTIME_APP_CLIENT_HOST=http://localhost
- DB_CONNECTION_STRING=mongodb://mongodb:27017/uptime_db
- CLIENT_HOST=http://localhost
- JWT_SECRET=your_secret_key_here
depends_on:
mongodb:
condition: service_healthy
mongodb:
image: ghcr.io/bluewave-labs/checkmate-mongo:latest
container_name: checkmate-mongodb
restart: always
command: ["mongod", "--quiet", "--bind_ip_all"]
volumes:
- ./data:/data/db
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')", "--quiet"]
interval: 5s
timeout: 30s
start_period: 0s
retries: 30
更新 compose 文件中的几个环境变量。将 localhost 替换为服务器的 IP,本例中老苏的服务器 IP 是 192.168.0.197,所以修改如下。
- UPTIME_APP_API_BASE_URL=http://192.168.0.197:52345/api/v1
- UPTIME_APP_CLIENT_HOST=http://192.168.0.197
- CLIENT_HOST=http://192.168.0.197
| 可变 |
值 |
说明 |
UPTIME_APP_API_BASE_URL |
http://localhost:52345/api/v1 |
API 基础地址,如果部署在远程服务器,请修改为实际 IP 或域名。 |
UPTIME_APP_CLIENT_HOST |
http://localhost |
客户端访问地址。 |
DB_CONNECTION_STRING |
mongodb://mongodb:27017/uptime_db |
MongoDB 连接字符串。 |
CLIENT_HOST |
http://localhost |
授权来自指定来源的 API 请求。 |
JWT_SECRET |
自定义密钥,可以用 openssl rand -base64 32 来生成 |
用于 JWT 认证,建议使用强随机字符串。 |
如果需要监控 Docker 容器,可取消下面这部分的注释。
server:
# ... 其他配置 ...
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro # 监控 Docker 容器
然后通过 SSH 登录到您的群晖,依次执行下面的命令:
# 新建文件夹 checkmate 和 子目录
mkdir -p /volume1/docker/checkmate/data
# 进入 checkmate 目录
cd /volume1/docker/checkmate
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d

运行
在浏览器中访问 http://<群晖IP>:52345 即可进入登录界面。

建议先切换到中文,然后我们再注册一个管理员用户。

注册完成后,便会进入主界面。

添加监控
我们以监控博客 https://laosu.tech 为例来添加第一个监控项,这个过程通常包括几个步骤:
- 选择监控类型(
HTTP、Ping、Docker、SSL 等)。
- 填写监控目标地址和名称。
- 设置检查间隔和告警阈值。
- 配置通知方式。

创建成功后,监控列表会立刻显示新添加的项。

你还可以配置告警通知方式,方便在监控异常时第一时间收到消息。通知渠道非常丰富,从常见的邮件到 Slack、Telegram 等都支持。

稍等片刻,系统收集到数据后,详细的响应时间和状态图表就会出现。

安装 Capture Agent(可选)
如果需要监控服务器硬件(CPU、内存、磁盘、温度等),就需要在被监控服务器上安装 Capture agent。
这里我们直接在同一台云原生环境的群晖主机上进行安装。
# 运行 agent 容器
docker run -d \
--restart unless-stopped \
--name checkmate-agent \
-p 59232:59232 \
-e API_SECRET=your_agent_secret_key_here \
ghcr.io/bluewave-labs/capture:latest
# 示例1:指定 API_SECRET
docker run -d \
--restart unless-stopped \
--name checkmate-agent \
-p 59232:59232 \
-e API_SECRET=Trtsodtyftb19PJGraq2+pKooqmANQ3ScTNBqRWITL0= \
ghcr.io/bluewave-labs/capture:latest
# 示例2:挂载静态信息文件,以获取更详细的系统信息
docker run -d \
--restart unless-stopped \
--name checkmate-agent \
-p 59232:59232 \
-v /etc/os-release:/etc/os-release:ro \
-e API_SECRET=Trtsodtyftb19PJGraq2+pKooqmANQ3ScTNBqRWITL0= \
ghcr.io/bluewave-labs/capture:latest
API_SECRET 可以用 openssl rand -base64 32 来生成。
- 如果主机支持,挂载
-v /etc/os-release:/etc/os-release:ro 可以标识发行版名称和版本等静态信息。群晖 DSM6 本身不支持,但我们可以自己创建一个 os-release 文件,内容示例如下:
NAME="Synology DSM"
VERSION="6.x"
ID="synology"
接下来,回到 Checkmate 界面,进入 基础设置。

在基础设施监控中,填入 Agent 的相关信息:
URL:Capture agent 的地址,按我们前面的配置,这里是 http://192.168.0.197:59232/api/v1/metrics。
授权密钥:Capture agent 启动时 API_SECRET 设置的值。
显示名称:一个便于识别的主机名称,例如 DS3617xs。
告警阈值:根据服务器实际情况,按需设置 CPU、内存、磁盘和温度的告警线。

创建成功后,等待状态变为 正常,就可以看到详尽的硬件数据了。

在详情页,磁盘、内存的使用率,CPU 的负载情况,都通过直观的环形图和折线图呈现出来,非常清晰。

注意事项
- 数据持久化:
MongoDB 数据存储在 ./data 目录(相对于 docker-compose.yml 文件),请定期备份。
- 端口冲突:默认使用
52345 端口,请确保该端口未被占用。
- 公网部署:如果需要公网访问,建议配置反向代理(如
Nginx Proxy Manager)和 HTTPS。
- 安全建议:
- 务必修改默认的
JWT_SECRET 为一个强随机字符串。
- 公网部署时,建议启用
MongoDB 认证。
- 使用强密码并定期更换。
- Docker 监控:需要挂载
/var/run/docker.sock 才能监控容器状态。
- 升级更新:重新拉取最新镜像并再次执行
docker-compose up -d 即可,请确保挂载了相同的数据目录以保留历史数据。
参考文档
Checkmate: An open source uptime and infrastructure monitoring application
地址:https://github.com/bluewave-labs/Checkmate
Checkmate 官方文档 - 安装指南
地址:https://docs.checkmate.so/users-guide
Checkmate 在线演示
地址:https://demo.checkmate.so/
Capture Agent - 服务器硬件监控代理
地址:https://github.com/bluewave-labs/capture
Checkmate 官方 Discord 社区
地址:https://discord.gg/NAb6H3UTjK
欢迎你加入云栈社区,与更多技术同好交流和分享自托管、服务器监控的经验与心得。