Silences temporarily suppress notifications for alerts that match specific criteria. They’re useful for planned maintenance, known issues, or reducing noise during incidents.
Silence Structure
Silence Definition
Matcher
interface SilenceFormFields {
id : string ; // Silence ID (generated)
// Time range
startsAt : string ; // ISO 8601 timestamp
endsAt : string ; // ISO 8601 timestamp
timeZone : TimeZone ; // Display timezone
duration : string ; // Human-readable duration
// Matching
matchers : MatcherFieldValue [];
// Metadata
comment : string ; // Required: why this silence exists
createdBy : string ; // Creator username
}
Silence States
Silences transition through different states:
Pending
startsAt is in the future. Silence is scheduled but not yet active.
Active
Current time is between startsAt and endsAt. Notifications are suppressed.
Expired
endsAt is in the past. Silence is no longer active.
Label Matchers
Silences use matchers to select which alerts to suppress:
Exact Match
Multiple Matchers (AND)
Regex Match
Negative Match
matchers : [
{
name: 'alertname' ,
operator: '=' ,
value: 'HighCPU'
}
]
// Silences all alerts with alertname="HighCPU"
All matchers must match for a silence to apply (AND logic). For OR logic, create multiple silences.
Time Ranges
Setting Duration
Explicit Start/End
Duration-Based
Immediate Start
{
startsAt : '2024-03-10T10:00:00Z' ,
endsAt : '2024-03-10T18:00:00Z'
}
Supported duration formats:
2h - 2 hours
30m - 30 minutes
1d - 1 day
2h30m - 2 hours 30 minutes
Every silence must have a comment explaining its purpose:
comment : 'Planned maintenance: Database upgrade in progress'
Comments are required and help teams understand:
Why the silence was created
What work is being done
Who to contact for questions
Good comment examples:
“Deployment in progress - expected 30 mins”
“Known issue: API rate limiting - team investigating”
“Maintenance window: scaling cluster nodes”
Created By
Automatically populated with the creator’s username:
createdBy : 'alice@example.com'
Silence with Rule Association
Silences can be associated with specific alert rules:
Rule-Specific Silence
Backend Model
matchers : [
{
name: '__rule_uid__' ,
operator: '=' ,
value: 'alert-rule-uid-123'
}
]
Silence with Metadata
UI Representation
// Location: pkg/services/ngalert/models/silence.go
type SilenceWithMetadata struct {
* Silence
Metadata SilenceMetadata
}
type SilenceMetadata struct {
RuleMetadata * SilenceRuleMetadata
Permissions * SilencePermissionSet
}
type SilenceRuleMetadata struct {
RuleUID string
RuleTitle string
FolderUID string
}
Permissions
Silences support granular permissions:
Permission Types
Permission Set
type SilencePermission string
const (
SilencePermissionRead SilencePermission = "read"
SilencePermissionCreate SilencePermission = "create"
SilencePermissionWrite SilencePermission = "write"
)
Permissions are typically managed through Grafana’s RBAC system:
alert.silences:read - View silences
alert.silences:create - Create new silences
alert.silences:write - Modify/delete silences
Common Patterns
Maintenance Window
{
startsAt : '2024-03-15T02:00:00Z' ,
endsAt : '2024-03-15T06:00:00Z' ,
comment : 'Scheduled maintenance: Database cluster upgrade' ,
matchers : [
{
name: 'cluster' ,
operator: '=' ,
value: 'production'
},
{
name: 'service' ,
operator: '=~' ,
value: 'database.*'
}
]
}
Deployment Silence
{
startsAt : new Date (). toISOString (),
duration : '30m' ,
comment : 'Deployment: API v2.5.0 rollout' ,
matchers : [
{
name: 'service' ,
operator: '=' ,
value: 'api'
},
{
name: 'alertname' ,
operator: '=~' ,
value: 'High.*|ServiceDown'
}
]
}
Known Issue Silence
{
startsAt : new Date (). toISOString (),
duration : '4h' ,
comment : 'Known issue #1234: Investigating intermittent timeouts' ,
matchers : [
{
name: 'alertname' ,
operator: '=' ,
value: 'HighLatency'
},
{
name: 'endpoint' ,
operator: '=' ,
value: '/api/v1/users'
}
]
}
Team-Specific Silence
{
startsAt : new Date (). toISOString (),
duration : '2h' ,
comment : 'Team offsite - reducing alert noise' ,
matchers : [
{
name: 'team' ,
operator: '=' ,
value: 'frontend'
},
{
name: 'severity' ,
operator: '!=' ,
value: 'critical'
}
]
}
Frontend Components
Silence Metadata Display
Silence Details View
// Location: public/app/features/alerting/unified/components/silences/
export const SilenceMetadataGrid = ({
startsAt ,
endsAt ,
comment ,
createdBy
} : Props ) => (
< Stack direction = "column" gap = { 2 } >
< MetadataRow label = "Starts" value = { startsAt } />
< MetadataRow label = "Ends" value = { endsAt } />
< MetadataRow label = "Comment" value = { comment } />
< MetadataRow label = "Created by" value = { createdBy } />
</ Stack >
);
API Operations
Create Silence
Get Silences
Delete Silence
POST / api / alertmanager / grafana / api / v2 / silences
Body :
{
"matchers" : [
{ "name" : "alertname" , "value" : "HighCPU" , "isRegex" : false , "isEqual" : true }
],
"startsAt" : "2024-03-10T10:00:00Z" ,
"endsAt" : "2024-03-10T18:00:00Z" ,
"comment" : "Maintenance window" ,
"createdBy" : "alice"
}
Best Practices
Be specific with matchers
Use precise matchers to avoid silencing too many alerts. Match on multiple labels to narrow scope.
Set appropriate durations
Deployments: 15-30 minutes
Maintenance: Match actual window
Investigations: 1-4 hours (extend if needed)
Avoid silences longer than 24 hours
Write informative comments
Clean up expired silences
Regularly review and delete old silences to keep the list manageable.
Never silence critical alerts blindly
If you need to silence critical alerts, be very specific about which ones and why.
Troubleshooting
Check matchers match alert labels exactly
Verify time range includes current time
Confirm silence state is “active” not “pending”
Check alertmanager configuration is applied
Review matchers - they may be too broad
Use more specific label combinations
Consider using negative matchers to exclude certain alerts
Check timezone settings
Verify duration calculation
Consider creating a new silence with extended time
Alert Rules Create and manage alert rules
Notification Policies Configure alert routing
Contact Points Set up notification destinations
Overview Understand the alerting architecture