开源服务器监控工具Checkmate

简介

什么是 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 文件

yaml 复制代码
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

yaml 复制代码
- 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 容器,可取消下面的注释

yaml 复制代码
  server:
    # ... 其他配置 ...
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro  # 监控 Docker 容器

然后通过 SSH 登录到您的群晖,执行下面的命令:

bash 复制代码
# 新建文件夹 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 等)
  • 填写监控目标地址和名称
  • 设置检查间隔和告警阈值
  • 配置通知方式

创建成功后

还可以配置告警通知方式,方便我们在监控异常时接收报警信息

稍等一下就会有信息了

安装 Capture Agent(可选)

如果需要监控服务器硬件(CPU、内存、磁盘、温度等),需要在被监控服务器上安装 Capture agent

老苏还是在同一台群晖主机上安装的

bash 复制代码
# 运行 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
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
  1. API_SECRET 可以用 openssl rand -base64 32 来生成 ;
  2. 如果主机支持,可以挂载 -v /etc/os-release:/etc/os-release:ro,来标识发行版名称/版本等静态信息,群晖 DSM6 不支持,但是也可以自己建一个 os-release 文件,内容示例:
ini 复制代码
NAME="Synology DSM"  
VERSION="6.x"  
ID="synology"

进入 基础设置

  • URL:填入 Capture agent 的地址,老苏的是 http://192.168.0.197:59232/api/v1/metrics
  • 授权密钥:填入 Capture agent 中 API_SECRET 设置的值
  • 显示名称:主机名称,例如 DS3617xs
  • 告警阈值:根据需要进行设置

创建成功后,等待初始化完成

等 正常 之后就可以查看了

注意事项

  1. 数据持久化 :MongoDB 数据存储在 /data 目录,请定期备份
  2. 端口冲突 :默认使用 52345 端口,确保该端口未被占用
  3. 公网部署 :如果需要公网访问,建议配置反向代理(如 Nginx Proxy Manager)和 HTTPS
  4. 安全建议 :
    • 修改默认的 JWT_SECRET 为强随机字符串
    • 公网部署时启用 MongoDB 认证
    • 使用强密码并定期更换
  5. Docker 监控 :需要挂载 /var/run/docker.sock 才能监控容器
  6. 升级更新 :重新拉取最新镜像并运行 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

相关推荐
余额瞒着我当琳9 分钟前
Linux初识:Linux的历史,计算机的发展脉络,发行版本,选购云服务器,安装Xshell,第一次连接,基础命令指南
linux·运维·服务器
时间售卖铺27 分钟前
Docker实战:一键部署轻量级容器
运维·docker·云原生
山乐1913137 分钟前
麒麟系统,安装Nginx并配置https证书
运维·nginx·https
月落汀兰43 分钟前
拒绝配置写死镜像!K8s 存储卷与配置管理,PV/PVC、ConfigMap、Secret 实战避坑指南
运维·kubernetes
服务器硬件项目经理1 小时前
《超节点修仙录》· 第一卷·炼气期【第04话】 超节点 vs 普通服务器——不就是多插了几张卡吗?
运维·服务器·人工智能·嵌入式硬件·深度学习·机器学习
杨云龙UP2 小时前
MySQL 主从复制管理:暂停、恢复、清理主从关系及命令执行位置
运维·数据库·mysql·主从配置·主从命令·reset replica·清除复制
Android系统攻城狮2 小时前
Linux FFmpeg深度解析之avcodec_parameters_from_context调用流程与实战(十六)
linux·运维·ffmpeg·音视频进阶·ffmpeg音视频·车载音视频进阶
隔窗听雨眠2 小时前
从存储引擎到执行计划:OceanBase高效运维的调优逻辑与工程实践
运维·oceanbase
运维行者_2 小时前
供应链安全成最大风险源,企业如何构建可控的运维体系?
运维·开发语言·网络·数据库·安全·云计算·流量监控
xiaoyunxuexibiji2 小时前
采购协同管理:从备货计划、进度确认到到货签收
大数据·运维·人工智能