Skip to content

Checks overview

amlint runs 35 checks grouped into four categories. 20 of them duplicate validation that amtool check-config already does (Alertmanager refuses to start on these — included for unified output, not because amtool misses them). The other 15 are configs that load and run fine, and just don't do what you meant — the real reason to run amlint at all.

code level also in amtool category
undefined-receiver error ✓ Routing
no-root-route error ✓ Routing
invalid-root-route error ✓ Routing
bad-regex error ✓ Routing
bad-matcher error ✓ Routing
bad-match-label error ✓ Routing
groupby-ellipsis error ✓ Routing
unreachable-route warn Routing
route-match-collision warn Routing
shadowed-route warn Routing
stripped-brace warn Routing
useless-continue info Routing
deep-nesting info Routing
duplicate-receiver error ✓ Receivers
empty-receiver warn/info Receivers
email-no-smarthost error ✓ Receivers
webhook-no-url error ✓ Receivers
pagerduty-no-routing-key error ✓ Receivers
slack-no-api-url error ✓ Receivers
opsgenie-no-api-key error ✓ Receivers
msteams-no-webhook-url error ✓ Receivers
telegram-no-bot-token error ✓ Receivers
discord-no-webhook-url error ✓ Receivers
victorops-no-api-key error ✓ Receivers
wechat-no-corp-id error ✓ Receivers
sns-no-target error ✓ Receivers
template-file-missing error/warn Receivers
unused-receiver info Receivers
inhibit-no-equal warn Inhibition
circular-inhibition warn Inhibition
inhibit-same-match info Inhibition
repeat-before-group warn Timing
wait-exceeds-interval warn Timing
undefined-time-interval error ✓ Timing
global-resolve-timeout-missing info Timing
route-unknown-alertname warn Prometheus rules
inhibit-unknown-alertname warn Prometheus rules
alert-hits-default-receiver info Prometheus rules

The three Prometheus rules checks are extra: they run only with amlint check --rules, which reads your Prometheus alerting rules and checks routes and inhibit rules against the alerts they produce. See Prometheus rules.

Same info from the CLI: amlint list shows the same column; amlint explain <code> says it for any individual check.

Severity levels

level meaning
error Config is broken — alerts will be lost or Alertmanager will reject the config
warn Almost certainly not what you intended
info Suspicious, worth reviewing — may be intentional