Healthchecks 定时任务监控搭建教程

Healthchecks 是一款专门用于监控定时任务(Cron Jobs)的开源工具。它的工作原理很简单:为每个需要监控的任务创建一个唯一的 URL,任务成功执行后向该 URL 发送一个 HTTP 请求(称为「ping」)。如果在预期时间内没有收到 ping,Healthchecks 就会发送告警通知。这种「死人开关」模式非常适合监控备份脚本、数据同步任务等关键定时任务。

一、适用场景

  • 备份脚本监控:确认数据库备份、文件备份是否按时执行。
  • Cron 任务监控:监控服务器上的定时任务是否正常运行。
  • 数据同步监控:确认数据同步任务是否按时完成。
  • SSL 证书更新:监控 Let's Encrypt 证书自动续期是否成功。
  • 定期报告:确认自动化报告是否按时生成和发送。

二、环境准备

  • 搬瓦工 VPS 一台,512MB 内存即可(使用优惠码 NODESEEK2026 享受 6.77% 折扣)。
  • 已安装 Docker 和 Docker Compose(参考 Docker 安装教程)。

三、Docker Compose 部署

mkdir -p /opt/healthchecks
cat > /opt/healthchecks/docker-compose.yml <<'EOF'
version: '3.8'

services:
  healthchecks:
    image: healthchecks/healthchecks:latest
    restart: always
    ports:
      - "8000:8000"
    environment:
      DB: sqlite
      DB_NAME: /data/hc.sqlite
      SECRET_KEY: your_random_secret_key_here
      ALLOWED_HOSTS: hc.yourdomain.com
      SITE_ROOT: https://hc.yourdomain.com
      SITE_NAME: My Healthchecks
      DEFAULT_FROM_EMAIL: noreply@yourdomain.com
      EMAIL_HOST: smtp.yourdomain.com
      EMAIL_PORT: 587
      EMAIL_USE_TLS: "True"
      EMAIL_HOST_USER: noreply@yourdomain.com
      EMAIL_HOST_PASSWORD: email_password
      SUPERUSER_EMAIL: admin@yourdomain.com
      SUPERUSER_PASSWORD: your_admin_password
      REGISTRATION_OPEN: "False"
    volumes:
      - /opt/healthchecks/data:/data
EOF

生成 SECRET_KEY:

openssl rand -hex 32

四、启动服务

cd /opt/healthchecks
docker compose up -d

访问 http://VPS_IP:8000,使用设置的管理员邮箱和密码登录。

五、创建监控检查

5.1 在 Web 界面创建

  1. 登录后点击「Add Check」。
  2. 给检查起个名称,如「数据库备份」。
  3. 设置执行周期,如「每 24 小时」。
  4. 设置宽限期(Grace Period),即超过多久未收到 ping 才发告警。
  5. 保存后会获得一个唯一的 ping URL。

5.2 在脚本中集成

在定时任务脚本的末尾添加一行 curl 命令:

#!/bin/bash
# 数据库备份脚本
pg_dump -U postgres mydb > /backup/db_$(date +%Y%m%d).sql

# 备份成功后发送 ping
curl -fsS --retry 3 https://hc.yourdomain.com/ping/your-unique-uuid

5.3 报告成功或失败

# 报告成功
curl https://hc.yourdomain.com/ping/your-uuid

# 报告开始执行
curl https://hc.yourdomain.com/ping/your-uuid/start

# 报告失败
curl https://hc.yourdomain.com/ping/your-uuid/fail

# 带退出码报告
curl https://hc.yourdomain.com/ping/your-uuid/$?

六、配置通知渠道

Healthchecks 支持多种通知渠道:

  • 邮件:默认通知方式,需要配置 SMTP。
  • Telegram:在集成设置中添加 Telegram Bot。
  • Slack:通过 Webhook 发送通知。
  • Webhook:发送 HTTP 请求到自定义 URL。
  • PagerDuty:集成 PagerDuty 告警系统。

七、配置反向代理

cat > /etc/nginx/sites-available/healthchecks <<'EOF'
server {
    listen 80;
    server_name hc.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
EOF

ln -sf /etc/nginx/sites-available/healthchecks /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d hc.yourdomain.com

八、实际应用示例

# 监控 Docker 容器备份
0 3 * * * docker exec postgres pg_dump -U user dbname > /backup/db.sql && curl -fsS https://hc.yourdomain.com/ping/uuid1

# 监控 SSL 证书续期
0 0 * * 1 certbot renew && curl -fsS https://hc.yourdomain.com/ping/uuid2

# 监控磁盘清理
0 4 * * 0 docker system prune -af && curl -fsS https://hc.yourdomain.com/ping/uuid3

九、数据备份

cp /opt/healthchecks/data/hc.sqlite /opt/healthchecks/backup_$(date +%Y%m%d).sqlite

总结

Healthchecks 是运维工作中不可或缺的工具,确保关键定时任务正常运行。搭配 GotifyNtfy 可以获得更灵活的通知能力。选购搬瓦工 VPS 请访问 bwh81.net,使用优惠码 NODESEEK2026 享受 6.77% 折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。