The problem
Why this is hard today
Silent failures
A nightly job stops running and nobody notices for a week.
No request to trace
Background work has no HTTP route, so most APM tools barely show it.
Slow queues
Workers fall behind and the only signal is a customer complaint.
What you use
Built from features that ship today
Jobs and queues
NestJS @Cron/@Interval and BullMQ with one install line, any other job through owlpane.job().
APM & tracing →Requests and spans
Each run has a full waterfall — database queries, outgoing calls and nested work.
APM & tracing →Alert rules
Checked every minute; one message when an alert fires and one when it resolves.
Alerting & SLOs →How it works
Three steps
Wrap
NestJS schedulers and BullMQ are picked up by @owlpane/node; wrap anything else in owlpane.job().
Watch
Every run is recorded with its duration, outcome and trace.
Alert
Add a rule on failures or duration and route it to your channel.
import { owlpane } from "@owlpane/node";
await owlpane.job("nightly-invoices", "cron", {}, async () => {
await sendInvoices();
});Questions
What about Python, Go or Java jobs?
Where Owlpane is narrower
- One-line job instrumentation is Node/NestJS only today; other languages use plain OpenTelemetry spans.
More use cases
Related solutions
Send a copy of your telemetry. Change nothing else.
Standard OpenTelemetry in, so you can try Owlpane beside what you run today.
Every new workspace starts with a 14-day Team trial: 50 GB of ingest a month and 30-day retention. No card to start. Documentation · Pricing · Pricing questions
