Support
Find the cause when a monitor is not behaving, starting from the symptom you can see.
Start with the symptom.
| What you are seeing | Go to |
|---|---|
| Runs are not appearing on the timeline | Pings are not arriving |
| The monitor records incidents but nobody is paged | Alerts are not arriving |
| Beat usage is higher than expected | Usage is higher than expected |
| Alerts fire for things that are fine | Alerts are too noisy |
Browser push has its own page: push troubleshooting.
Pings are not arriving#
Work down this list. Each step rules out one layer.
- Check the host. Pings go to
https://api.drumbeats.io/v1/ping/…. A URL underdrumbeats.io/docs/…is a documentation page and will never record anything. - Re-copy the monitor ID. Copy it from the dashboard's URLs panel rather than retyping. A wrong UUID returns
404withcode: MONITOR_NOT_FOUND, and the monitor stays silent until it misses. - Check whether the monitor is paused. Paused monitors accept pings without evaluating them. The response is
200withcode: MONITOR_PAUSED. - Check the ping line actually runs.
command && curl .../successskips the ping whenever the command fails. Use;or branch on both outcomes. - Check
$?was captured immediately. Every command overwrites it, includingecho.EXIT=$?has to be the very next line. - Run the curl by hand from the same host. If it works from your laptop but not from the server, you are looking at egress rules, not Drumbeats.
Read the response body rather than only the status. Every ping error carries a machine-readable code that names the cause. See the ping API.
Alerts are not arriving#
The pings land and incidents open, but nothing reaches anyone.
- Check the monitor has a notification group. A monitor with no group and no direct channel pages nobody, and nothing in its state says so. This is the most common cause by a wide margin.
- Check the group has channels in it. An empty group behaves identically to no group.
- Click Test on the channel. If the test arrives, the channel works and the problem is the routing above it. If it does not, the problem is the channel.
- For email, confirm the recipient verified. External addresses receive nothing until they click the confirmation, and unverified ones expire.
- For Slack, Discord, or Telegram, reconnect. Tokens go stale when a workspace reinstalls the app or the bot is removed from a group. Neither notifies Drumbeats.
- Check whether surge protection is active. After
alert_surge_thresholdconsecutive alerts, paging pauses for one hour while incidents keep recording.alerts_paused_untilon the monitor holds the timestamp. - Check
alert_enabled. Set tofalse, the monitor records incidents and never pages.
Usage is higher than expected#
- Count the events per run.
startplussuccessis 2 beats. Adding threelogpings makes it 5. - Look for payloads on successful runs. Every payload costs at least one extra beat. Attaching one to every success, not just failures, doubles that monitor's cost.
- Check payload sizes. Charged in 25 KB chunks on the size you sent, including bytes truncation later discarded. A 30 KB payload is 3 beats.
- Look for a high-frequency monitor. A
1mheartbeat with start and success is 86,400 beats a month on its own. - Check for a monitor that has been down a while. Failing uptime checks retry twice, and each retry burns a beat, so a down URL costs three times its healthy rate.
- Read the top-projects breakdown in the billing usage view before assuming a billing bug.
Beats and usage has the formula and the worked examples.
Alerts are too noisy#
- Widen
grace_period_seconds. A short grace period on a job with variable start time is the leading cause of falseMISSEDalerts. The default is 300 seconds and going below it is rarely worth the noise. - Raise
failure_toleranceon jobs with known transient errors. Two absorbs a single blip. Understand the cost: on a daily job, tolerance of 2 means you learn about a real failure a day late. - Check you are not sending
startwithout a reliable finish. Astartwith no matching finish becomes a hung-run alert. Addingstartto a job you do not always finish reporting creates alerts you did not have before. - Pause during planned maintenance rather than letting the monitor flap.
curl -X POST https://api.drumbeats.io/v1/monitors/<monitor-id>/pause \
-H "X-API-Key: dk_live_<key>"
# maintenance happens
curl -X POST https://api.drumbeats.io/v1/monitors/<monitor-id>/resume \
-H "X-API-Key: dk_live_<key>"curl -X POST https://api.drumbeats.io/v1/monitors/<monitor-id>/pause \
-H "X-API-Key: dk_live_<key>"
# maintenance happens
curl -X POST https://api.drumbeats.io/v1/monitors/<monitor-id>/resume \
-H "X-API-Key: dk_live_<key>"Check your wiring before you need it#
GET /v1/monitors/<monitor-id>/warningsGET /v1/monitors/<monitor-id>/warningsReturns advisory notes about how the monitor is actually being used, computed over the last seven days: missing run_id, missing start pings on event-driven monitors, and similar. These are the mistakes that leave a monitor looking healthy while it cannot detect anything.
Worth running in CI against your production monitors.
Roll out a new channel safely#
- Create it and send a test.
- Add it to a group alongside channels you already trust.
- Attach that group to one low-stakes monitor.
- Trigger a real failure with
curl .../failureand confirm delivery. - Roll out to the monitors that matter.
Contact#
Email support@drumbeats.io for product, billing, or integration help. Paid plans get priority. There is no fixed response-time SLA.
For security questions or responsible disclosure, see the trust center.
If a customer or stakeholder needs visibility without a dashboard account, publish a status page.