Skip to main content

Cron · heartbeat · dead man's switch · Kubernetes

Monitoring for the jobs nobody is watching.

Cron job monitoring and heartbeat monitoring for scheduled work — plus a real Kubernetes HealthCheck operator. Alerted the moment a job, worker, or CronJob goes silent.

Free forever · no credit card · not website uptime monitoring

Nightly backup MISSED

ref NkdyngWn9z · expected daily 02:00 UTC · 15m grace

Ping history · last 10 runs

Jan 18 today 02:15
No ping received — 26h 12m since last success Expected by 02:15 UTC. Last success: yesterday, 02:03 UTC.

alert sent → #ops-alerts, hello@company.com 02:15:04 UTC

crontab · backup-host-03 cron
# before — runs silently, fails silently
0 2 * * * /path/to/backup-script.sh

# after — the ping only fires on success
0 2 * * * /path/to/backup-script.sh && \
  curl -fsS https://ping.seiri.app/NkdyngWn9z

"It didn't error. It just didn't run."

The scariest failures don't throw exceptions. Here's how "did it run?" shows up in the real world.

The nightly backup

Cron entry gets silently dropped after a server migration. Nobody notices until a restore is needed — and there's nothing to restore.

Invoice generation

The billing script exits 0 but skips a batch because of a timezone bug. Customers don't get invoiced, and finance finds out at month-end.

The ETL pipeline

An upstream job hangs before the transform step finishes. The dashboard keeps showing yesterday's numbers, and nobody's watching the pipeline itself.

The Kubernetes CronJob

A pod gets evicted mid-run during a node drain. The job shows no error in `kubectl` logs — it just never reached completion.

Three steps. One line of code.

Seiri flips monitoring around: instead of polling a URL, your job tells Seiri it's alive.

1

Create a monitor

Tell Seiri the expected schedule — cron expression or interval — and a grace period. You get a unique ping URL and a unique @ping.seiri.app email address.

2

Ping when it finishes

Add a curl call, send an email, or install the seiri-kube-agent Helm operator and declare HealthCheck CRs for in-cluster workloads.

3

Get alerted the moment it's late

No ping within the grace period triggers an instant alert to Slack, Discord, email, SMS, or a custom webhook — before anyone notices the impact.

Two ways to check in

Pick whichever fits how your job runs.

# Before
0 2 * * * /path/to/backup-script.sh
# After — ping only fires on success
0 2 * * * /path/to/backup-script.sh && curl -fsS https://ping.seiri.app/NkdyngWn9z
No outbound HTTP required

Can it send an email? Then it can check in.

Locked-down networks, legacy cron boxes, and internal servers often can't make outbound HTTP calls — but they can almost always send mail. Every Seiri monitor gets its own @ping.seiri.app address. Send it an email when your job finishes, and Seiri treats it exactly like an HTTP ping.

  • Works from restricted networks and air-gapped environments
  • No client library, no SDK — just mail or sendmail
  • Same alerting, grace periods, and dashboard as HTTP monitors
Learn more about email heartbeats
New message
To: a1b2c3d4@ping.seiri.app
Subject: nightly-backup ok
— sent automatically by cron on backup-host-03 —
Received by Seiri · webhook “Nightly backup” marked healthy
seiri-kube-agent · Helm operator

Watch cluster workloads with HealthCheck CRs

Install the Seiri HealthCheck Operator into your cluster. It watches HealthCheck custom resources and continuously checks Deployments, Pods, StatefulSets, DaemonSets, and Jobs — reporting phases like Healthy, Unhealthy, and Missing back to Seiri for alerts and dashboards.

  • Helm chart with least-privilege RBAC + hardened securityContext
  • CRD healthchecks.monitoring.seiri.app
  • Register the cluster in cloud.seiri.app for authToken + clusterId
# values from your Seiri cluster registration
helm install seiri-kube-agent ./helm-main \
  -n seiri-system --create-namespace \
  --set seiri.authToken="…" \
  --set seiri.clusterId="…"
