Как опустить метку Promql в Prometheus, чтобы избежать дублирования уведомлений - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть многозонный кластер kubernetes, имеющий 3 зоны с мониторингом прометея, развернутый с replicaset = 3. В каждой зоне есть 1 менеджер оповещений, 1 метрика kubestate, 1 графана и 1 модуль оператора prometheus.

Когда я получаю, например, оповещения, DeploymentReplicasNotUpdated, я получаю три оповещения - по одному от каждого состояния куба - metri c pod. Оповещения отличаются только меткой экземпляра, которая является ip-адресом kube-state-metri c pod. Формат оповещения приведен ниже

alertname="DeploymentReplicasNotUpdated" app="kube-state-metrics" deployment="mydeployment" instance="172.30.83.127:8080" job="kubernetes-service-endpoints" kubernetes_name="kube-state-metrics" kubernetes_namespace="mykubenamespace" namespace="myns" severity="critical"

alertname="DeploymentReplicasNotUpdated" app="kube-state-metrics" deployment="mydeployment" instance="172.30.83.125:8080" job="kubernetes-service-endpoints" kubernetes_name="kube-state-metrics" kubernetes_namespace="mykubenamespace" namespace="myns" severity="critical"

alertname="DeploymentReplicasNotUpdated" app="kube-state-metrics" deployment="mydeployment" instance="172.30.83.127:8080" job="kubernetes-service-endpoints" kubernetes_name="kube-state-metrics" kubernetes_namespace="mykubenamespace" namespace="myns" severity="critical"

Может ли кто-нибудь помочь мне сгруппировать эти 3 оповещения в одно оповещение в alertmanager, поскольку они относятся к одному и тому же оповещению? По сути, мне нужно исключить метку экземпляра, как показано, и вернуть только 1 предупреждение вместо 3

alertname="DeploymentReplicasNotUpdated" app="kube-state-metrics" deployment="mydeployment"job="kubernetes-service-endpoints" kubernetes_name="kube-state-metrics" kubernetes_namespace="mykubenamespace" namespace="myns" severity="critical"

promql, указанных ниже

 ((kube_deployment_status_replicas_updated != kube_deployment_spec_replicas)
      or (kube_deployment_status_replicas_available != kube_deployment_spec_replicas))
      unless (kube_deployment_spec_paused == 1)
...