Silences
A silence is a way to temporarily suppress notifications. Each silence has:
- A description - explaining why the silence was created
- A duration - specified by
from
anduntil
timestamps in RFC3339 format - A scope - defined through selectors and filters to target specific resources
- A recursive flag - to apply silence to child resources
Notifications that aren't sent due to silence are still visible in the notification history for auditing purposes.
---
apiVersion: mission-control.flanksource.com/v1
kind: NotificationSilence
metadata:
name: test-env-silence
spec:
from: "2025-01-01"
until: "2025-02-01"
description: >
Silence notifications from all resources in test and stage namespaces
for the next 30 days
selectors:
- namespace: test
- namespace: stage
Use cases
- Planned maintenance or deployments - Silence notifications from a namespace or helm release and optionally all their children
- Non-critical resources - Suppress notifications from resources that routinely trigger expected and harmless alerts
- Known issues - Temporarily silence alerts for known issues that can't be immediately resolved due to dependencies or resource constraints
Creating Silences
Silences can be created in multiple ways:
- Through the notification page UI
- Using the silence button on Slack notifications (when using default templates)
- By applying a NotificationSilence custom resource
Field | Description | Scheme | Template Env |
---|---|---|---|
description | A description explaining the purpose of the silence |
| |
filter | A CEL expression that determines whether to apply the silence. The silence is only applied if the filter evaluates to true. | ||
from | Start time of the silence period in RFC3339 format or datetime |
| |
recursive | When true, the silence applies to all child resources of the matched resources. For example, silencing a namespace would silence all deployments, statefulsets, pods, etc. within it. | boolean | |
selectors | List of resource selectors to target specific resources by their kind and name | ||
until | End time of the silence period in RFC3339 format or datetime |
|
Resource Selector
Field | Description | Scheme |
---|---|---|
kind | The kind of resource to select (e.g., 'Kubernetes::StatefulSet', 'Kubernetes::Pod') |
|
name | The name of the resource to select |
|
Resource Selection
Silences can target resources in two ways:
- Selectors: Direct resource matching using kind and name
- Filters: Complex matching using CEL expressions
Selectors
Selectors provide a straightforward way to target specific resources by their kind and name. Multiple selectors can be specified to target different resources.
Filters
A filter is a CEL expression that evaluates to a boolean value. The notification is silenced when the filter returns true. Filters provide powerful, flexible matching capabilities.
Filter Examples
Filter | Description |
---|---|
check.type == 'http' | Silences HTTP check notifications |
regexp.Match("^check-[0-9]+", check.name) | Matches checks with prefix check- |
config.name == "postgresql" && config.type == "Kubernetes::StatefulSet" | Silences notifications from a specific StatefulSet |
config.type == "Kubernetes::Pod" && catalog.traverse(config.id, "Kubernetes::Namespace", "incoming").size > 0 && catalog.traverse(config.id, "Kubernetes::Namespace", "incoming")[0].tags.?env.orValue("") == "prod" | Matches pods in production namespaces |
Available Template Variables
Filters can reference these variables:
Recursive Mode
When recursive: true
is set, the silence applies to all child resources of the matched resources. For example:
- Silencing a namespace affects all deployments, statefulsets, pods, etc. within it
- Silencing a statefulset affects all its pods