Synchronoid is in private beta. New workspaces open in small batches every few weeks. Join the waitlist →

Alerts

Alerts tell the right person when something needs attention, and stay quiet when it does not. An alert rule watches a condition, and a channel delivers the message. This guide shows how to set up both and how to keep on-call load low.

Alert rules

A rule has a condition, a scope, a severity and one or more channels. Rules live in synchronoid.yaml, so they are reviewed and deployed together with your pipelines. You can also edit them in the control room under Alerts.

synchronoid.yaml
alerts:
  source-paused:
    when: source.paused
    severity: critical
    channels: [oncall-pagerduty, data-alerts]

  run-failed:
    when: run.failed
    scope: { pipeline: "companies_*" }
    severity: high
    channels: [data-alerts]

  stale-data:
    when: asset.freshness_exceeded
    scope: { asset: companies_current }
    threshold: "26h"
    severity: medium
    channels: [email-data-team]
ConditionFires when
run.failedA run fails after all retries are used.
run.retryingA run needs more than threshold attempts (default 3).
run.duration_exceededA run takes longer than threshold.
source.pausedA source is paused, manually or automatically.
source.rate_limitedThe average wait for budget exceeds threshold.
asset.freshness_exceededAn asset was not updated within threshold.
quality.check_failedA data quality check fails.
feed.delivery_failingA webhook endpoint keeps returning errors.

Channels

A channel is a named destination. Define it once, and use the name in any rule.

synchronoid.yaml
channels:
  data-alerts:
    type: slack
    webhook_url: ${secret:SLACK_WEBHOOK}
  oncall-pagerduty:
    type: pagerduty
    routing_key: ${secret:PAGERDUTY_KEY}
  email-data-team:
    type: email
    to: [data-team@example.com]
  ops-hook:
    type: webhook
    url: https://example.com/hooks/synchronoid-alerts
    signing_secret: ${secret:OPS_HOOK_SECRET}

Test a channel before you rely on it:

terminal
$ syn alerts test oncall-pagerduty
Sent a test alert to oncall-pagerduty (status 202)

Grouping and quiet periods

If a provider is down, fifty assets can fail at the same time. Synchronoid groups alerts that share a source into one message and updates it as more failures arrive. You can tune this with group_by and cooldown.

synchronoid.yaml
  run-failed:
    when: run.failed
    group_by: [source]
    cooldown: "30m"          # do not repeat the same alert within 30 minutes
    mute_during: "maintenance"

On-call tips

Look up the error codeEach alert contains an error code such as SYN-1042. The Troubleshooting page lists the usual cause and fix for each.