How-to
Page on failure
Alerting turns what Sirius already knows — logs, failures, status changes, deploys, cluster events — into a notification you can acknowledge.
This is the in-product engine. It does not replace Prometheus rules over /metrics; those watch quantities only a scrape can see. Use both.
1. Add a channel
Open Operate → Alerts → Channels.
| Type | Target | Credential |
|---|---|---|
| Comma-separated recipients | SMTP password as a secret reference | |
| Slack / Teams | Incoming webhook | Secret reference |
| Webhook | HTTPS endpoint | Secret reference |
Credentials are write-only. The stored channel never returns the secret. Outbound URLs are SSRF-guarded — loopback and link-local targets are rejected in production.
Test the channel before you attach a rule.
curl -s -X POST "$SIRIUS/alerts/channels" -H 'content-type: application/json' -d '{
"name": "Ops webhook",
"type": "webhook",
"secret_provider": "managed",
"secret_name": "ops-webhook"
}'
curl -s -X POST "$SIRIUS/alerts/channels/ops-webhook/test"
2. Write a rule
A rule watches one signal.
| Signal | Fires on |
|---|---|
log | Log entries (level, event type, text) |
failure | Worker, broker, parser, or script failures |
integration_status | Health transitions (up → down) |
component | Start / stop / restart |
deploy | Advance, rollback, and related state |
cluster | Join, drain, failover, remove |
Narrow with a selector (integration_names, groups, component_ids, tags). An empty selector is tenant-wide.
Then pick a condition:
condition.type | Meaning |
|---|---|
match | Fire on each matching event |
threshold | Fire when count events land in window_seconds |
status_transition | Fire on status_from → status_to |
Set severity (info, warning, critical), throttle_seconds (how often you are notified about a flapping condition), and whether resolve should send a follow-up.
curl -s -X POST "$SIRIUS/alerts/rules" -H 'content-type: application/json' -d '{
"name": "Orders down",
"signal": "integration_status",
"severity": "critical",
"selector": {"integration_names": ["Orders to warehouse"]},
"condition": {"type": "status_transition", "status_to": "down"},
"channel_ids": ["ops-webhook"],
"throttle_seconds": 300
}'
3. Work instances
Repeat signals bump count and last_seen on the same instance. States: firing, acknowledged, resolved. Resolve closes it; the next matching signal opens a fresh instance.
curl -s -X POST "$SIRIUS/alerts/instances/<id>/ack"
curl -s -X POST "$SIRIUS/alerts/instances/<id>/resolve"
A rule that never fires is usually a selector that does not match the integration name you think it does. List integrations first, then copy the exact name.