From 0b892a5491a8c589e834bfe5c63501e7616f1952 Mon Sep 17 00:00:00 2001 From: obrera <24781037+obrera@users.noreply.github.com> Date: Mon, 23 Feb 2026 10:13:45 +0000 Subject: [PATCH 1/4] docs(checkmate): add interval ms gotcha and remediation playbook --- src/content/docs/skills/checkmate.md | 50 ++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/content/docs/skills/checkmate.md b/src/content/docs/skills/checkmate.md index e80756c..a5e0886 100644 --- a/src/content/docs/skills/checkmate.md +++ b/src/content/docs/skills/checkmate.md @@ -60,6 +60,56 @@ TOKEN=$(curl -s $BASE/auth/login \ Interval range: 30–3600 seconds. +## Operational gotcha: monitor interval units + +**Critical:** in Checkmate runtime/DB documents, monitor `interval` is effectively treated as **milliseconds**. + +- ✅ Minute cadence in DB/runtime: `60000` +- ❌ Bad value: `60` (seconds-like) can behave like near-1-second checks + +When many monitors have very low `interval` values, the scheduler can hammer CPU, network, and MongoDB with excessive check churn. + +### How to detect quickly + +1. **Check container pressure** + ```bash + docker stats --no-stream checkmate-server checkmate-mongo + ``` +2. **Inspect interval distribution** (look for unusually low values) + ```javascript + db.monitors.aggregate([ + { $group: { _id: "$interval", count: { $sum: 1 } } }, + { $sort: { _id: 1 } } + ]) + ``` +3. **Validate recent check cadence** + - Sample recent checks/incidents and confirm they are roughly minute-spaced for normal monitors. + - If many entries are seconds apart, intervals are likely mis-scaled. + +### Safe remediation playbook + +1. **Backup monitor documents first** + ```bash + mongodump --db checkmate --collection monitors --out ./backup-$(date +%F-%H%M%S) + ``` +2. **Normalize low intervals to 60000 ms** + ```javascript + db.monitors.updateMany( + { interval: { $lt: 1000 } }, + { $set: { interval: 60000 } } + ) + ``` +3. **Restart Checkmate server** so scheduler state is refreshed. +4. **Verify post-fix cadence** + - Monitor updates should return to ~1-minute intervals. + - `docker stats` should show reduced sustained load. + +### Optional hardening + +- Add retention/TTL policies for historical checks to cap collection growth. +- Set CPU/memory limits on Checkmate and Mongo containers. +- Reduce frequency for expensive monitor types (especially `pagespeed`). + ## Links - [Checkmate GitHub](https://github.com/bluewave-labs/checkmate) From f02f9b586025e6abb6ba5a12887e21a896347404 Mon Sep 17 00:00:00 2001 From: obrera <24781037+obrera@users.noreply.github.com> Date: Mon, 23 Feb 2026 10:27:26 +0000 Subject: [PATCH 2/4] Use BUILD_TIMESTAMP env override for build stamp --- src/integrations/build-stamp.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/integrations/build-stamp.ts b/src/integrations/build-stamp.ts index bdab300..0402a12 100644 --- a/src/integrations/build-stamp.ts +++ b/src/integrations/build-stamp.ts @@ -13,7 +13,7 @@ export function buildStamp(options: { sha: string; repo: string }): AstroIntegra JSON.stringify({ sha, url: sha !== 'dev' ? `https://github.com/${repo}/commit/${sha}` : null, - built: new Date().toISOString(), + built: process.env.BUILD_TIMESTAMP || new Date().toISOString(), }), ); }, From c9ecf847a2301059f59637766483f058da5f7893 Mon Sep 17 00:00:00 2001 From: obrera <24781037+obrera@users.noreply.github.com> Date: Mon, 23 Feb 2026 10:32:55 +0000 Subject: [PATCH 3/4] docs(checkmate): use millisecond interval units in monitor example --- src/content/docs/skills/checkmate.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/docs/skills/checkmate.md b/src/content/docs/skills/checkmate.md index a5e0886..98f2bcc 100644 --- a/src/content/docs/skills/checkmate.md +++ b/src/content/docs/skills/checkmate.md @@ -54,11 +54,11 @@ TOKEN=$(curl -s $BASE/auth/login \ "description": "Production API", "type": "http", "url": "https://api.example.com", - "interval": 60 + "interval": 60000 } ``` -Interval range: 30–3600 seconds. +Interval range: 30000–3600000 milliseconds. ## Operational gotcha: monitor interval units From bd234df7f9cf072577625afd400cbcdee7817345 Mon Sep 17 00:00:00 2001 From: obrera <24781037+obrera@users.noreply.github.com> Date: Mon, 23 Feb 2026 10:38:04 +0000 Subject: [PATCH 4/4] docs(checkmate): use mongodump archive+gzip backup example --- src/content/docs/skills/checkmate.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/skills/checkmate.md b/src/content/docs/skills/checkmate.md index 98f2bcc..6a7c925 100644 --- a/src/content/docs/skills/checkmate.md +++ b/src/content/docs/skills/checkmate.md @@ -90,7 +90,7 @@ When many monitors have very low `interval` values, the scheduler can hammer CPU 1. **Backup monitor documents first** ```bash - mongodump --db checkmate --collection monitors --out ./backup-$(date +%F-%H%M%S) + mongodump --db checkmate --collection monitors --archive=./monitors-backup-$(date +%F-%H%M%S).gz --gzip ``` 2. **Normalize low intervals to 60000 ms** ```javascript