Что такое метка: metri c: функция в PromqQL? - PullRequest
0 голосов
/ 28 февраля 2020

Я читаю 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)

не возвращает ничего, где «container» - это просто метка, подобная «namespace»

Это как выглядит мгновенный вектор для "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 для выполнения такого рода запросов?

Можем ли мы сделать запрос как этот "label: metri c: function"?

Спасибо

1 Ответ

1 голос
/ 28 февраля 2020

Вы не можете запрашивать, например, "label: metri c: function".

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

    - 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

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

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

NB:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...