Silent job failures
end tonight.
Your nightly invoice job failed at 2am. Your database backup didn't run on Sunday. Your email queue has been stuck for three hours. You found out when a user complained.
Umlogger's missing-data alerts fix this. Each job pings one URL on success. If the ping stops arriving, you get an email. No agents to install. No Prometheus exporters to configure. No PagerDuty bill. Read the cron monitoring guide →
How missing-data alerts work
This is the key insight that makes Umlogger perfect for job monitoring: instead of checking whether a job ran, you check whether data stopped arriving.
Works in any language, any runtime
If your cron job can make an HTTP request, it can report to Umlogger. Python, Node, Ruby, Go, Bash — one GET at the end of the job is all it takes.
#!/bin/bash START=$(date +%s%3N) # --- your job here --- python /opt/scripts/invoice_gen.py DURATION=$(( $(date +%s%3N) - START )) curl -s "https://data.umlogger.com/api/m?key=pmk_JOB_KEY&value=$DURATION"
import time, urllib.request
start = time.time()
# --- your job here ---
run_weekly_export()
duration_ms = int((time.time() - start) * 1000)
urllib.request.urlopen(
f"https://data.umlogger.com/api/m?key=pmk_JOB_KEY&value={duration_ms}"
)const start = Date.now()
// --- your job here ---
await processEmailQueue()
const ms = Date.now() - start
await fetch(
`https://data.umlogger.com/api/m?key=pmk_JOB_KEY&value=${ms}`
)Not just cron — anything that runs periodically
The same pattern works for any recurring task.
Track queue depth — not just job completions
A queue that's growing is a problem waiting to happen. Log the queue depth as a value metric every minute and set a threshold alert for when it exceeds your comfortable ceiling.
Combine it with a job-completion metric and you get a full picture: items entering vs. items processed — without running a metrics sidecar.
// Push queue depth every minute (BullMQ example)
setInterval(async () => {
const waiting = await queue.getWaitingCount()
await fetch(
`https://data.umlogger.com/api/m?key=pmk_QUEUE_DEPTH_KEY` +
`&value=${waiting}`
)
}, 60_000)
// Alert configured in Umlogger UI:
// "value exceeds 500 for more than 5 minutes"
// → email the on-call engineerFind out about failures
before your users do.
42-day free trial. No credit card required. Works with any language or runtime that can make an HTTP request.
Start monitoring jobs →