{
  "last_update": "2026-04-22 09:00:08",
  "host": "czechai-179",
  "components": {
    "selftest": {
      "last_ts": 1775402177,
      "status": "ok"
    },
    "disk": {
      "used_pct": 100,
      "free": 0,
      "level": "CRIT",
      "last_check": "2026-04-22 09:00:02"
    },
    "master_db_backup": {
      "last_success_ts": 1776837629,
      "last_success": "2026-04-22 06:00:29",
      "last_rows": 152241,
      "last_size_gz": 77561989,
      "local_count": 14,
      "offsite_count": 14,
      "offsite_status": "OK",
      "health": "OK"
    },
    "heartbeat": {
      "last_check": "2026-04-22 08:15:01",
      "status": "OK",
      "last_backup_age_min": 134,
      "latest": "MASTER_LIVE_20260422_060001.db.gz"
    },
    "recovery_test": {
      "last_ts": 1776828613,
      "last_run": "2026-04-22 03:30:13",
      "restored_rows": 237843,
      "live_rows": 233595,
      "diff": 4248,
      "integrity": "ok",
      "status": "OK",
      "tested_file": "MASTER_LIVE_20260421_220001.db.gz"
    },
    "db_sync": {
      "last_sync": "2026-04-22 08:30:36",
      "rows": 236386,
      "size": 442552320,
      "status": "OK"
    }
  },
  "recent_alerts": [
    {
      "ts": "2026-04-07 15:45:01",
      "level": "CRIT",
      "component": "DISK",
      "title": "root",
      "msg": "95%% used, 8.5G free (prev=WARN)"
    },
    {
      "ts": "2026-04-07 20:45:01",
      "level": "OK",
      "component": "DISK",
      "title": "root",
      "msg": "87%% used, 20G free (prev=CRIT)"
    },
    {
      "ts": "2026-04-08 03:30:05",
      "level": "WARN",
      "component": "RECOVERY_TEST",
      "title": "backup",
      "msg": "row count drift: restored=168140 live=180464 diff=12324 (>0.5%%)"
    },
    {
      "ts": "2026-04-08 06:00:11",
      "level": "CRIT",
      "component": "BACKUP",
      "title": "master_db",
      "msg": "row count suspiciously low: 89040 (expected >100k)"
    },
    {
      "ts": "2026-04-08 08:15:01",
      "level": "CRIT",
      "component": "HEARTBEAT",
      "title": "backup",
      "msg": "latest backup is 10h old (MASTER_LIVE_20260407_220001.db.gz) - cron may be broken"
    },
    {
      "ts": "2026-04-08 09:15:01",
      "level": "CRIT",
      "component": "HEARTBEAT",
      "title": "backup",
      "msg": "latest backup is 11h old (MASTER_LIVE_20260407_220001.db.gz) - cron may be broken"
    },
    {
      "ts": "2026-04-08 10:15:01",
      "level": "CRIT",
      "component": "HEARTBEAT",
      "title": "backup",
      "msg": "latest backup is 12h old (MASTER_LIVE_20260407_220001.db.gz) - cron may be broken"
    },
    {
      "ts": "2026-04-08 11:15:01",
      "level": "CRIT",
      "component": "HEARTBEAT",
      "title": "backup",
      "msg": "latest backup is 13h old (MASTER_LIVE_20260407_220001.db.gz) - cron may be broken"
    },
    {
      "ts": "2026-04-08 12:15:01",
      "level": "CRIT",
      "component": "HEARTBEAT",
      "title": "backup",
      "msg": "latest backup is 14h old (MASTER_LIVE_20260407_220001.db.gz) - cron may be broken"
    },
    {
      "ts": "2026-04-08 13:15:01",
      "level": "CRIT",
      "component": "HEARTBEAT",
      "title": "backup",
      "msg": "latest backup is 15h old (MASTER_LIVE_20260407_220001.db.gz) - cron may be broken"
    },
    {
      "ts": "2026-04-08 17:15:01",
      "level": "WARN",
      "component": "DISK",
      "title": "root",
      "msg": "90%% used, 16G free (prev=OK)"
    },
    {
      "ts": "2026-04-09 00:00:01",
      "level": "OK",
      "component": "DISK",
      "title": "root",
      "msg": "87%% used, 19G free (prev=WARN)"
    },
    {
      "ts": "2026-04-09 14:15:02",
      "level": "WARN",
      "component": "DISK",
      "title": "root",
      "msg": "90%% used, 16G free (prev=OK)"
    },
    {
      "ts": "2026-04-09 22:15:01",
      "level": "CRIT",
      "component": "DISK",
      "title": "root",
      "msg": "95%% used, 8.6G free (prev=WARN)"
    },
    {
      "ts": "2026-04-10 00:15:01",
      "level": "OK",
      "component": "DISK",
      "title": "root",
      "msg": "87%% used, 19G free (prev=CRIT)"
    },
    {
      "ts": "2026-04-10 03:30:04",
      "level": "WARN",
      "component": "RECOVERY_TEST",
      "title": "backup",
      "msg": "row count drift: restored=193253 live=195849 diff=2596 (>0.5%%)"
    },
    {
      "ts": "2026-04-10 04:45:01",
      "level": "WARN",
      "component": "DISK",
      "title": "root",
      "msg": "90%% used, 16G free (prev=OK)"
    },
    {
      "ts": "2026-04-10 09:45:01",
      "level": "CRIT",
      "component": "DISK",
      "title": "root",
      "msg": "95%% used, 8.6G free (prev=WARN)"
    },
    {
      "ts": "2026-04-11 00:15:01",
      "level": "OK",
      "component": "DISK",
      "title": "root",
      "msg": "87%% used, 20G free (prev=CRIT)"
    },
    {
      "ts": "2026-04-11 03:30:05",
      "level": "WARN",
      "component": "RECOVERY_TEST",
      "title": "backup",
      "msg": "row count drift: restored=195320 live=196975 diff=1655 (>0.5%%)"
    },
    {
      "ts": "2026-04-11 04:45:01",
      "level": "WARN",
      "component": "DISK",
      "title": "root",
      "msg": "90%% used, 16G free (prev=OK)"
    },
    {
      "ts": "2026-04-11 15:45:01",
      "level": "CRIT",
      "component": "DISK",
      "title": "root",
      "msg": "95%% used, 8.5G free (prev=WARN)"
    },
    {
      "ts": "2026-04-12 00:15:01",
      "level": "OK",
      "component": "DISK",
      "title": "root",
      "msg": "84%% used, 24G free (prev=CRIT)"
    },
    {
      "ts": "2026-04-12 03:30:05",
      "level": "WARN",
      "component": "RECOVERY_TEST",
      "title": "backup",
      "msg": "row count drift: restored=203931 live=126133 diff=77798 (>0.5%%)"
    },
    {
      "ts": "2026-04-12 14:45:01",
      "level": "WARN",
      "component": "DISK",
      "title": "root",
      "msg": "90%% used, 16G free (prev=OK)"
    },
    {
      "ts": "2026-04-12 20:30:01",
      "level": "OK",
      "component": "DISK",
      "title": "root",
      "msg": "88%% used, 19G free (prev=WARN)"
    },
    {
      "ts": "2026-04-13 03:30:18",
      "level": "WARN",
      "component": "RECOVERY_TEST",
      "title": "backup",
      "msg": "row count drift: restored=217659 live=214700 diff=2959 (>0.5%%)"
    },
    {
      "ts": "2026-04-14 03:30:04",
      "level": "WARN",
      "component": "RECOVERY_TEST",
      "title": "backup",
      "msg": "row count drift: restored=219393 live=216067 diff=3326 (>0.5%%)"
    },
    {
      "ts": "2026-04-14 10:10:25",
      "level": "WARN",
      "component": "DB_SYNC",
      "title": "sync",
      "msg": "remote sqlite3 .backup failed"
    },
    {
      "ts": "2026-04-15 03:30:04",
      "level": "WARN",
      "component": "RECOVERY_TEST",
      "title": "backup",
      "msg": "row count drift: restored=220429 live=217873 diff=2556 (>0.5%%)"
    },
    {
      "ts": "2026-04-15 23:15:01",
      "level": "WARN",
      "component": "DISK",
      "title": "root",
      "msg": "90%% used, 16G free (prev=OK)"
    },
    {
      "ts": "2026-04-16 00:15:01",
      "level": "OK",
      "component": "DISK",
      "title": "root",
      "msg": "88%% used, 19G free (prev=WARN)"
    },
    {
      "ts": "2026-04-16 11:00:01",
      "level": "WARN",
      "component": "DISK",
      "title": "root",
      "msg": "90%% used, 16G free (prev=OK)"
    },
    {
      "ts": "2026-04-17 21:30:01",
      "level": "OK",
      "component": "DISK",
      "title": "root",
      "msg": "74%% used, 38G free (prev=WARN)"
    },
    {
      "ts": "2026-04-18 21:15:01",
      "level": "WARN",
      "component": "DISK",
      "title": "root",
      "msg": "92%% used, 12G free (prev=OK)"
    },
    {
      "ts": "2026-04-18 21:30:01",
      "level": "CRIT",
      "component": "DISK",
      "title": "root",
      "msg": "95%% used, 7.8G free (prev=WARN)"
    },
    {
      "ts": "2026-04-18 22:45:01",
      "level": "OK",
      "component": "DISK",
      "title": "root",
      "msg": "85%% used, 22G free (prev=CRIT)"
    },
    {
      "ts": "2026-04-19 03:30:14",
      "level": "WARN",
      "component": "RECOVERY_TEST",
      "title": "backup",
      "msg": "row count drift: restored=236497 live=221838 diff=14659 (>0.5%%)"
    },
    {
      "ts": "2026-04-20 03:30:46",
      "level": "WARN",
      "component": "RECOVERY_TEST",
      "title": "backup",
      "msg": "row count drift: restored=225590 live=229514 diff=3924 (>0.5%%)"
    },
    {
      "ts": "2026-04-20 12:30:01",
      "level": "WARN",
      "component": "DISK",
      "title": "root",
      "msg": "90%% used, 16G free (prev=OK)"
    },
    {
      "ts": "2026-04-20 23:15:01",
      "level": "OK",
      "component": "DISK",
      "title": "root",
      "msg": "83%% used, 26G free (prev=WARN)"
    },
    {
      "ts": "2026-04-21 02:15:01",
      "level": "WARN",
      "component": "DISK",
      "title": "root",
      "msg": "92%% used, 12G free (prev=OK)"
    },
    {
      "ts": "2026-04-21 02:30:01",
      "level": "OK",
      "component": "DISK",
      "title": "root",
      "msg": "86%% used, 21G free (prev=WARN)"
    },
    {
      "ts": "2026-04-21 03:30:05",
      "level": "WARN",
      "component": "RECOVERY_TEST",
      "title": "backup",
      "msg": "row count drift: restored=232492 live=229219 diff=3273 (>0.5%%)"
    },
    {
      "ts": "2026-04-21 08:45:01",
      "level": "WARN",
      "component": "DISK",
      "title": "root",
      "msg": "90%% used, 16G free (prev=OK)"
    },
    {
      "ts": "2026-04-21 12:15:01",
      "level": "OK",
      "component": "DISK",
      "title": "root",
      "msg": "85%% used, 23G free (prev=WARN)"
    },
    {
      "ts": "2026-04-21 17:00:01",
      "level": "WARN",
      "component": "DISK",
      "title": "root",
      "msg": "90%% used, 16G free (prev=OK)"
    },
    {
      "ts": "2026-04-21 21:45:01",
      "level": "CRIT",
      "component": "DISK",
      "title": "root",
      "msg": "95%% used, 8.6G free (prev=WARN)"
    },
    {
      "ts": "2026-04-22 03:30:13",
      "level": "WARN",
      "component": "RECOVERY_TEST",
      "title": "backup",
      "msg": "row count drift: restored=237843 live=233595 diff=4248 (>0.5%%)"
    },
    {
      "ts": "2026-04-22 09:00:08",
      "level": "WARN",
      "component": "DB_SYNC",
      "title": "sync",
      "msg": "scp of backup failed"
    }
  ]
}