Grafana Cloud Enterprise Open source

Configure inhibition rules

Note

Available in Grafana 13 or higher.

An inhibition rule suppresses notifications for target alerts when source alerts with matching label values are already firing. This lets you reduce noise when a root-cause alert makes dependent alerts redundant.

For example, if a node is down (the source), you can inhibit all alerts for services running on that node (the target). This prevents your team from receiving individual alerts for each affected service when the underlying cause is already captured in the source alert.

Note

Inhibition rules are assigned to a specific Alertmanager and only suppress notifications for alerts managed by that Alertmanager.

Inhibition rules vs silences

Both inhibition rules and silences suppress alert notifications. The key difference is that inhibition rules suppress alerts automatically based on the presence of another alert, while silences suppress alerts for a fixed time window regardless of other alerts.

Inhibition ruleSilence
TriggerActive when a matching source alert is firingActive during a configured time window
DurationLasts as long as the source alert firesHas a fixed start and end time
SetupDefined as a persistent configurationCreated manually per occurrence

Manage inhibition rules

You can manage inhibition rules by using the Grafana App Platform API. There is no dedicated UI for creating or editing inhibition rules.

The API resource is:

  • Group: notifications.alerting.grafana.app
  • Version: v0alpha1
  • Resource: inhibitionrules

Caution

The inhibition rules API is currently in alpha (v0alpha1) and is subject to change.

Inhibition rules are also supported in the Prometheus Alertmanager. Refer to Configure Alertmanager to set up an external Alertmanager.

Inhibition rule schema

Each inhibition rule has the following fields:

FieldRequiredDescription
nameYesUnique name for the inhibition rule. Immutable after creation.
source_matchersYesOne or more matchers that identify source (inhibiting) alerts.
target_matchersYesOne or more matchers that identify target (inhibited) alerts.
equalNoLabels that must have equal values in both source and target alerts for the inhibition to take effect.

Matcher format

Both source_matchers and target_matchers are lists of structured matcher objects. Each matcher has:

FieldDescription
labelThe name of the label to match against.
typeThe matching operator. One of =, !=, =~, !~.
valueThe value to match against. For =~ and !~, this is a regular expression.
OperatorDescription
=Select alerts where the label equals the value.
!=Select alerts where the label does not equal the value.
=~Select alerts where the label matches the regular expression.
!~Select alerts where the label does not match the regular expression.

The equal field

When equal is specified, the inhibition only applies when the source and target alerts have the same value for each listed label. For example, setting equal: [cluster] ensures that an alert in one cluster only inhibits alerts in the same cluster.

If equal is omitted, any firing source alert matching source_matchers inhibits all matching target alerts regardless of their label values.

Missing labels and empty-value labels are treated as equivalent for the purpose of equal matching.

Example: suppress warning alerts

The following example defines an inhibition rule that suppresses all warning-severity alerts in a cluster when a critical-severity alert is already firing for the same cluster.

JSON
{
  "name": "critical-inhibits-warnings",
  "source_matchers": [{ "label": "severity", "type": "=", "value": "critical" }],
  "target_matchers": [{ "label": "severity", "type": "=", "value": "warning" }],
  "equal": ["cluster", "namespace"]
}

In this example:

  • The source matcher selects critical alerts. When one fires, the rule becomes active.
  • The target matcher selects warning alerts. The rule suppresses these while the source alert fires.
  • The equal field ensures suppression only applies when source and target share the same cluster and namespace label values.