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 |