Silences temporarily suppress alert notifications for planned maintenance, noisy alerts, or known incidents that do not need paging.
A silence belongs to a team and matches alerts by their labels. When an incoming alert matches an active silence, IncidentRelay marks it as silenced and does not send normal notifications for it.
A silence contains one or more matchers. A silence matches an alert only when all matchers match the alert labels.
For example, this silence:
{
"matchers": [
{
"name": "alertname",
"value": "DiskFull",
"is_regex": false
},
{
"name": "instance",
"value": "host1",
"is_regex": false
}
]
}matches only alerts where:
alert.labels.alertname = DiskFull
alert.labels.instance = host1
If any matcher does not match, the silence does not apply.
| Field | Description |
|---|---|
name |
Alert label name, for example alertname, severity, instance, namespace, or service. |
value |
Expected label value or regular expression. |
is_regex |
When false, the value must match exactly. When true, the value is treated as a regular expression. |
Use this when a specific alert is noisy across a team.
{
"matchers": [
{
"name": "alertname",
"value": "DiskFull",
"is_regex": false
}
]
}Use this during maintenance on a single host.
{
"matchers": [
{
"name": "instance",
"value": "host1.example.com",
"is_regex": false
}
]
}Use multiple matchers when the silence must be narrow.
{
"matchers": [
{
"name": "alertname",
"value": "HighCPU",
"is_regex": false
},
{
"name": "instance",
"value": "host1.example.com",
"is_regex": false
}
]
}Use this when only a specific severity should be suppressed.
{
"matchers": [
{
"name": "alertname",
"value": "HighCPU",
"is_regex": false
},
{
"name": "severity",
"value": "warning",
"is_regex": false
}
]
}Use service labels when the same service may run on many hosts.
{
"matchers": [
{
"name": "service",
"value": "billing-api",
"is_regex": false
},
{
"name": "severity",
"value": "critical",
"is_regex": false
}
]
}Use regular expressions for host groups or naming patterns.
{
"matchers": [
{
"name": "instance",
"value": "^web-[0-9]+\\.example\\.com$",
"is_regex": true
}
]
}Use Kubernetes labels when alerts include namespace metadata.
{
"matchers": [
{
"name": "namespace",
"value": "staging",
"is_regex": false
}
]
}Silences do not support negative matchers. To silence staging only, match the namespace exactly and set the required time window.
{
"matchers": [
{
"name": "namespace",
"value": "staging",
"is_regex": false
}
]
}| Status | Meaning |
|---|---|
| Active | The silence is enabled and the current time is between starts_at and ends_at. |
| Scheduled | The silence is enabled, but starts_at is in the future. |
| Expired | The silence ended. Expired silences are hidden after the retention window by default. |
| Disabled | The silence was manually disabled and remains visible for review. |
Expired silences are hidden after they are older than the configured retention window. By default, expired silences disappear from the normal list after 30 days from ends_at.
Users can still search old expired silences by enabling the expired history option on the Silences page.
This keeps the default page clean while still allowing audits and troubleshooting.
Disabling a silence should not permanently delete it from the UI. A disabled silence remains visible so users can understand why a silence no longer applies.
Use disabled silences for review and audit history. Use expired silences for time-based lifecycle.
Keep silences as narrow as possible.
Prefer:
{
"matchers": [
{
"name": "alertname",
"value": "DiskFull",
"is_regex": false
},
{
"name": "instance",
"value": "host1.example.com",
"is_regex": false
}
]
}Avoid broad matchers like this unless the maintenance window is intentional:
{
"matchers": [
{
"name": "severity",
"value": "critical",
"is_regex": false
}
]
}A broad silence can suppress unrelated incidents.
The exact labels depend on the incoming integration payload. Common labels include:
| Label | Example |
|---|---|
alertname |
DiskFull |
severity |
critical |
instance |
host1.example.com |
job |
node-exporter |
service |
billing-api |
namespace |
production |
cluster |
prod-eu-1 |
For Alertmanager payloads, matchers usually target values from alerts[].labels.
For Zabbix or generic webhook payloads, use the labels that IncidentRelay stores on the resulting alert.
If a silence does not match an alert:
- Check the alert labels in the alert details page.
- Confirm each matcher name exists in the alert labels.
- Confirm exact matchers use the exact same value.
- For regex matchers, test the expression against the actual label value.
- Confirm the silence is active, enabled, and belongs to the same team as the alert.
- Confirm the alert was created after the silence became active, or resend the alert if needed.
If too many alerts are silenced, narrow the matchers by adding labels such as alertname, instance, service, namespace, or severity.