Healthchecks.io: cron monitoring

Cron jobs เงียบ ถ้า restic-backup.sh fail เพราะ disk เต็ม ไม่มีใครบอก — จนกว่าคุณจะต้องใช้ backup แล้วพบว่ามันว่างเปล่า

Healthchecks.io แก้ปัญหานี้ cron jobs ของคุณ ping URL เมื่อเริ่มและเสร็จ ถ้าไม่มี ping มาตามกำหนด คุณจะได้ alert

ตั้งค่า

  1. สมัครที่ healthchecks.io (ฟรี 20 checks)
  2. สร้าง check:
    • Name: “nightly backup”
    • Period: 24 hours
    • Grace: 1 hour (alert ถ้าไม่มี ping ใน 25h)
  3. จะได้ URL เช่น https://hc-ping.com/UUID

ใช้ใน bash

#!/bin/bash
set -e

curl -fsS -m 10 --retry 5 https://hc-ping.com/UUID/start > /dev/null

restic -r b2:my-bucket:vps-snapshots backup /etc /home /srv

curl -fsS -m 10 --retry 5 https://hc-ping.com/UUID > /dev/null

set -e ทำให้ success ping รันเฉพาะตอน success ถ้า restic fail script จะ exit โดยไม่ ping → healthchecks.io alert คุณ

ติดตามอะไรบ้าง

JobPeriodGrace
Database backup6h1h
Cert renewal60d7d
Log rotation check24h26h
Disk space warning24h26h
Docker image cleanup7d8d

Self-hosted version

ถ้าไม่ไว้ใจ third party กับ cron ping URLs source เปิดอยู่ รันใน Docker ใช้ Postgres backend รองรับฟีเจอร์เดียวกันหมด

ผมใช้ SaaS — check UUIDs ของผมไม่ใช่ secrets ที่ต้องปกป้อง