Session 0001: Ops Dashboard Core Fixes
Date: 2026-02-22
Status: Completed
Origin: MDF Webseiten session 0024
Work Done
- [x] Removed load averages tile — replaced with Containers (running/total) + Processes tiles
- [x] Fixed Health Checks section — was broken inside Docker, now runs via nsenter bridge on host
- [x] Fixed Timers section — was broken (no systemd in container), now uses nsenter on host
- [x] Added
run_command_host() to ops_runner.py for arbitrary host commands via nsenter
- [x] Rewrote timer parser — anchors on timestamp patterns instead of fragile column splitting
- [x] Fixed ops CLI health check — removed stale /opt/data2 reference, added [OK]/[FAIL] output format
- [x] Added Docker daemon running check to
ops health (reports container count)
Key Decisions / Learnings
- Dashboard container uses COPY (not volume mount) — requires
docker build + recreate for changes to take effect
- nsenter bridge pattern for host commands:
docker run --rm --privileged --pid=host alpine nsenter -t 1 -m -u -i -n -p --
ops health must exit 0 always — returning issue count breaks callers using set -euo pipefail
Files Changed
app/routers/system.py — nsenter for health+timers, containers/processes tiles
app/ops_runner.py — added run_command_host()
static/js/app.js — replaced Load tile with Containers + Processes tiles
Tags: #Session #OpsDashboard