Engineering Lead

Cron Job Status Dashboard β€” Visual Health Check Every Morning

3 sec glance vs 2-3 min SSHDesign & Content6 min read

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

MetricManual CLI CheckVisual Dashboard
Time to check all jobs2-3 min (SSH + parse)3 seconds (glance)
Failed jobs visibleScan 14+ linesRed rows at top
Check frequencyOnce/day (if remembered)Auto, every morning
Stale job detectionManual timestamp mathAuto (relative times)
System health contextSeparate commandsIncluded (disk, integrity)
SSH requiredYesNo
Delivered to youNo (pull)Yes (push)
Team visibilityOnly adminShared 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

  1. Export your cron/scheduler status to JSON
  2. Define health states (success, warning, failed, stale)
  3. Add system metrics (disk, memory, uptime) to the dashboard
  4. Sort by status priority β€” broken stuff first
  5. Schedule the dashboard to generate and deliver daily, right after your most important cron job runs
  6. 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.

cron jobsmonitoringdata visualizationoperations

Want results like these?

Start free with your own AI team. No credit card required.

Cron Job Status Dashboard β€” Visual Health Check Every Morning β€” Mr.Chief