Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/grafana/grafana/llms.txt

Use this file to discover all available pages before exploring further.

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

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:
1

Pending

startsAt is in the future. Silence is scheduled but not yet active.
2

Active

Current time is between startsAt and endsAt. Notifications are suppressed.
3

Expired

endsAt is in the past. Silence is no longer active.

Label Matchers

Silences use matchers to select which alerts to suppress:
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

{
  startsAt: '2024-03-10T10:00:00Z',
  endsAt: '2024-03-10T18:00:00Z'
}

Duration Format

Supported duration formats:
  • 2h - 2 hours
  • 30m - 30 minutes
  • 1d - 1 day
  • 2h30m - 2 hours 30 minutes

Silence Metadata

Comment (Required)

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:
matchers: [
  {
    name: '__rule_uid__',
    operator: '=',
    value: 'alert-rule-uid-123'
  }
]

Silence Metadata Model

// 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:
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

// 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

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

Use precise matchers to avoid silencing too many alerts. Match on multiple labels to narrow scope.
  • Deployments: 15-30 minutes
  • Maintenance: Match actual window
  • Investigations: 1-4 hours (extend if needed)
  • Avoid silences longer than 24 hours
Include:
  • What work is being done
  • Expected duration
  • Who to contact
  • Ticket/issue reference
Regularly review and delete old silences to keep the list manageable.
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