Engineering Lead
Cron Job Status Dashboard β Visual Health Check Every Morning
Cron Job Status Dashboard β Visual Health Check Every Morning
Key Takeaway
We auto-generate a visual dashboard of all 14+ cron jobs every morning β replacing manual mrchief cron list checks with a color-coded health image delivered straight to Telegram.
The Problem
Mr.Chief runs on cron jobs. Morning briefing. Email checks. Portfolio monitoring. Agent scorecards. SEC filing watchers. Newsletter scrapers. Industry scans.
14 active cron jobs at last count. Probably 16 by the time you read this.
The only way to check their health: SSH into the server and run mrchief cron list. Parse the output. Check timestamps. Calculate if "last run" was recent enough. Figure out which ones failed silently.
bashShow code
$ mrchief cron list
NAME SCHEDULE LAST RUN STATUS NEXT RUN
morning-briefing 0 7 * * * 2024-12-16 07:00:03 success 2024-12-17 07:00:00
email-check */30 * * * * 2024-12-16 14:30:01 success 2024-12-16 15:00:00
portfolio-monitor 0 */4 * * * 2024-12-16 12:00:05 success 2024-12-16 16:00:00
sec-watcher 0 */2 * * 1-5 2024-12-16 12:00:02 success 2024-12-16 14:00:00
agent-scorecard 0 18 * * 5 2024-12-13 18:00:04 success 2024-12-20 18:00:00
newsletter-scan 0 9 * * 1-5 2024-12-16 09:00:02 success 2024-12-17 09:00:00
soak-tracker 0 8 * * * 2024-12-16 08:00:01 FAILED 2024-12-17 08:00:00
integrity-check 0 6 * * * 2024-12-16 06:00:03 success 2024-12-17 06:00:00
...
I don't want to SSH. I don't want to parse CLI output. I don't want to remember that soak-tracker failed yesterday and scroll through 14 lines to find it.
I want a picture. Green means running. Red means broken. Yellow means stale. Delivered to my Telegram at 7:01 AM, right after the morning briefing.
The Solution
Table-to-Image skill applied to cron job metadata. Every morning, a meta-cron job collects status from all other cron jobs, renders a dashboard image, and attaches it to the morning briefing message.
A cron job that monitors cron jobs. Yes, it monitors itself. If it fails, the absence of the dashboard IS the alert.
The Process (with code/config snippets)
Step 1: Collect cron metadata. A script queries Mr.Chief's cron status:
bashShow code
#!/bin/bash
# collect-cron-status.sh
mrchief cron list --json > /tmp/cron-status.json
The JSON output:
jsonShow code
{
"timestamp": "2024-12-16T07:01:00Z",
"total_jobs": 14,
"healthy": 12,
"warning": 1,
"failed": 1,
"jobs": [
{
"name": "morning-briefing",
"schedule": "0 7 * * *",
"last_run": "2024-12-16T07:00:03Z",
"status": "success",
"duration": "45s",
"next_run": "2024-12-17T07:00:00Z"
},
{
"name": "soak-tracker",
"schedule": "0 8 * * *",
"last_run": "2024-12-16T08:00:01Z",
"status": "failed",
"error": "API timeout after 30s",
"next_run": "2024-12-17T08:00:00Z"
}
]
}
Step 2: Dashboard-specific image config:
yamlShow code
table_image:
theme: dark
layout: "dashboard"
background: "#0a0a0a"
title: "π₯οΈ Cron Fleet Status β {date}"
summary_bar:
enabled: true
metrics:
- label: "Total Jobs"
value: "{total_jobs}"
color: "#60a5fa"
- label: "Healthy"
value: "{healthy}"
color: "#22c55e"
- label: "Warning"
value: "{warning}"
color: "#eab308"
- label: "Failed"
value: "{failed}"
color: "#ef4444"
- label: "Uptime"
value: "{uptime_pct}%"
color: "#a78bfa"
conditional_formatting:
status:
success: { bg: "#14532d", text: "#22c55e", icon: "β
" }
warning: { bg: "#713f12", text: "#eab308", icon: "β οΈ" }
failed: { bg: "#7f1d1d", text: "#ef4444", icon: "β" }
stale: { bg: "#4a4458", text: "#a78bfa", icon: "π" }
columns:
- field: status_icon
width: "5%"
- field: name
width: "25%"
style: "monospace"
- field: schedule
width: "15%"
style: "mono, dim"
- field: last_run
width: "20%"
format: "relative" # "2h ago" instead of timestamp
- field: duration
width: "10%"
- field: next_run
width: "20%"
format: "relative" # "in 23h"
- field: status
width: "5%"
extras:
- type: "progress_bar"
label: "Disk Usage"
value: 67
max: 100
thresholds: { green: 70, yellow: 85, red: 95 }
- type: "score"
label: "Fleet Integrity"
value: "12/14"
style: "fraction"
sort: "status_priority" # Failed first, then warning, then success
footer: "Auto-generated {timestamp} | Meta-cron: healthy"
Step 3: The meta-cron triggers everything:
yamlShow code
# mrchief cron config
name: "cron-dashboard"
schedule: "1 7 * * *" # 7:01 AM, right after morning briefing
task: |
Collect cron job status for all 14+ active jobs.
Generate a dashboard image using Table-to-Image.
Attach to morning briefing message in Telegram.
If any jobs failed, add a β οΈ alert line in the briefing.
The dashboard sorts by status priority. Failed jobs float to the top. Your eye goes straight to what's broken. Healthy jobs fade into the background where they belong.
The extras section adds system health context: disk usage bar and fleet integrity score. Because a cron job might succeed but the disk might be 92% full β that's a different kind of warning.
The Results
| Metric | Manual CLI Check | Visual Dashboard |
|---|---|---|
| Time to check all jobs | 2-3 min (SSH + parse) | 3 seconds (glance) |
| Failed jobs visible | Scan 14+ lines | Red rows at top |
| Check frequency | Once/day (if remembered) | Auto, every morning |
| Stale job detection | Manual timestamp math | Auto (relative times) |
| System health context | Separate commands | Included (disk, integrity) |
| SSH required | Yes | No |
| Delivered to you | No (pull) | Yes (push) |
| Team visibility | Only admin | Shared in chat |
The self-monitoring paradox resolved itself. If the dashboard doesn't arrive at 7:01 AM, that IS the alert. The absence of information is information. I set a secondary watchdog that pings me if no dashboard image arrives by 7:05 AM.
One unexpected benefit: the team now monitors cron health without admin access. Before, only I could SSH in and check. Now, the dashboard image is in our ops channel. Anyone can see if their team's cron job failed.
Try It Yourself
- Export your cron/scheduler status to JSON
- Define health states (success, warning, failed, stale)
- Add system metrics (disk, memory, uptime) to the dashboard
- Sort by status priority β broken stuff first
- Schedule the dashboard to generate and deliver daily, right after your most important cron job runs
- Set a watchdog for the dashboard itself β if it doesn't arrive, something is very wrong
The best monitoring is the kind you don't have to remember to do. Push beats pull. Images beat terminals. Automation beats discipline.
Related case studies
Engineering Lead
Mapping the Cron Job Dependency Chain as a Visual Diagram
We turned 14+ cron job descriptions into a color-coded dependency diagram and discovered that 4 critical jobs all depended on one authentication token.
Studio Founder
Data Visualizations in Slides That PowerPoint Can't Handle
We embed D3.js charts, animated counters, and live API data into HTML slides β interactive investor presentations that PowerPoint literally cannot build.
Studio Founder
Meeting Agendas as Shareable Images for Group Chats
We render morning meeting data as clean visual agenda cards instead of walls of text β making group chat briefings actually readable and driving proactive preparation from the team.
Want results like these?
Start free with your own AI team. No credit card required.