Оповещения Kubernetes

Материал из Документация Ключ-АСТРОМ
Версия от 10:46, 21 сентября 2026; IKuznetsov (обсуждение | вклад) (Новая страница: « = Оповещения Kubernetes = '''Ключ-АСТРОМ''' предоставляет готовые оповещения для распространённых проблем '''Kubernetes''' в кластерах, нодах, пространствах имён, рабочих нагрузках и запросах на постоянные тома. Каждое оповещение — это либо оповещение о здоровье, ко...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Оповещения Kubernetes

Ключ-АСТРОМ предоставляет готовые оповещения для распространённых проблем Kubernetes в кластерах, нодах, пространствах имён, рабочих нагрузках и запросах на постоянные тома. Каждое оповещение — это либо оповещение о здоровье, которое запускает расследование проблемы, либо предупреждающий сигнал, который отмечает потенциальную проблему без открытия проблемы. Подробнее об этой модели серьёзности см. в разделе «Оповещения о здоровье и предупреждающие сигналы».

Эта страница содержит список всех готовых оповещений Kubernetes с указанием их серьёзности, рекомендуемых значений по умолчанию, времени снятия оповещения и логики обнаружения.

Настройка

Чтобы просмотреть или изменить конфигурацию оповещений Kubernetes:

  1. Перейдите в Настройки.
  2. Выберите Анализ и оповещения > Оповещения.
  3. В разделе Kubernetes вы можете найти типы объектов.
  4. Просмотрите включённые оповещения и при необходимости скорректируйте пороги.

Вы также можете открыть конфигурацию оповещений непосредственно из кластера или пространства имён в Kubernetes (new).

Серьёзность и рекомендуемые значения по умолчанию

С последним обновлением Ключ-АСТРОМ оповещения Kubernetes, которые ранее создавали проблему, были переклассифицированы как предупреждающие сигналы. Эта переклассификация выполняется автоматически и применяется ко всем средам — она не требует изменения конфигурации.

Независимо от этого, рекомендуемые значения по умолчанию доступны для всех сред. Они определяют, какие оповещения включены и их пороги обнаружения, но не применяются автоматически — ваша текущая конфигурация не затрагивается, пока вы явно не примените их в разделе Настройки > Анализ и оповещения > Оповещения > Kubernetes.

Каждое оповещение имеет два независимых измерения:

  • Включено/отключено: активно ли оповещение отслеживает вашу среду.
  • Порог обнаружения: условие, которое запускает оповещение.

В таблицах справочника оповещений ниже:

  • ¹ отмечает оповещения, включение или порог которых изменяется при применении рекомендуемых значений по умолчанию.
  • ² отмечает оповещения, переклассифицированные из оповещения о здоровье в предупреждающий сигнал — уже действует, независимо от рекомендуемых значений по умолчанию.

Следующие оповещения в настоящее время отключены и становятся включёнными с серьёзностью Критическая при применении рекомендуемых значений по умолчанию. Просмотрите их перед применением, так как они начнут открывать проблемы.

Оповещение Условие срабатывания
Обнаружение застрявших развёртываний Останавливается прогресс ≥ 3 мин; в течение 5 мин
Обнаружение рабочих нагрузок без готовых подов Нет готовых подов ≥ 10 мин; в течение 15 мин
Обнаружение событий отката подов На основе событий
Обнаружение событий вытеснения подов На основе событий

Доступные оповещения

Кластер

Оповещение Тип проблемы Включено (рекомендуется) Порог обнаружения (рекомендуется) Серьёзность Снятие оповещения через Расчёт
Обнаружение проблем готовности кластера Доступность Да Не готов ≥ 10 мин; в течение 15 мин Оповещение о здоровье 10 минут Метрика Cluster readyz
Обнаружение насыщения запросов CPU кластера Ресурс Нет > 90 % / ≥ 20 мин; в течение 30 мин Предупреждающий сигнал ² 10 минут Запросы CPU нод / Выделяемый CPU нод
Обнаружение насыщения запросов памяти кластера Ресурс Нет > 90 % / ≥ 20 мин; в течение 30 мин Предупреждающий сигнал ² 10 минут Запросы памяти нод / Выделяемая память нод
Обнаружение насыщения подов кластера Ресурс Нет > 90 % подов / ≥ 20 мин; в течение 30 мин Предупреждающий сигнал ² 10 минут Сумма готовых подов / Сумма выделяемых подов
Обнаружение проблем мониторинга Доступность Да ¹ Недоступно ≥ 20 мин; в течение 30 мин Предупреждающий сигнал ¹ ² 10 минут Доступность мониторинга через API Ключ-АСТРОМ

Обнаружение проблем мониторинга не имеет связанной метрики или выражения DQL — оно отслеживает доступность собственного мониторинга кластера Ключ-АСТРОМ на основе API, а не состояние кластера.

Метрики и выражения DQL для кластера

Нода

Оповещение Тип проблемы Включено (рекомендуется) Порог обнаружения (рекомендуется) Серьёзность Снятие оповещения через Расчёт
Обнаружение проблем готовности ноды Доступность Да ¹ Не готова ≥ 10 мин; в течение 20 мин Предупреждающий сигнал ¹ ² 10 минут Метрика состояния ноды с фильтром 'not ready'
Обнаружение проблемных состояний ноды Ошибка Да ¹ Проблемное ≥ 10 мин; в течение 20 мин Предупреждающий сигнал ¹ ² 10 минут Метрика состояния нод
Обнаружение насыщения запросов CPU ноды Ресурс Нет > 90 % / ≥ 20 мин; в течение 30 мин Предупреждающий сигнал ² 10 минут Сумма запросов CPU ноды / Сумма выделяемого CPU нод
Обнаружение насыщения запросов памяти ноды Ресурс Нет > 90 % / ≥ 20 мин; в течение 30 мин Предупреждающий сигнал ² 10 минут Сумма запросов памяти ноды / Сумма выделяемой памяти нод
Обнаружение насыщения подов ноды Ресурс Нет > 90 % подов / ≥ 20 мин; в течение 30 мин Предупреждающий сигнал ² 10 минут Сумма работающих подов на ноде / Лимит подов ноды

Обнаружение проблемных состояний ноды срабатывает при любом из следующих состояний: ContainerRuntimeProblem, ContainerRuntimeUnhealthy, CorruptDockerOverlay2, DiskPressure, FilesystemCorruptionProblem, FrequentContainerdRestart, FrequentDockerRestart, FrequentGcfsSnapshotterRestart, FrequentGcfsdRestart, FrequentKubeletRestart, FrequentUnregisterNetDevice, GcfsSnapshotterMissingLayer, GcfsSnapshotterUnhealthy, GcfsdUnhealthy, KernelDeadlock, KubeletProblem, KubeletUnhealthy, MemoryPressure, NetworkUnavailable, OutOfDisk, PIDPressure, ReadonlyFilesystem.

Метрики и выражения DQL для ноды

Обнаружение насыщения запросов CPU ноды

Тип Выражение
Выражение метрики
builtin:kubernetes.node.requests_cpu:splitBy(dt.kubernetes.node.system_uuid,k8s.node.name):sum/builtin:kubernetes.node.cpu_allocatable:splitBy(dt.kubernetes.node.system_uuid,k8s.node.name):sum*100.0
DQL
timeseries {o1=sum(dt.kubernetes.container.requests_cpu, rollup: avg), o2=sum(dt.kubernetes.node.cpu_allocatable, rollup: avg)}, by: {dt.kubernetes.node.system_uuid,k8s.node.name}| fieldsAdd result=o1[]/o2[]* 100.0| fieldsRemove {o1,o2}

Обнаружение насыщения запросов памяти ноды

Тип Выражение
Выражение метрики
builtin:kubernetes.node.requests_memory:splitBy(dt.kubernetes.node.system_uuid,k8s.node.name):sum/builtin:kubernetes.node.memory_allocatable:splitBy(dt.kubernetes.node.system_uuid,k8s.node.name):sum*100.0
DQL
timeseries {o1=sum(dt.kubernetes.container.requests_memory, rollup: avg), o2=sum(dt.kubernetes.node.memory_allocatable, rollup: avg)}, by: {dt.kubernetes.node.system_uuid,k8s.node.name}| fieldsAdd result=o1[]/o2[]* 100.0| fieldsRemove {o1,o2}

Обнаружение насыщения подов ноды

Тип Выражение
Выражение метрики
builtin:kubernetes.node.pods:filter(and(eq(pod_phase,Running))):splitBy(dt.kubernetes.node.system_uuid,k8s.node.name):sum/builtin:kubernetes.node.pods_allocatable:splitBy(dt.kubernetes.node.system_uuid,k8s.node.name):sum*100.0
DQL
timeseries o1=sum(dt.kubernetes.pods, rollup: avg), nonempty:true, filter: {((pod_phase=="Running"))}, by: {dt.kubernetes.node.system_uuid,k8s.node.name}| join [timeseries operand=sum(dt.kubernetes.node.pods_allocatable, rollup: avg), nonempty:true, by: {dt.kubernetes.node.system_uuid,k8s.node.name}], on: {interval}, fields: {o2=operand}| fieldsAdd result=o1[]/o2[]* 100.0| fieldsRemove {o1,o2}

Обнаружение проблем готовности ноды

Тип Выражение
Выражение метрики
builtin:kubernetes.node.conditions:filter(and(eq(node_condition,Ready),ne(condition_status,True))):splitBy(dt.kubernetes.node.system_uuid,k8s.node.name):sum
DQL
timeseries {sum(dt.kubernetes.node.conditions, rollup: avg)}, filter: {((node_condition=="Ready")AND(condition_status!=true))}, by: {dt.kubernetes.node.system_uuid,k8s.node.name}

Обнаружение проблемных состояний ноды

Тип Выражение
Выражение метрики
builtin:kubernetes.node.conditions:filter(and(or(eq(node_condition,ContainerRuntimeProblem),eq(node_condition,ContainerRuntimeUnhealthy),eq(node_condition,CorruptDockerOverlay2),eq(node_condition,DiskPressure),eq(node_condition,FilesystemCorruptionProblem),eq(node_condition,FrequentContainerdRestart),eq(node_condition,FrequentDockerRestart),eq(node_condition,FrequentGcfsSnapshotterRestart),eq(node_condition,FrequentGcfsdRestart),eq(node_condition,FrequentKubeletRestart),eq(node_condition,FrequentUnregisterNetDevice),eq(node_condition,GcfsSnapshotterMissingLayer),eq(node_condition,GcfsSnapshotterUnhealthy),eq(node_condition,GcfsdUnhealthy),eq(node_condition,KernelDeadlock),eq(node_condition,KubeletProblem),eq(node_condition,KubeletUnhealthy),eq(node_condition,MemoryPressure),eq(node_condition,NetworkUnavailable),eq(node_condition,OutOfDisk),eq(node_condition,PIDPressure),eq(node_condition,ReadonlyFilesystem)),eq(condition_status,True))):splitBy(dt.kubernetes.node.system_uuid,k8s.node.name):sum
DQL
timeseries {sum(dt.kubernetes.node.conditions, rollup: avg)}, filter: {(((node_condition=="ContainerRuntimeProblem")OR(node_condition=="ContainerRuntimeUnhealthy")OR(node_condition=="CorruptDockerOverlay2")OR(node_condition=="DiskPressure")OR(node_condition=="FilesystemCorruptionProblem")OR(node_condition=="FrequentContainerdRestart")OR(node_condition=="FrequentDockerRestart")OR(node_condition=="FrequentGcfsSnapshotterRestart")OR(node_condition=="FrequentGcfsdRestart")OR(node_condition=="FrequentKubeletRestart")OR(node_condition=="FrequentUnregisterNetDevice")OR(node_condition=="GcfsSnapshotterMissingLayer")OR(node_condition=="GcfsSnapshotterUnhealthy")OR(node_condition=="GcfsdUnhealthy")OR(node_condition=="KernelDeadlock")OR(node_condition=="KubeletProblem")OR(node_condition=="KubeletUnhealthy")OR(node_condition=="MemoryPressure")OR(node_condition=="NetworkUnavailable")OR(node_condition=="OutOfDisk")OR(node_condition=="PIDPressure")OR(node_condition=="ReadonlyFilesystem"))AND(condition_status==true))}, by: {dt.kubernetes.node.system_uuid,k8s.node.name}

Пространство имён

Оповещение Тип проблемы Включено (рекомендуется) Порог обнаружения (рекомендуется) Серьёзность Снятие оповещения через Расчёт
Обнаружение насыщения квоты запросов CPU пространства имён Ресурс Нет > 90 % / ≥ 20 мин; в течение 30 мин Предупреждающий сигнал ² 10 минут Сумма использованного CPU квоты ресурсов / Сумма запросов CPU квоты ресурсов
Обнаружение насыщения квоты лимитов CPU пространства имён Ресурс Нет > 90 % / ≥ 20 мин; в течение 30 мин Предупреждающий сигнал ² 10 минут Сумма использованного CPU квоты ресурсов / Сумма лимитов CPU квоты ресурсов
Обнаружение насыщения квоты запросов памяти пространства имён Ресурс Нет > 90 % / ≥ 20 мин; в течение 30 мин Предупреждающий сигнал ² 10 минут Сумма использованной памяти квоты ресурсов / Сумма запросов памяти квоты ресурсов
Обнаружение насыщения квоты лимитов памяти пространства имён Ресурс Нет > 90 % / ≥ 20 мин; в течение 30 мин Предупреждающий сигнал ² 10 минут Сумма использованной памяти квоты ресурсов / Сумма лимитов памяти квоты ресурсов
Обнаружение насыщения квоты подов пространства имён Ресурс Нет > 90 % / ≥ 20 мин; в течение 30 мин Предупреждающий сигнал ² 10 минут Сумма использованных подов квоты ресурсов / Сумма лимитов подов квоты ресурсов

Метрики и выражения DQL для пространства имён

Обнаружение насыщения квоты лимитов CPU пространства имён

Тип Выражение
Выражение метрики
builtin:kubernetes.resourcequota.limits_cpu_used:splitBy(k8s.namespace.name):sum/builtin:kubernetes.resourcequota.limits_cpu:splitBy(k8s.namespace.name):sum*100.0
DQL
timeseries {o1=sum(dt.kubernetes.resourcequota.limits_cpu_used, rollup: avg), o2=sum(dt.kubernetes.resourcequota.limits_cpu, rollup: avg)}, by: {k8s.namespace.name}| fieldsAdd result=o1[]/o2[]* 100.0| fieldsRemove {o1,o2}

Обнаружение насыщения квоты запросов CPU пространства имён

Тип Выражение
Выражение метрики
builtin:kubernetes.resourcequota.requests_cpu_used:splitBy(k8s.namespace.name):sum/builtin:kubernetes.resourcequota.requests_cpu:splitBy(k8s.namespace.name):sum*100.0
DQL
timeseries {o1=sum(dt.kubernetes.resourcequota.requests_cpu_used, rollup: avg), o2=sum(dt.kubernetes.resourcequota.requests_cpu, rollup: avg)}, by: {k8s.namespace.name}| fieldsAdd result=o1[]/o2[]* 100.0| fieldsRemove {o1,o2}

Обнаружение насыщения квоты лимитов памяти пространства имён

Тип Выражение
Выражение метрики
builtin:kubernetes.resourcequota.limits_memory_used:splitBy(k8s.namespace.name):sum/builtin:kubernetes.resourcequota.limits_memory:splitBy(k8s.namespace.name):sum*100.0
DQL
timeseries {o1=sum(dt.kubernetes.resourcequota.limits_memory_used, rollup: avg), o2=sum(dt.kubernetes.resourcequota.limits_memory, rollup: avg)}, by: {k8s.namespace.name}| fieldsAdd result=o1[]/o2[]* 100.0| fieldsRemove {o1,o2}

Обнаружение насыщения квоты запросов памяти пространства имён

Тип Выражение
Выражение метрики
builtin:kubernetes.resourcequota.requests_memory_used:splitBy(k8s.namespace.name):sum/builtin:kubernetes.resourcequota.requests_memory:splitBy(k8s.namespace.name):sum*100.0
DQL
timeseries {o1=sum(dt.kubernetes.resourcequota.requests_memory_used, rollup: avg), o2=sum(dt.kubernetes.resourcequota.requests_memory, rollup: avg)}, by: {k8s.namespace.name}| fieldsAdd result=o1[]/o2[]* 100.0| fieldsRemove {o1,o2}

Обнаружение насыщения квоты подов пространства имён

Тип Выражение
Выражение метрики
builtin:kubernetes.resourcequota.pods_used:splitBy(k8s.namespace.name):sum/builtin:kubernetes.resourcequota.pods:splitBy(k8s.namespace.name):sum*100.0
DQL
timeseries {o1=sum(dt.kubernetes.resourcequota.pods_used, rollup: avg), o2=sum(dt.kubernetes.resourcequota.pods, rollup: avg)}, by: {k8s.namespace.name}| fieldsAdd result=o1[]/o2[]* 100.0| fieldsRemove {o1,o2}

Рабочая нагрузка

Оповещение Тип проблемы Включено (рекомендуется) Порог обнаружения (рекомендуется) Серьёзность Снятие оповещения через Расчёт
Обнаружение перезапусков контейнеров Ошибка Да ¹ ≥ 1 перезапуск за 3 мин; в течение 5 мин Предупреждающий сигнал ¹ ² 15 минут Метрика перезапусков контейнеров
Обнаружение застрявших развёртываний Ошибка Да ¹ Прогресс остановлен ≥ 3 мин; в течение 5 мин Оповещение о здоровье ¹ 10 минут Метрика состояния рабочей нагрузки с фильтром 'not progressing'
Обнаружение подов, застрявших в состоянии Pending Ресурс Да ¹ ≥ 1 под застрял ≥ 10 мин; в течение 15 мин Предупреждающий сигнал ¹ ² 10 минут Метрика подов с фильтром по фазе 'Pending'
Обнаружение подов, застрявших в состоянии Terminating Ресурс Да ¹ Завершение остановлено ≥ 10 мин; в течение 15 мин Предупреждающий сигнал ¹ ² 10 минут Метрика подов с фильтром по статусу 'Terminating'
Обнаружение рабочих нагрузок без готовых подов Ошибка Да ¹ Нет готовых подов ≥ 10 мин; в течение 15 мин Оповещение о здоровье ¹ 10 минут Сумма неfailed подов − Сумма неfailed, неготовых подов
Обнаружение рабочих нагрузок с неготовыми подами Ошибка Нет > 30 % неготовых; в течение 60 мин Предупреждающий сигнал ² 10 минут Сумма неfailed подов − Сумма неfailed, готовых подов
Обнаружение насыщения использования памяти Ресурс Нет > 90 % / ≥ 10 мин; в течение 15 мин Предупреждающий сигнал ² 10 минут Сумма рабочего набора памяти рабочей нагрузки / Сумма лимитов памяти рабочей нагрузки
Обнаружение насыщения использования CPU Ресурс Нет > 90 % / ≥ 10 мин; в течение 15 мин Предупреждающий сигнал ² 10 минут Сумма рабочего набора памяти рабочей нагрузки / Сумма лимитов памяти рабочей нагрузки
Обнаружение высокого троттлинга CPU Ресурс Нет > 100 % троттлинга / ≥ 20 мин; в течение 30 мин Предупреждающий сигнал ² 10 минут Сумма троттлинга CPU рабочей нагрузки / Сумма лимитов CPU рабочей нагрузки
Обнаружение убийств из-за нехватки памяти Ошибка Да ¹ На основе событий Предупреждающий сигнал ¹ ² 15 минут Метрика убийств из-за нехватки памяти
Обнаружение событий сбоя задания Ошибка Да ¹ На основе событий Предупреждающий сигнал ¹ ² 60 минут Метрика событий с фильтром по причине и типу рабочей нагрузки
Обнаружение событий отката подов Ошибка Да ¹ На основе событий Оповещение о здоровье ¹ 15 минут Метрика событий с фильтром по причине
Обнаружение событий вытеснения подов Ошибка Да ¹ На основе событий Оповещение о здоровье ¹ 60 минут Метрика событий с фильтром по причине
Обнаружение событий вытеснения приоритетов подов Ошибка Да ¹ На основе событий Предупреждающий сигнал ¹ ² 60 минут Метрика событий с фильтром по причине

Обнаружение событий сбоя задания срабатывает на события с причиной BackoffLimitExceeded, DeadlineExceeded или PodFailurePolicy, только для Jobs и CronJobs.

Обнаружение событий отката подов срабатывает на события с причиной BackOff — проверяйте поды со статусом ImagePullBackOff или CrashLoopBackOff.

Обнаружение событий вытеснения подов срабатывает на события с причиной Evicted.

Обнаружение событий вытеснения приоритетов подов срабатывает на события с причиной Preempted или Preempting.

Обнаружение рабочих нагрузок с неготовыми подами и Обнаружение рабочих нагрузок без готовых подов исключают поды, принадлежащие Jobs и CronJobs.

Метрики и выражения DQL для рабочей нагрузки

Обнаружение насыщения использования CPU

Тип Выражение
Выражение метрики
(builtin:kubernetes.workload.cpu_usage:splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum/builtin:kubernetes.workload.limits_cpu:splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum):default(0.0)*100.0
DQL
timeseries {o1=sum(dt.kubernetes.container.cpu_usage, rollup: avg), o2=sum(dt.kubernetes.container.limits_cpu, rollup: avg)}, by: {k8s.namespace.name,k8s.workload.kind,k8s.workload.name}| fieldsAdd result=if(isNull(o1[]/o2[]), 0.0, else: o1[]/o2[])* 100.0| fieldsRemove {o1,o2}

Обнаружение перезапусков контейнеров

Тип Выражение
Выражение метрики
builtin:kubernetes.container.restarts:splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum:default(0.0)
DQL
timeseries {sum(dt.kubernetes.container.restarts, default:0.0, rollup: avg)}, by: {k8s.namespace.name,k8s.workload.kind,k8s.workload.name}

Обнаружение высокого троттлинга CPU

Тип Выражение
Выражение метрики
(builtin:kubernetes.workload.cpu_throttled:splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum/builtin:kubernetes.workload.limits_cpu:splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum):default(0.0)*100.0
DQL
timeseries {o1=sum(dt.kubernetes.container.cpu_throttled, rollup: avg), o2=sum(dt.kubernetes.container.limits_cpu, rollup: avg)}, by: {k8s.namespace.name,k8s.workload.kind,k8s.workload.name}| fieldsAdd result=if(isNull(o1[]/o2[]), 0.0, else: o1[]/o2[])* 100.0| fieldsRemove {o1,o2}

Обнаружение событий сбоя задания

Тип Выражение
Выражение метрики
builtin:kubernetes.events:filter(and(or(eq(k8s.event.reason,BackoffLimitExceeded),eq(k8s.event.reason,DeadlineExceeded),eq(k8s.event.reason,PodFailurePolicy)),or(eq(k8s.workload.kind,job),eq(k8s.workload.kind,cronjob)))):splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum:default(0.0)
DQL
timeseries {sum(dt.kubernetes.events, default:0.0, rollup: avg)}, filter: {(((k8s.event.reason=="BackoffLimitExceeded")OR(k8s.event.reason=="DeadlineExceeded")OR(k8s.event.reason=="PodFailurePolicy"))AND((k8s.workload.kind=="job")OR(k8s.workload.kind=="cronjob")))}, by: {k8s.namespace.name,k8s.workload.kind,k8s.workload.name}

Обнаружение насыщения использования памяти

Тип Выражение
Выражение метрики
(builtin:kubernetes.workload.memory_working_set:splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum/builtin:kubernetes.workload.limits_memory:splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum):default(0.0)*100.0
DQL
timeseries {o1=sum(dt.kubernetes.container.memory_working_set, rollup: avg), o2=sum(dt.kubernetes.container.limits_memory, rollup: avg)}, by: {k8s.namespace.name,k8s.workload.kind,k8s.workload.name}| fieldsAdd result=if(isNull(o1[]/o2[]), 0.0, else: o1[]/o2[])* 100.0| fieldsRemove {o1,o2}

Обнаружение убийств из-за нехватки памяти

Тип Выражение
Выражение метрики
builtin:kubernetes.container.oom_kills:splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum:default(0.0)
DQL
timeseries {sum(dt.kubernetes.container.oom_kills, default:0.0, rollup: avg)}, by: {k8s.namespace.name,k8s.workload.kind,k8s.workload.name}

Обнаружение событий отката подов

Тип Выражение
Выражение метрики
builtin:kubernetes.events:filter(and(eq(k8s.event.reason,BackOff))):splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum:default(0.0)
DQL
timeseries {sum(dt.kubernetes.events, default:0.0, rollup: avg)}, filter: {((k8s.event.reason=="BackOff"))}, by: {k8s.namespace.name,k8s.workload.kind,k8s.workload.name}

Обнаружение событий вытеснения подов

Тип Выражение
Выражение метрики
builtin:kubernetes.events:filter(and(eq(k8s.event.reason,Evicted))):splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum:default(0.0)
DQL
timeseries {sum(dt.kubernetes.events, default:0.0, rollup: avg)}, filter: {((k8s.event.reason=="Evicted"))}, by: {k8s.namespace.name,k8s.workload.kind,k8s.workload.name}

Обнаружение событий вытеснения приоритетов подов

Тип Выражение
Выражение метрики
builtin:kubernetes.events:filter(or(eq(k8s.event.reason,Preempted),eq(k8s.event.reason,Preempting))):splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum:default(0.0)
DQL
timeseries {sum(dt.kubernetes.events, default:0.0, rollup: avg)}, filter: {((k8s.event.reason=="Preempted")OR(k8s.event.reason=="Preempting"))}, by: {k8s.namespace.name,k8s.workload.kind,k8s.workload.name}

Обнаружение подов, застрявших в состоянии Pending

Тип Выражение
Выражение метрики
builtin:kubernetes.pods:filter(and(eq(pod_phase,Pending))):splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum
DQL
timeseries {sum(dt.kubernetes.pods, rollup: avg)}, filter: {((pod_phase=="Pending"))}, by: {k8s.namespace.name,k8s.workload.kind,k8s.workload.name}

Обнаружение подов, застрявших в состоянии Terminating

Тип Выражение
Выражение метрики
builtin:kubernetes.pods:filter(and(eq(pod_status,Terminating))):splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum
DQL
timeseries {sum(dt.kubernetes.pods, rollup: avg)}, filter: {((pod_status=="Terminating"))}, by: {k8s.namespace.name,k8s.workload.kind,k8s.workload.name}

Обнаружение застрявших развёртываний

Тип Выражение
Выражение метрики
builtin:kubernetes.workload.conditions:filter(and(eq(workload_condition,Progressing),eq(condition_status,False))):splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum
DQL
timeseries {sum(dt.kubernetes.workload.conditions, rollup: avg)}, filter: {((workload_condition=="Progressing")AND(condition_status==false))}, by: {k8s.namespace.name,k8s.workload.kind,k8s.workload.name}

Обнаружение рабочих нагрузок с неготовыми подами

Тип Выражение
Выражение метрики
builtin:kubernetes.pods:filter(and(ne(pod_phase,Failed),ne(pod_phase,Succeeded),ne(k8s.workload.kind,job),ne(k8s.workload.kind,cronjob),ne(pod_status,Terminating))):splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum-builtin:kubernetes.pods:filter(and(ne(pod_phase,Failed),ne(pod_phase,Succeeded),ne(k8s.workload.kind,job),ne(k8s.workload.kind,cronjob),eq(pod_condition,Ready),ne(pod_status,Terminating))):splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum:default(0.0)
DQL
timeseries o1=sum(dt.kubernetes.pods, rollup: avg), filter: {((pod_phase!="Failed")AND(pod_phase!="Succeeded")AND(k8s.workload.kind!="job")AND(k8s.workload.kind!="cronjob")AND(pod_status!="Terminating"))}, by: {k8s.namespace.name,k8s.workload.kind,k8s.workload.name}| join [timeseries operand=sum(dt.kubernetes.pods, default:0.0, rollup: avg), nonempty:true, filter: {((pod_phase!="Failed")AND(pod_phase!="Succeeded")AND(k8s.workload.kind!="job")AND(k8s.workload.kind!="cronjob")AND(pod_condition=="Ready")AND(pod_status!="Terminating"))}, by: {k8s.namespace.name,k8s.workload.kind,k8s.workload.name}], on: {interval}, fields: {o2=operand}| fieldsAdd result=o1[]-o2[]| fieldsRemove {o1,o2}

Обнаружение рабочих нагрузок без готовых подов

Тип Выражение
Выражение метрики
builtin:kubernetes.pods:filter(and(ne(pod_phase,Failed),ne(pod_phase,Succeeded),ne(k8s.workload.kind,job),ne(k8s.workload.kind,cronjob))):splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum-builtin:kubernetes.pods:filter(and(ne(pod_phase,Failed),ne(pod_phase,Succeeded),ne(k8s.workload.kind,job),ne(k8s.workload.kind,cronjob),ne(pod_condition,Ready))):splitBy(k8s.namespace.name,k8s.workload.kind,k8s.workload.name):sum:default(0.0)
DQL
timeseries o1=sum(dt.kubernetes.pods, rollup: avg), filter: {((pod_phase!="Failed")AND(pod_phase!="Succeeded")AND(k8s.workload.kind!="job")AND(k8s.workload.kind!="cronjob"))}, by: {k8s.namespace.name,k8s.workload.kind,k8s.workload.name}| join [timeseries operand=sum(dt.kubernetes.pods, default:0.0, rollup: avg), nonempty:true, filter: {((pod_phase!="Failed")AND(pod_phase!="Succeeded")AND(k8s.workload.kind!="job")AND(k8s.workload.kind!="cronjob")AND(pod_condition!="Ready"))}, by: {k8s.namespace.name,k8s.workload.kind,k8s.workload.name}], on: {interval}, fields: {o2=operand}| fieldsAdd result=o1[]-o2[]| fieldsRemove {o1,o2}

Запросы на постоянные тома

Оповещение Тип проблемы Включено (рекомендуется) Порог обнаружения (рекомендуется) Серьёзность Снятие оповещения через Расчёт
Обнаружение низкого дискового пространства (MiB) Ресурс Нет ≤ 100 MiB осталось / ≥ 3 мин; в течение 5 мин Предупреждающий сигнал ² 10 минут Метрика доступных байт статистики тома Kubelet
Обнаружение низкого дискового пространства (%) Ресурс Да ¹ < 3 % доступно / ≥ 3 мин; в течение 5 мин Предупреждающий сигнал ¹ ² 10 минут Доступные байты статистики тома / Ёмкость статистики тома

Метрики и выражения DQL для запросов на постоянные тома

Обнаружение низкого дискового пространства (%)

Тип Выражение
Выражение метрики
builtin:kubernetes.persistentvolumeclaim.available:splitBy(k8s.namespace.name,k8s.persistent_volume_claim.name):avg/builtin:kubernetes.persistentvolumeclaim.capacity:splitBy(k8s.namespace.name,k8s.persistent_volume_claim.name):avg*100.0
DQL
timeseries {o1=avg(dt.kubernetes.persistentvolumeclaim.available), o2=avg(dt.kubernetes.persistentvolumeclaim.capacity)}, by: {k8s.namespace.name,k8s.persistent_volume_claim.name}| fieldsAdd result=o1[]/o2[]* 100.0| fieldsRemove {o1,o2}

Обнаружение низкого дискового пространства (MiB)

Тип Выражение
Выражение метрики
builtin:kubernetes.persistentvolumeclaim.available:splitBy(k8s.namespace.name,k8s.persistent_volume_claim.name):avg
DQL
timeseries {avg(dt.kubernetes.persistentvolumeclaim.available)}, by: {k8s.namespace.name,k8s.persistent_volume_claim.name}