# monitor a Deployment
apiVersion: monitoring.seiri.app/v1alpha1
kind: HealthCheck
metadata:
  name: check-my-app
spec:
  targetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app
  interval: 10s
  checkID: "chk-my-app"

Built for scheduled work, not websites

Everything you need to trust that your background jobs actually ran.

Heartbeat monitoring

Push-based checks catch jobs that never run, hang, or exit early — the failures a URL probe would never see.

Email heartbeats

A unique @ping.seiri.app address per monitor, for jobs that can send mail but can't make HTTP calls.

Kubernetes HealthCheck operator

Install seiri-kube-agent with Helm. It watches HealthCheck CRs and reports Deployment, Pod, Job, StatefulSet, and DaemonSet health to Seiri.

See install guide →

Multi-channel alerts

Slack, Discord, email, SMS, and custom webhooks — with escalation across channels when the first alert goes unacknowledged.

Status pages

Share a public or custom-domain status page for the jobs and services your team or customers care about.

REST API

Create and manage monitors programmatically with scoped API keys — provision monitoring as part of your deploy pipeline.

Simple pricing, three plans

Start free. Upgrade when you outgrow it. No fake trials — just a generous free tier.

Free

$0

Free forever

  • 10 monitors
  • 5-minute check interval
  • 3 seats
  • 1 status page
  • 1 email heartbeat
  • 1 API key
Start free
Most Popular

Growth

$19/mo

For growing teams

  • 40 monitors (+$5/20 extra)
  • 1-minute check interval
  • 10 seats
  • Custom status domain
  • 5 email heartbeats
  • 10 API keys
Start free

Scale

$49/mo

For high-volume infra

  • 250 monitors
  • 30-second check interval
  • 15 seats
  • 10 Kubernetes clusters
  • 25 email heartbeats
Start free

Who it's for

If something on your infrastructure is supposed to run on a schedule, Seiri is built for you.

Backend engineers

Cron jobs, queue workers, and scheduled scripts that run without anyone watching.

Data engineers

ETL pipelines and batch jobs where a stale dashboard is worse than an error message.

DevOps & SRE teams

seiri-kube-agent HealthChecks across Deployments, Jobs, and clusters — plus heartbeat webhooks for everything else.

Solo founders

Backups, reports, and integrations you can't afford to find out failed a week later.

Frequently Asked Questions

Is Seiri website uptime monitoring?

No. Seiri doesn't poll a URL to see if your website is up. It's built for scheduled work — cron jobs, background workers, and Kubernetes CronJobs — that ping Seiri when they finish. If the ping doesn't arrive on schedule, you're alerted immediately.

How does the heartbeat model work?

You create a monitor with an expected schedule and grace period, then add one line to your job: a curl request to your unique ping URL, or an email to your unique @ping.seiri.app address. If Seiri doesn't receive that ping within the expected window, it sends an alert.

What is an email heartbeat?

An email heartbeat lets a job check in by sending an email instead of an HTTP request. This works for systems with restricted outbound access, legacy servers, or anything that can send mail but can't easily make an HTTP call. Just send an email to your unique @ping.seiri.app address.

Can Seiri monitor Kubernetes workloads?

Yes. Install seiri-kube-agent with Helm (needs your cluster’s auth token + cluster ID from cloud.seiri.app). Create HealthCheck CRs for Deployments, Pods, Jobs, StatefulSets, or DaemonSets — phases like Healthy / Unhealthy / Missing show up in Seiri. CronJobs can also still ping ping.seiri.app on completion.

Do you offer status pages?

Yes. Every plan includes at least one status page you can share with your team or customers, and Growth and Scale plans support a custom status domain.

Is there a free plan?

Yes — free forever, no credit card required. It includes 10 monitors, a 5-minute check interval, 3 seats, 1 status page, 1 email heartbeat, and 1 API key.

Did it run today?

You'll know the moment it doesn't. Set up your first heartbeat monitor in under two minutes.

Free forever · no credit card required · setup in 2 minutes