OAK CREEK

Heartbeat monitoring for scheduled jobs

Find out when a scheduled job doesn't run.

Backups, invoice syncs, certificate renewals and report exports fail quietly. Add one curl line to each job. Oak Creek works out when the next ping is due from its cron schedule and time zone, and alerts your team when it is late, fails or runs far longer than usual.

No agent. Outbound HTTPS only. Plans from $19 a month for 50 checks.

/etc/cron.d/pg-backup

# /etc/cron.d/pg-backup  (runs 02:15 America/Los_Angeles)
15 2 * * * deploy \
  curl -fsS -m 10 --retry 3 https://ping.oakcreekventures.xyz/7f3c2a91/start && \
  /opt/scripts/pg_backup.sh > /tmp/pg_backup.log 2>&1; \
  curl -fsS -m 10 --retry 3 --data-binary @/tmp/pg_backup.log \
  https://ping.oakcreekventures.xyz/7f3c2a91/$?
Illustrative product interface

From first check to first alert in about ten minutes

  1. 01

    Create a check

    Give it a name, a cron expression such as 15 2 * * *, the time zone it runs in and a grace period. Oak Creek returns a unique ping URL.

  2. 02

    Add the ping to your job

    Call the URL with curl, wget, PowerShell Invoke-RestMethod or any HTTP client. Send /start before the work and the exit code after it.

  3. 03

    Choose who hears about it

    Route each check to a Slack channel, a Microsoft Teams channel, a PagerDuty service, email addresses or your own webhook.

  4. 04

    Read the run history

    Every run shows start time, duration, exit code and the last lines of output, so the first question after an alert already has an answer.

Late is measured against the schedule

A check knows its cron expression, time zone and grace period. If nightly-pg-backup should ping at 02:15 with a 20-minute grace period and nothing has arrived by 02:35, the check turns Late and the first alert goes out. Silence is treated as a failure, which is how most broken cron jobs actually look.

  • Cron expressions or simple periods (every 15 minutes, every 6 hours)
  • IANA time zones, with daylight saving changes handled
  • Tags such as prod, billing or client-acme-staging for filtering and routing
Illustrative product interface
Illustrative product interface

Failures and slow runs, not only missing ones

Send the exit code with the final ping and any non-zero result is a failure. Send /start as well and Oak Creek records how long each run took. Set a maximum duration, or let it flag runs that take more than twice the median, a common sign of a growing table or a stuck lock.

Alerts that escalate and close themselves

Start with a Slack or Microsoft Teams message. If the check is still down after a delay you choose, open a PagerDuty incident or email the on-call address. When the next good ping arrives, Oak Creek posts the recovery and resolves the incident, so nobody has to remember to close it.

Illustrative product interface

Who uses Oak Creek, and what they monitor

Product engineering teams

Background work that runs outside the request path and nobody watches.

  • Kubernetes CronJobs and Celery beat tasks
  • Nightly database dumps to S3 or Backblaze B2
  • Payment and invoice reconciliation with Stripe

Agencies and dev studios

Many client sites, one place to see which scheduled tasks stopped.

  • WordPress WP-Cron and Laravel Scheduler jobs
  • Let's Encrypt certificate renewals
  • One project per client, with separate alert routes

IT and systems administrators

Scripts on servers and NAS boxes that only get noticed when a restore is needed.

  • Windows Task Scheduler and PowerShell scripts
  • rsync, restic and Veeam job wrappers
  • systemd timers on Linux hosts

What we store, and how we protect it

Oak Creek is built to receive as little as possible. A ping carries a timestamp, source IP, user agent and an optional exit code. Output is only stored if you send it.

Encryption
TLS 1.2+ for every ping and API call. Stored data, including log tails, is encrypted at rest.
Limited output
At most the last 10 KB of a request body is kept per run. Strip secrets before sending; we never ask for credentials.
Scoped keys
Ping URLs can be rotated at any time. API keys are either read-only or read-write, per project.
Export and deletion
Export checks and run history as JSON or CSV. Deleted projects are purged from production systems within 30 days.
Access
Team members get Owner, Admin or Viewer roles. Viewers can see status and history but cannot change alerts.
Support response
Email replies within one business day on Starter and Team, within four business hours on Business.

Questions engineers ask first

Do I need to install an agent or open a port?

No. Your job makes an outbound HTTPS request to Oak Creek. Nothing listens on your servers and Oak Creek never connects into your network.

What happens if the ping itself fails because of a network blip?

Use curl's --retry flag as in the example above. If no ping arrives within the grace period, the check goes Late and then Down, which is usually what you want to know anyway.

How do you handle daylight saving time?

Cron checks store an IANA time zone such as America/Los_Angeles or Europe/Berlin. Expected run times are calculated in that zone, so a 02:15 job is still expected at 02:15 local time after the clock changes.

Can I see why a job failed?

Yes, if you send it. Post the job's output in the body of the final ping and Oak Creek keeps the last 10 KB with that run. Without a body, you still get the exit code and duration.

What counts toward my plan?

Checks. Each monitored job is one check, regardless of how often it runs or how many people on your team receive alerts.

Can we pause alerts during a deploy or maintenance?

Yes. Pause a single check, or create a maintenance window for a tag such as prod-db so alerts are held until the window closes.

Put your most important job under watch today

Email us to open a 14-day trial with Team limits. No card needed to start.