KB-675D

S174-FIX-01B: Kuma 3 Chuong Xanh Closed-Loop Report

4 min read Revision 1

S174-FIX-01B: Kuma 3 Chuông Xanh Closed-Loop + Dọn Silent-Swallow

Ngày: 2026-04-08 Trạng thái: DONE — 7/7 verify PASS


Thay đổi trong session này

  1. Dọn 13x 2>/dev/null trong backup-to-gdrive.sh:

    • Tất cả 2>/dev/null2>&1 (errors go to log via exec > >(tee -a "$LOG_FILE") 2>&1)
    • > /dev/null 2>&1 (line 60) → >&2 (response body logged)
    • Moved exec redirect BEFORE Qdrant IP lookup so all errors are captured
    • grep -c "2>/dev/null" backup-to-gdrive.sh = 0
  2. Closed-loop 2 rounds — chạy thật, verify bằng Kuma API, không bằng đồng hồ


VERIFY 7/7

V1: Round 1 — exit code + file size + gunzip

Script Exit File Size gunzip
pg-backup.sh 0 directus_2026-04-08_1019.sql.gz 36,144,203 bytes (35MB) PASS
workflow backup.sh 0 workflow_20260408T102004Z.sql.gz 458 bytes PASS
backup-to-gdrive.sh 0 vps-backup-20260408_122032.tar.gz 75,932,107 bytes (73MB) PASS (82 tar entries)

V2: Round 1 — Kuma heartbeats

{"name":"PG Backup Local",    "last_heartbeat":"2026-04-08 10:19:56.628", "last_status":1, "msg":"OK size=35M"}
{"name":"PG Backup Workflow",  "last_heartbeat":"2026-04-08 10:20:24.997", "last_status":1, "msg":"OK size=4.0K"}
{"name":"PG Backup GDrive",   "last_heartbeat":"2026-04-08 10:20:59.227", "last_status":1, "msg":"OK archive=73M"}

V3: Round 2 — exit code + file size

Script Exit File Size
pg-backup.sh 0 directus_2026-04-08_1021.sql.gz 36,146,470 bytes
workflow backup.sh 0 workflow_20260408T102149Z.sql.gz 456 bytes
backup-to-gdrive.sh 0 vps-backup-20260408_122159.tar.gz 75,913,453 bytes

V4: Round 2 — Kuma heartbeats NEWER than Round 1

Monitor R1 timestamp R2 timestamp Delta
PG Backup Local 10:19:56 10:21:49 +113s
PG Backup Workflow 10:20:24 10:21:52 +87s
PG Backup GDrive 10:20:59 10:22:42 +103s

Vòng lặp đóng kín: R2 heartbeat > R1 heartbeat cho cả 3 monitor.

V5: Silent-swallow = 0

$ grep -c "2>/dev/null" /opt/incomex/scripts/backup-to-gdrive.sh
0
$ grep -c "2>/dev/null" /opt/incomex/scripts/pg-backup.sh
0
$ grep -c "2>/dev/null" /opt/workflow/postgres/backup.sh
0

V6: Telegram Down = 0 trong session

Không có Telegram Down message trong session này. Cả 3 monitor chưa bao giờ miss heartbeat vì chạy liên tục 2 rounds back-to-back.

V7: CHECK CUỐI CÙNG — Kuma 3/3 xanh

{"name":"PG Backup Local",    "id":12, "active":1, "last_heartbeat":"2026-04-08 10:21:49.109", "last_status":1, "last_msg":"OK size=35M"}
{"name":"PG Backup Workflow",  "id":13, "active":1, "last_heartbeat":"2026-04-08 10:21:52.206", "last_status":1, "last_msg":"OK size=4.0K"}
{"name":"PG Backup GDrive",   "id":14, "active":1, "last_heartbeat":"2026-04-08 10:22:42.065", "last_status":1, "last_msg":"OK archive=73M"}

3/3 monitors: active=1, last_status=1 (UP).


Hậu kiểm tự nhiên

Desktop verify sáng mai (2026-04-09) sau khi cron 2h chạy thật:

  • crontab -l | grep backup → 3 entries
  • ls -la /opt/incomex/backups/pg/ → file mới từ 2h sáng
  • Kuma dashboard → 3 monitor vẫn xanh
  • Telegram → không có Down message qua đêm