group_left не работает должным образом в promql

#prometheus #promql

#прометей #promql

Вопрос:

Вот результаты kube_deployment_labels:

 kube_deployment_labels{deployment="nginx-deploy",endpoint="http",instance="10.73.10.219:8080",job="kube-state-metrics",label_app="nginx-deploy",label_test_com_team="neon",namespace="default",pod="kube-prometheus-stack-kube-state-metrics-857d997b65-m7jf9",service="kube-prometheus-stack-kube-state-metrics"} | 1
-- | --
kube_deployment_labels{deployment="nginx-deploy-new",endpoint="http",instance="10.73.10.219:8080",job="kube-state-metrics",label_app="nginx-deploy-new",label_test_com_team="neon",namespace="default",pod="kube-prometheus-stack-kube-state-metrics-857d997b65-m7jf9",service="kube-prometheus-stack-kube-state-metrics"}
 

И результаты приведенного ниже выражения:

 (kube_deployment_spec_replicas{job="kube-state-metrics",namespace=~".*"}
  != kube_deployment_status_replicas_available{job="kube-state-metrics",namespace=~".*"})
  and (changes(kube_deployment_status_replicas_updated{job="kube-state-metrics",namespace=~".*"}[5m])
  == 0)

kube_deployment_labels{deployment="nginx-deploy",endpoint="http",instance="10.73.10.219:8080",job="kube-state-metrics",label_app="nginx-deploy",label_test_com_team="neon",namespace="default",pod="kube-prometheus-stack-kube-state-metrics-857d997b65-m7jf9",service="kube-prometheus-stack-kube-state-metrics"} | 1
-- | --
kube_deployment_labels{deployment="nginx-deploy-new",endpoint="http",instance="10.73.10.219:8080",job="kube-state-metrics",label_app="nginx-deploy-new",label_test_com_team="neon",namespace="default",pod="kube-prometheus-stack-kube-state-metrics-857d997b65-m7jf9",service="kube-prometheus-stack-kube-state-metrics"}
 

Но когда я пытаюсь совместить и то, и другое,

 (kube_deployment_spec_replicas{job="kube-state-metrics",namespace=~".*"}
  != kube_deployment_status_replicas_available{job="kube-state-metrics",namespace=~".*"})
  and (changes(kube_deployment_status_replicas_updated{job="kube-state-metrics",namespace=~".*"}[5m])
  == 0) * on (deployment,namespace) group_left(label_team_com_team) kube_deployment_labels
 

Результаты показывают только те показатели, которые не имеют метки «label_test_com_team».

Ответ №1:

Это сработало для меня,

 (kube_deployment_spec_replicas{job="kube-state-metrics",namespace=~".*"} * on (deployment,namespace) group_left(label_axway_com_team) kube_deployment_labels
  != kube_deployment_status_replicas_available{job="kube-state-metrics",namespace=~".*"}* on (deployment,namespace) group_left(label_axway_com_team) kube_deployment_labels)
  and (changes(kube_deployment_status_replicas_updated{job="kube-state-metrics",namespace=~".*"}[5m])
  == 0)* on (deployment,namespace) group_left(label_axway_com_team) kube_deployment_labels