Logs
Activity → Logs searches two kinds of line together:- Your flows’ logs: what Log blocks wrote, with their level (
info,warning,error), tagged with the flow (flow:send-receipt). - Access logs: one line per API request, with its level taken from its status (errors for 5xx, warnings for 4xx).
minutes is 1 to 20,160 (14 days), limit 1 to 1,000. Pass after (an ISO time) to page forward.
Write useful logs
In a flow, add a Log block where something worth knowing happens: a branch taken, a partner’s unusual answer, a skipped record. Include ids, not personal data or secrets. How long logs are kept depends on your plan (Plans and limits).Metrics
Activity → Metrics charts any metric over time. Choose the metric, a bucket size (how much time each point covers) and a time range, and optionally compare with the previous period to see whether something changed.
Counts are measured over a window; Jobs waiting, Workers alive and Secrets due for rotation are read as they are right now.
Alarms
An alarm checks a metric every minute and emails people when it crosses a line, and again when it recovers.1
Activity → Alarms → New alarm
Give it a Name that says what’s wrong, such as Checkout errors, and a Note that says what to check first.
2
Choose the metric and the line
Pick a Metric, and Alarm when it is above, at or above, below or at or below a threshold.
3
Choose the window
Measured over (minutes): how much recent time the metric covers, 1 to 1,440. Server errors over the last 5 minutes.
4
Choose how sure to be
Checks in a row: how many consecutive minute-checks must cross the line before it fires, 1 to 60. Two or three stops a single blip from waking anyone.
5
Choose who to tell
Email these people: up to 20 addresses. Remind every (minutes): email again while it stays bad, 0 for never, up to a week.
6
Save, then test
Send test emails the recipients the current wording, whatever the state, so you know it arrives.
How an alarm decides
Each minute the alarm measures the metric. If the value crosses the line, it counts one more breach; once the count reaches Checks in a row, the state becomes alarm and recipients get an email headed [ALARM]. As soon as a check is back on the right side, the count resets, the state becomes ok, and recipients get [OK] … has recovered. The very first check going from unknown to ok sends nothing.
Every change of state also emits the
alarm.state_changed event, so you can send alerts to chat or anywhere else with a subscription or webhook.
Mute, check, history
- Mute silences an alarm’s emails for a number of minutes (up to 30 days) during planned work. It keeps checking and recording; it just doesn’t email. Muting for 0 minutes un-mutes.
- Check now evaluates it immediately instead of waiting for the next minute.
- History lists every change of state with the value that caused it and whether an email went out (or why not: muted, no recipients).
- Enabled off stops checking altogether.
From code
requests, errors_5xx, errors_4xx, error_rate, latency_avg, latency_p95, jobs_failed, job_failure_rate, jobs_waiting, flow_runs, flow_failures, events, mail_sent, mail_failed, webhook_failures, workers_alive, secrets_due. Comparisons: gt, gte, lt, lte.
Alarms worth having
Tune the numbers to your traffic: a line that’s crossed every day gets ignored.
Good practice
- Alarm on what users notice, not on every number.
- Use Checks in a row to avoid noise, and Remind every for alarms that matter at night.
- Put the first thing to check in the Note.
- After every incident, add the alarm you wish you’d had.