feat(uptimekuma): normalize names off Homepage, publish the status page, restore the widget
NAMES. Homepage already answers "what is this service called", so the monitor name is now that name verbatim -- a second naming authority is how drift starts, and an alert reading "[Uptime Kuma] Beszel hub is DOWN" sends you hunting for a card that does not exist. Only two rows moved (Beszel hub -> Beszel, Dozzle hub -> Dozzle); the " hub" suffixes were mine, not the services'. The remaining mixed case is deliberate and is now documented as such. talk, vor and task-board are lowercase on Homepage and in their own repos; title-casing them here would make this board disagree with both. What actually looked messy was scripts/kuma's own ASCII-ordinal sort, which buried every lowercase name below every capitalised one. Fixed to case-insensitive. ⚠ RENAME SAFETY, which this pass needed and did not have. The seed keys on NAME, so editing a name would have read as a brand-new monitor: added fresh, with the old row orphaned, still checking, still alerting, and holding all the history. `rename_from:` names the old row for one run. Verified: both renamed monitors kept their IDs and all 67 heartbeats. Added with it, an orphan warning for any row on the board the spec no longer names -- because a forgotten monitor keeps paging. Its first cut diffed against the PRE-EDIT snapshot and so cried wolf on its own successful renames; it re-reads the board now. A warning that fires on its own correct work is worse than no warning. STATUS PAGE + WIDGET. The Homepage uptimekuma widget reads a PUBLISHED status page (/api/status-page/<slug>), not the admin API -- which is why the widget labels were deliberately absent from the rebuild: a dashboard widget pointed at a 404 is the suspected mechanism behind both of Homepage's unkillable D-state wedges, so shipping one on purpose would have been daft. The page now exists at slug `nethealth` (the pre-rebuild slug, so old references still resolve) and is DECLARED IN monitors.yaml, applied by `kuma seed`. Same principle as the notification channel: a from-scratch rebuild restores the page, the channel and the monitors together, and nothing the widget depends on lives only in Kuma's database. Verified in a browser: "13 SITES UP / 0 SITES DOWN / 100% UPTIME" on the dashboard. ⚠ saveStatusPage calls imgDataUrl.startsWith() unconditionally, so passing null throws and leaves the page CREATED BUT EMPTY -- which reads as success from /api/status-page (200, correct title) while the group list is silently blank. Pass "" instead. Commented at the call site.
This commit is contained in:
@@ -66,13 +66,20 @@ services:
|
||||
- homepage.description=Service monitoring (fleet)
|
||||
- homepage.href=http://10.250.50.70:3001
|
||||
- homepage.siteMonitor=http://10.250.50.70:3001
|
||||
# ⚠️ NO `homepage.widget.*` LABELS YET, deliberately. The widget needs a
|
||||
# published status-page slug; on a from-scratch install none exists, so
|
||||
# the widget would poll a 404 forever. That matters more than usual
|
||||
# here: homepage widgets pointed at dead targets are the suspected
|
||||
# mechanism behind BOTH of this dashboard's unkillable D-state wedges
|
||||
# (see incident_esh_docker_nfs_boot_race, 2026-06-03). Re-add the widget
|
||||
# labels only once the status page actually exists.
|
||||
# The widget reads a PUBLISHED status page, not the admin API:
|
||||
# /api/status-page/<slug> and /api/status-page/heartbeat/<slug>. These
|
||||
# labels were deliberately absent from the 2026-09-21 rebuild until that
|
||||
# page existed, because a dashboard widget pointed at a 404 is the
|
||||
# suspected mechanism behind BOTH of Homepage's unkillable D-state wedges
|
||||
# (incident_esh_docker_nfs_boot_race, 2026-06-03) -- shipping one on
|
||||
# purpose would have been daft.
|
||||
#
|
||||
# The page is defined in monitors.yaml (`status_page:`) and applied by
|
||||
# `scripts/kuma seed`, so a from-scratch rebuild restores the slug this
|
||||
# points at. Slug `nethealth` is the one the pre-rebuild instance used.
|
||||
- homepage.widget.type=uptimekuma
|
||||
- homepage.widget.url=http://10.250.50.70:3001
|
||||
- homepage.widget.slug=nethealth
|
||||
networks:
|
||||
- tnet
|
||||
|
||||
|
||||
Reference in New Issue
Block a user