Alarms page
Sidebar → Alarms. Grafana-backed alert rules scoped to this organization.
Tabs
- Rules — definitions you manage
- Firing — currently-triggering instances. Same data as the
standalone
/alarms/firingpage
Rules tab
| Column | Meaning |
|---|---|
| Name | Rule label |
| Severity | low / medium / high / critical badge |
| State | Normal / Alerting / Pending / Disabled |
| Threshold | Operator + value, e.g. > 0.9 |
| For | Pending duration |
| Last evaluation | Timestamp of most recent check |
| Actions | Edit / Disable-toggle / Delete / Open in Grafana |
The Add alarm CTA is at the top right (perm-gated).
Filter chips: severity, state, search.
Add / Edit drawer
Three sections:
Identity
- Name, description, severity
Query
- PromQL input — multi-line; the backend auto-injects the
tenant scope label, so don't write
telemetry_id=...yourself - Test query button — runs the query right now and shows returned series + values without saving
Threshold + cadence
- Operator (
><>=<===!=) + numeric value - For duration — how long the condition must hold before the
rule moves from
PendingtoAlerting
You don't pick the evaluation interval — every DT Edge Platform alarm runs at the platform default (60s). The interval picker is intentionally absent.
Firing tab
Live list of every rule currently in Alerting state for the
active org.
| Column | Meaning |
|---|---|
| Severity | Coloured badge |
| Rule | Name (click to open the firing detail) |
| Started at | When this firing instance began |
| Latest value | Current metric value + threshold |
| Edges | Which of your org's edges contributed matching data |
| Actions | Open in Grafana · Edit rule |
Updates live via WebSocket; polls every 30s as a fallback.
Filter chips: severity, search.
Firing detail panel
Click a firing row:
- The PromQL the rule evaluates (with tenant scope already applied — what Grafana actually sees)
- A small chart of the last 6 hours of values, with the threshold drawn as a dashed line
- Open in Grafana button — deep-link
- Edit rule button — opens the rule edit drawer
Disable / re-enable
Per-row toggle in the Rules tab. Disabled rules don't evaluate and don't fire; they stay in the list with a grey state badge so you don't lose the definition.
Delete
Per-row action. Confirms with a dialog. Removes the rule from Grafana; firing alerts for it stop within the next eval window (≤60s).
How tenant scoping happens
DT Edge Platform stamps every rule with two labels:
dtedge_managed=truedtedge_org_id=<this-org-uuid>
And rewrites the PromQL by walking the AST, injecting
telemetry_id=~"<edge-uuid-1>|<edge-uuid-2>|..." into every
VectorSelector. The list/get/update/delete handlers filter by
these labels so an org user only ever sees their own rules. Read
more at
Explanation: alarms and tenant scoping.