Что такое label: metric: function в PromqQL?

Я читаю kube-prometheus, https://github.com/coreos/kube-prometheus и наткнулся на PromQL в файле правил Prometheus, который мне трудно понять.

sum(namespace:kube_pod_container_resource_requests_cpu_cores:sum)

здесь https://github.com/coreos/kube-prometheus/blob/master/manifests/prometheus-rules.yaml#L673

Но так же

sum(container:kube_pod_container_resource_requests_cpu_cores:sum)

не возвращает ничего, где 'контейнер' - это просто метка, такая как 'пространство имен'

Так выглядит мгновенный вектор для "kube_pod_container_resource_requests_cpu_cores"

kube_pod_container_resource_requests_cpu_cores{container="kube-controller-manager",instance="172.17.0.7:8080",job="kube-state-metrics",namespace="kube-system",node="minikube",pod="kube-controller-manager-minikube"}  

Может ли кто-нибудь объяснить мне, как это работает, и в документации PromQL упоминалось, что он выполняет такой запрос?

Можем ли мы сделать такой запрос, как «метка: метрика: функция»?

Спасибо


person Shubham Choudhary    schedule 28.02.2020    source источник


Ответы (1)


Вы не можете запросить, например, «метка: метрика: функция».

namespace:kube_pod_container_resource_requests_cpu_cores:sum - не что иное, как имя правила Прометея, которое определено в здесь.

    - expr: |
        sum by (namespace) (
            sum by (namespace, pod) (
                max by (namespace, pod, container) (
                    kube_pod_container_resource_requests_memory_bytes{job="kube-state-metrics"}
                ) * on(namespace, pod) group_left() max by (namespace, pod) (
                    kube_pod_status_phase{phase=~"Pending|Running"} == 1
                )
            )
        )
      record: namespace:kube_pod_container_resource_requests_memory_bytes:sum

Итак, всякий раз, когда вы создаете новое правило, Prometheus создает новую метрику временного ряда, названную в честь имени правила (то есть namespace:kube_pod_container_resource_requests_memory_bytes:sum).

Если вы хотите запросить что-то вроде container:kube_pod_container_resource_requests_cpu_cores:sum, вам нужно сначала записать правило под этим именем.

NB:

Правила записи должны иметь общий уровень: метрика: операции. level представляет уровень агрегации и метки вывода правила. metric - это имя метрики, которое не должно изменяться, за исключением удаления _total со счетчиков при использовании rate () или irate (). Операции - это список операций, которые были применены к метрике, начиная с самой новой операции.

person Kamol Hasan    schedule 28.02.2020
comment
Большое спасибо @ kamol-hasan за это. Жалко, что я не искал его в файле. - person Shubham Choudhary; 28.02.2020