Запрос PromQL для отображения метки модуля в предупреждении

У меня есть правило предупреждения по умолчанию в операторе Prometheus, как показано ниже,

   - alert: KubePodNotReady
      annotations:
        message: Pod {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} has been in a non-ready state for longer than 15 minutes.
        runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubepodnotready
      expr: |-
        sum by (namespace, pod) (
          max by(namespace, pod) (
            kube_pod_status_phase{job="kube-state-metrics", namespace=~".*", phase=~"Pending|Unknown"}
          ) * on(namespace, pod) group_left(owner_kind) topk by(namespace, pod) (
            1, max by(namespace, pod, owner_kind) (kube_pod_owner{owner_kind!="Job"})
          )
        ) > 0 
      for: 15m
      labels:
        severity: warning

Я хочу, чтобы в предупреждении отображалось название группы с ярлыком модуля.

Я могу получить метку модуля с помощью следующих выражений,

kube_pod_info * on(namespace, pod) group_left kube_pod_labels{label_teamname="example"} 

kube_pod_info * on(namespace, pod) group_left(label_teamname) kube_pod_labels

Но я не уверен, как обновить правило предупреждения для отображения метки. Я просто попытался добавить метку, не редактируя выражение,

  labels:
    severity: warning
    teamname: '{{ $labels.label_teamname }}'

Но это не сработало.

Требуется ли изменение выражения, чтобы мы могли включить имя команды в предупреждение? Если да, пожалуйста, подскажите, как изменить приведенное ниже выражение.

  expr: |-
    sum by (namespace, pod) (
      max by(namespace, pod) (
        kube_pod_status_phase{job="kube-state-metrics", namespace=~".*", phase=~"Pending|Unknown"}
      ) * on(namespace, pod) group_left(owner_kind) topk by(namespace, pod) (
        1, max by(namespace, pod, owner_kind) (kube_pod_owner{owner_kind!="Job"})
      )
    ) > 0 

 

person Rad4    schedule 10.09.2020    source источник


Ответы (1)


Это выражение работает для меня,

(sum by (namespace, pod) (
          max by(namespace, pod) (
            kube_pod_status_phase{job="kube-state-metrics", namespace=~".*", phase=~"Pending|Unknown"}
          ) * on(namespace, pod)   group_left(owner_kind) topk by(namespace, pod) (
            1, max by(namespace, pod, owner_kind) (kube_pod_owner{owner_kind!="Job"})
          )
        ) > 0) * on(namespace, pod) group_left(label_teamname) kube_pod_labels
person Rad4    schedule 10.09.2020