Автоматическое включение в Prometheus с максимальным временем без выхода - PullRequest
0 голосов
/ 14 января 2020

Прометей: v2.15.2 kubernetes: v1.14.9

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

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

У меня есть другие примеры работы с этой же структурой metri c

jvm_memory_bytes_used{instance="url.instance.com.br"} / jvm_memory_bytes_max{area="heap"} * 100 > 80

, но этот не работает.

max_over_time(sum(rate(container_cpu_usage_seconds_total{pod="pod-name-here",container_name!="POD", container_name!=""}[1m])) [1h:1s]) / kube_pod_container_resource_requests_cpu_cores * 100 < 70

Ну, первая идея состояла в том, чтобы создать запрос для сбора максимального исторического использования процессором контейнера в модуле за короткий период:

max_over_time(sum(rate(container_cpu_usage_seconds_total{pod="xpto-92838241",container_name!="POD", container_name!=""}[1m])) [1h:1s])

Элемент : {} Значение: 0.25781324101515

Если мы выполним это следующим образом:

container_cpu_usage_seconds_total{pod="xpto-92838241",container_name!="POD", container_name!=""}

Элемент: container_cpu_usage_seconds_total {beta_kubernetes_io_arch = "amd64", beta_kubernetes_io_instance_type = "t3.small", beta_kubernetes_io_os = "linux", cluster = "teste.k8s.xpto", container = "xpto" xpto, xpto, xpto Общий», failure_domain_beta_kubernetes_io_region = "са-восток-1", failure_domain_beta_kubernetes_io_zone = "Са-восток-1 c", общая = "истина", ID = "/ kubepods / Burstable / poda9999e9999e999e9- / 99999e9999999e9", образ = "nginx", экземпляр = "kubestate-dev.internal.xpto "работа = "kubernetes-cadvisor", kops_k8s_io_instancegroup = "узлы", kubernetes_io_arch = "amd64", kubernetes_io_hostname = "IP-99-999-9-99.sa-восток-1.compute.internal", kubernetes_io_os =" * * тысяча семьдесят-одна "kubernetes_io_role = "узел", имя = "k8s_nginx_ nginx -99999e9999999e9", пространство имен = "NMP c", стручок = "стручок-92838241", pod_name = "стручок-92838241", спот =" ложно "} Значение: 22533.2

Теперь у нас есть то, что настроено:

kube_pod_container_resource_requests_cpu_cores{pod="xpto-92838241"}

Элемент: kube_pod_container_resource_requests_cpu_cores {container = "xpto", экземпляр = "kubestate-dev.internal.xpto", работа = "K8S-клиента", пространство имен = "NMP c", узел = "IP-99-999-999-99.sa-восток -1.compute.internal ", pod =" pod-92838241 "} Значение: 1

Что ж, по моему мнению, было бы использовать эти две метрики и приблизить их к процент, подобный этому:

max_over_time(sum(rate(container_cpu_usage_seconds_total{pod="xpto-dev-92838241",container_name!="POD", container_name!=""}[1m])) [1h:1s]) / kube_pod_container_resource_requests_cpu_cores * 100 < 70

Элемент: нет данных Значение:

Но эти две метрики не взаимодействуют, не могу понять почему и не найти в документации.

С уважением

Ответы [ 2 ]

1 голос
/ 16 января 2020

Вот Операторы Прометея , с документацией и этим блогом о прохождении агрегации ЦП .

Я получил решение моей проблемы с сопоставлением векторов.

max_over_time(sum(rate(container_cpu_usage_seconds_total{pod="pod-name-here",container_name!="POD", container_name!=""}[1m])) [1h:1s]) / on(pod_name) group_left(container_name) kube_pod_container_resource_requests_cpu_cores{pod="pod-name-here"}

спасибо всем

0 голосов
/ 15 января 2020

Как вы можете видеть здесь , только в Kubernetes 1.16 cadvisor metri c метки pod_name и container_name были удалены и заменены на pod и container соответственно. Поскольку вы используете Kubernetes 1.14 , вы все равно должны использовать pod_name и container_name.

Дайте мне знать, если это поможет.

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