Publié le: 2020-07-20

Alertmanager - Ignorer une notification

Alertmanager est un outil qui utilise prometheus pour générer des alertes.

Dans certains cas, les alertes peuvent ne pas être utiles, par exemple sur un cas de CPUThrotlingHigh dans Kubernetes.

Cette alerte Kubernetes signifie que le conteneur veut dépasser son quota de CPU, différant de ce fait les appels CPU sur le temps. Pour un service peu appelé, il est possible de mettre une limite CPU basse et que lors d’un appel ceux-ci soient différés, et donc l’application devient plus lente, mais acceptable, néanmoins cela peut déclencher une alerte Prometheus.

Pour résoudre ce cas nous avons besoin côté AlertManager de 2 éléments:

  1. Un receveur vide
  2. Une route vers ce receveur suivant des conditions

Voici la configuration nécessaire:

route:
  group_by: [alertname]
  repeat_interval: 12h
  group_wait: 2m
  group_interval: 5m
  receiver: "slack-default"
  routes:
    # blackhole
    - receiver: "blackhole"
      match_re:
        namespace: "prometheus-k8s"
        container: "kube-rbac-proxy"
        alertname: "CPUThrottlingHigh"
      continue: false
    # Other filters
    - receiver: "platform"
      group_interval: 15m
      match_re:
        severity: (critical|warning)
        environment: (test|staging|production|preprod|prod)
        namespace: (kube-system|fluentd|traefik-ingress-controller|prometheus-k8s|opa-gatekeeper).*
        alertname: (KubeCPUQuotaOvercommit|KubeMemoryQuotaOvercommit|KubeQuotaExceeded|CPUThrottlingHigh).*
      continue: false
    

receivers:
  - name: blackhole
  # France
  - name: "platform"
    slack_configs:
      - api_url: 'url'
        send_resolved: true
        channel: "#alerts"
        title: '{{ template "slack.title" . }}'
        text: '{{ template "slack.text" . }}'

Enjoy !