Project — Linux Server Health Dashboard¶
Intermediate portfolio build — turn periodic host checks into a readable dashboard artifact.
Project Overview¶
Goal: Collect health samples on a schedule and publish a dashboard file (text + optional HTML) that an on-call engineer can open over SSH or via a simple static path.
Deliverable for your portfolio:
- Check scripts (disk, memory, load, failed units, optional network)
- Aggregator that writes
reports/latest.txtandreports/latest.html - cron or systemd timer
- Threshold configuration file
- README with screenshots or sample HTML
Estimated cost: £0.
Goals¶
- Thresholds live in config (not only hard-coded)
- Latest report always overwritten; history retained under
reports/history/ - Non-zero exit when any check alerts
- Document how to install/uninstall the schedule
Stack¶
| Piece | Choice |
|---|---|
| Language | Bash (+ optional Python for HTML) |
| Scheduling | cron or systemd timer |
| Inputs | df, free, /proc/loadavg, systemctl --failed |
| Layout | bin/, config/thresholds.env, reports/, templates/ |
Prerequisites¶
- Host Monitoring
- Scheduling: cron, at, and Timers
- systemd Services and journalctl
- Labs: Ops Toolkit, Services and Logs
- Project: System Information Utility (recommended)
Milestones¶
Milestone 1 — Checks and config¶
Port or rewrite lab checks; load THRESH_DISK, THRESH_LOAD_MULT from config/thresholds.env.
Milestone 2 — Dashboard render¶
Produce a stable latest.txt. Optional: minimal HTML table with green/red status cells (no heavy frameworks).
Milestone 3 — Schedule¶
Install a user crontab or systemd user/system timer; log stdout/stderr.
Milestone 4 — Demo pack¶
Include examples/latest.html, install instructions, and a dry-run mode (--once).
Success criteria¶
./bin/health-dashboard.sh --oncecreatesreports/latest.txt- Forcing a low disk threshold yields exit
2and a red/ALERT line - Uninstall steps remove cron/timer cleanly
Related¶
- Path: Linux for Cloud & DevOps
- Next: Linux Operations Toolkit
- Interview: Linux Interview Prep