본문 바로가기

Develop/DevOps

[AlertManager] 특정 라벨을 가진 Alert무시하기

반응형

 

Prometheus와 Alertmanager를 연결한뒤 Prometheus Rule에 의해 Alert가 발생하는 구조인데, 특정 Alert는 운영에 영향을 주는 오알람(false alarm)으로 보여져서 alert을 무시하는 작업을 하려고함.

 

보통 알람이 발생하면 Alertmanager에서 아래와같이 Alert에 할당된 라벨들을 볼수가 있음

AlertmanagerConfig에서 아래와같이 설정하면 특정 라벨을 가진 Alert는 무시할수있게됨

아래 설정은 다음과같은 설정을 하게됨

  • severity = "info" 라벨을 가진 Alert은 무시됨
  • severity = "warning" 라벨을 가진 Alert은 무시됨
  • namespace = "group-member" 라벨을 가진 Alert은 무시됨

정확히는 무시되는건 아니고 해당 라벨들을 가지면 아무행동을 안하는 ignore라는 receiver에 할당됨.


resource "kubernetes_manifest" "alertmanager_config" {
  manifest = {
    apiVersion = "monitoring.coreos.com/v1alpha1"
    kind       = "AlertmanagerConfig"
    metadata = {
      name      = "alertmanager-config"
      namespace = var.prometheus_stack_namespace
    }
    spec = {
      route = {
        repeatInterval = "12h"
        receiver       = "slack"
        routes = [
          {
            matchers = [
              {
                name      = "severity"
                value     = "info"
                matchType = "="
              }
            ]
            receiver = "ignore"
          },
          {
            matchers = [
              {
                name      = "namespace"
                value     = "group-member"
                matchType = "="
              }
            ]
            receiver = "ignore"
          },
          {
            matchers = [
              {
                name      = "severity"
                value     = "warning"
                matchType = "="
              }
            ]
            receiver = "ignore"
          }
        ]
      }
      # https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1alpha1.Receiver
      receivers = [
        {
          name = "slack"
          slackConfigs = [
            {
              apiURL = {
                key  = "url"
                name = kubernetes_secret_v1.slack_api_url.metadata[0].name
              }
              sendResolved = true
              # message format from https://grafana.com/blog/2020/02/25/step-by-step-guide-to-setting-up-prometheus-alertmanager-with-slack-pagerduty-and-gmail/?utm_source=chatgpt.com
              title    = ...
              text     = ...
              mrkdwnIn = ["text", "title"]
            }
          ]
        },
        {
          name         = "ignore"
          slackConfigs = []
        }
      ]
    }
  }
}

 

해당 작업을 하면서 알게된것

 

silences rule disappeared when restart alertmanager · Issue #1673 · prometheus/alertmanager

when i restart alertmanager, the silence rule disappeared,. how to make rules persistence. what's the effect of parameters as follow. --storage.path="data/" Base path for data storage. --data.reten...

github.com

반응형