Aller au contenu principal

Importer des alerts Grafana

Ce guide explique comment importer des alertes Grafana depuis une ConfigMap.

Grafana

Grafana est une plateforme open source de supervision et d’observabilité qui permet de visualiser et analyser des données issues de différentes sources. Elle prend également en charge la création d’alertes, en interrogeant périodiquement les sources de données et en évaluant des conditions définies par l’utilisateur. Lorsqu’une condition est remplie, une alerte est déclenchée et peut générer des notifications via différents canaux tels que des emails, Slack ou PagerDuty.

ConfigMap

Pour importer des alertes dans Grafana à partir d’une ConfigMap, assurez-vous que la fonctionnalité sidecar avec le label grafana_alert est activée dans le chart Helm.

info

Le sidecar transfère automatiquement le contenu de la ConfigMap vers un dossier afin que Grafana puisse charger et traiter les données.

/etc/grafana/provisioning/alerting

Si vous ne pouvez pas modifier la configuration helm de Grafana pour activer le sidecar, contactez l’équipe Kumba.

Création

  1. Configurez vos objets (alertes, points de contact) via l’interface web Grafana.
  2. Exportez-les au format YAML.
  3. Utilisez ces fichiers exportés pour générer vos ConfigMaps.

Pour plus de détails sur les options de provisioning, consultez la documentation officielle Grafana.

Canaux de notification (contact points)

Les alertes sont réalisées via des canaux de notifications (email, Slack, PagerDuty, etc.). Les alertes peuvent utiliser ces outils directement pour notifier immédiatement les utilisateurs, ou indirectement via des politiques de notification, qui permettent de router les alertes selon des critères spécifiques.

kind: ConfigMap
apiVersion: v1
metadata:
name: test-email-demo-1
labels:
grafana_alert: "1"
data:
email_demo_1.yaml: |
apiVersion: 1
contactPoints:
- orgId: 1
name: demo_email
receivers:
- uid: a99fc48c-773c-42d5-8cae-49025c37e9d9
type: email
settings:
addresses: <demo@email.com>
disableResolveMessage: false

Règles d’alerte (alert rules)

Une règle d’alerte est une condition définie dans Grafana qui est évaluée périodiquement pour déterminer si une alerte doit être déclenchée. Elle repose sur des requêtes vers les sources de données et compare les résultats à des seuils ou critères définis par l’utilisateur. Lorsqu’une condition est remplie, la règle déclenche une alerte qui peut être associée à des canaux de notification ou des politiques de notification pour informer les utilisateurs via différents canaux (email, Slack, PagerDuty, etc.).

kind: ConfigMap
apiVersion: v1
metadata:
name: test-alert-demo-1
labels:
grafana_alert: "1"
data:
rules_demo_1.yaml: |
apiVersion: 1
groups:
- orgId: 1
name: 10s
folder: demo
interval: 10s
rules:
- uid: a99fc48c-773c-42d5-8cae-49025c37e9d0
title: test-1
condition: C
data:
- refId: A
relativeTimeRange:
from: 600
to: 0
datasourceUid: prometheus
model:
disableTextWrap: false
editorMode: builder
expr: cluster:node_cpu:sum_rate5m
fullMetaSearch: false
includeNullMetadata: true
instant: true
intervalMs: 1000
legendFormat: __auto
maxDataPoints: 43200
range: false
refId: A
useBackend: false
- refId: B
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params: []
type: gt
operator:
type: and
query:
params:
- B
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: A
intervalMs: 1000
maxDataPoints: 43200
reducer: last
refId: B
type: reduce
- refId: C
relativeTimeRange:
from: 600
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params:
- 0.1
type: gt
operator:
type: and
query:
params:
- C
reducer:
params: []
type: last
type: query
datasource:
type: __expr__
uid: __expr__
expression: B
intervalMs: 1000
maxDataPoints: 43200
refId: C
type: threshold
noDataState: NoData
execErrState: Error
for: 0s
isPaused: false
notification_settings:
receiver: demo_email
info

Il est également possible de supprimer des objets (comme une règle d’alerte) en utilisant une ConfigMap. Pour cela, il suffit de définir l’objet avec son UID et d’indiquer l’action de suppression dans le fichier YAML.

kind: ConfigMap
apiVersion: v1
metadata:
name: test-remove-alert-demo-1
labels:
grafana_alert: "1"
data:
rules_remove_demo_1.yaml: |
apiVersion: 1
deleteRules:
- orgId: 1
uid: a99fc48c-773c-42d5-8cae-49025c37e9d0

Conclusion

L’utilisation des ConfigMaps pour gérer les composants Grafana garantit la préservation de vos éléments personnalisés, même en cas de suppression de Grafana du cluster ou de redémarrage des pods. Cette approche assure résilience et cohérence, car vos configurations sont stockées indépendamment de l’instance Grafana. De plus, en conservant ces ConfigMaps dans un dépôt Git, vous bénéficiez d’un historique complet et d’une gestion simplifiée des versions, ce qui facilite la maintenance et le déploiement.