Уведомления о распространённых проблемах в Kubernetes/OpenShift

Материал из Документация Ключ-АСТРОМ
Версия от 01:55, 6 мая 2026; IKuznetsov (обсуждение | вклад) (Новая страница: «<code>Ключ-АСТРОМ версии 1.254+</code> <code>АктивныйШлюз версия 1.253+</code> Чтобы получать оповещени...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)

Ключ-АСТРОМ версии 1.254+

АктивныйШлюз версия 1.253+

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

Настройка

Существует три способа настройки оповещений о распространенных проблемах Kubernetes/OpenShift.

Настройка оповещения на другом уровне предназначена лишь для упрощения конфигурации нескольких объектов одновременно. Это не меняет поведения оповещения.

Например, включение оповещения ЦП рабочей нагрузкой по-прежнему будет оценивать и сообщать о проблемах для каждой рабочей нагрузки Kubernetes отдельно, даже если это настроено на уровне кластера Kubernetes.

Более подробную информацию об иерархии настроек см. в документации по настройкам.

На уровне каждого арендатора

  • Настройки применяются ко всем кластерам, узлам, пространствам имен или рабочим нагрузкам в рамках арендатора Kubernetes/OpenShift.
  • Для настройки параметров перейдите в раздел Настройки > Обнаружение аномалий и выберите любую страницу в разделе Kubernetes.

Пример:

Ошибка создания миниатюры: Не удаётся сохранить эскиз по месту назначения

На уровне кластера

  • Настройки применяются к выбранному кластеру или к нодам, пространствам имен и рабочим нагрузкам из выбранного кластера.
  • Для настройки параметров перейдите в раздел настроек выбранного кластера Kubernetes и выберите любую страницу в разделе Обнаружение аномалий.

Пример:

Ошибка создания миниатюры: Не удаётся сохранить эскиз по месту назначения

На уровне пространства имен

  • Настройки применяются к выбранным пространствам имен или рабочим нагрузкам.
  • Для настройки параметров перейдите в раздел настроек выбранного пространства имен и выберите любую страницу в разделе Обнаружение аномалий.

Пример:

Ошибка создания миниатюры: Не удаётся сохранить эскиз по месту назначения

Просмотреть оповещения

Проблемы, закрытые вручную, снова появятся через 60 дней, если их первопричина останется нерешенной.

Вы можете просмотреть оповещения.

  • На странице Проблемы.

Пример задачи:

Ошибка создания миниатюры: Не удаётся сохранить эскиз по месту назначения
  • В разделе События на странице с подробными сведениями о кластере.

Пример события:

Ошибка создания миниатюры: Не удаётся сохранить эскиз по месту назначения
  • Выберите событие, чтобы перейти в визуализацию данных и получить дополнительную информацию о метрике, которая сгенерировала это событие.

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

Ниже приведён список доступных оповещений.

Кластерные оповещения

Название оповещения Версия Ключ-АСТРОМ Тип проблемы Название проблемы Описание проблемы Отмена оповещений после Расчет Поддерживается в
Обнаружение перегрузки кластера по запросам ЦП 1.254 Ресурс Перегрузка кластера запросами ЦП Перегрузка ЦП запросами превышает установленный порог. 10 минут Запросы на использование ЦП нода / Доступное для выделения ЦП нода Kubernetes Classic, приложение Kubernetes
Обнаружение перегрузки кластера запросами памяти 1.254 Ресурс Перегрузка кластера запросами памяти Перегрузка памяти запросами превышает установленный порог. 10 минут Запросы на память от нода / Доступная память от нода Kubernetes Classic, приложение Kubernetes
Обнаружение перегрузки кластера подами 1.258 Ресурс Перегрузка подов в кластере Перегрузка кластера подами превышает установленный порог. 10 минут Сумма готовых нодов / Сумма доступных для выделения нодов Kubernetes Classic, приложение Kubernetes
Обнаружение проблем с готовностью кластера 1.254 Доступность Кластер не готов Конечная точка Readyz указывает, что данный кластер не готов. 10 минут Метрика готовности кластера Kubernetes Classic, приложение Kubernetes
Обнаружение проблем мониторинга 1.258 Доступность Мониторинг недоступен Мониторинг через API Ключ-АСТРОМ недоступен. 10 минут Kubernetes Classic, приложение Kubernetes

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

Обнаружение перегрузки кластера по запросам ЦП

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

Обнаружение перегрузки кластера запросами памяти

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

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

Тип Выражение
Метрическое выражение (builtin:kubernetes.node.pods:filter(and(eq(pod_condition,Ready))):splitBy():sum/builtin:kubernetes.node.pods_allocatable:splitBy():sum):default(0.0)*100.0
DQL timeseries o1=sum(dt.kubernetes.pods, rollup: avg), nonempty:true, filter: {((pod_condition=="Ready"))}, by: {}| join [timeseries operand=sum(dt.kubernetes.node.pods_allocatable, rollup: avg), nonempty:true, by: {}], on: {interval}, fields: {o2=operand}| fieldsAdd result=if(isNull(o1[]/o2[]), 0.0, else: o1[]/o2[])* 100.0| fieldsRemove {o1,o2}

Обнаружение проблем с готовностью кластера

Тип Выражение
Метрическое выражение builtin:kubernetes.cluster.readyz:splitBy():sum
DQL timeseries {sum(dt.kubernetes.cluster.readyz, rollup: avg)}, by: {}

Обнаружение проблем мониторинга

Тип Выражение
Метрическое выражение (no metric expression)
DQL (no DQL)

Автоматические оповещения для новых арендаторов

Алерт Настройка Значение
Проблемы готовности период выборки в минутах 3
Проблемы готовности период наблюдения в минутах 5
Проблемы мониторинга период выборки в минутах 15
Проблемы мониторинга период наблюдения в минутах 30

Оповещения о пространствах имен

Название оповещения Версия Ключ-АСТРОМ Тип проблемы Название проблемы Описание проблемы Отмена оповещений после Расчет Поддерживается в
Обнаружение перегрузки квоты ЦП пространства имен 1.254 Ресурс Перегрузка квоты ЦП Перегрузка квоты ЦП превышает установленный порог. 10 минут Сумма квот ресурсов ЦП, использованных / Сумма лимитов квот ресурсов ЦП Kubernetes Classic, приложение Kubernetes
Обнаружение насыщения квоты запросов ЦП в пространстве имен 1.254 Ресурс Перегрузка квоты запросов ЦП Перегрузка квоты запросов к ЦП превышает установленный порог. 10 минут Сумма использованных ресурсов ЦП / Сумма запросов ресурсов ЦП Kubernetes Classic, приложение Kubernetes
Обнаружение переполнения квоты памяти пространства имен 1.254 Ресурс Перегрузка квоты ограничения памяти Перегрузка квоты памяти превышает установленный порог. 10 минут Сумма использованной памяти из квоты ресурсов / Сумма лимитов памяти из квоты ресурсов Kubernetes Classic, приложение Kubernetes
Обнаружение насыщения квоты на использование памяти пространства имен 1.254 Ресурс Перегрузка квоты запросов памяти Перегрузка квоты запросов памяти превышает установленный порог. 10 минут Сумма использованной квоты памяти ресурсов / Сумма запросов на использование квоты памяти ресурсов Kubernetes Classic, приложение Kubernetes
Обнаружение переполнения квот подов пространства имен 1.254 Ресурс Перегрузка квоты подов Перегрузка квот в подах превышает установленный порог. 10 минут Сумма использованных квот ресурсов / Сумма лимита квот ресурсов Kubernetes Classic, приложение Kubernetes

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

Обнаружение перегрузки квоты ЦП пространства имен

Тип Выражение
Метрическое выражение 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}

Обнаружение перегрузки квоты запросов ЦП в пространстве имен

Тип Выражение
Метрическое выражение 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.254 Ресурс Перегрузка процессорного трафика на нодах Перегрузка ЦП запросами превышает установленный порог. 10 минут Сумма запросов ЦП нода / Сумма доступных ресурсов ЦП нода Kubernetes Classic, приложение Kubernetes
Обнаружение перегрузки памяти, запрашиваемой нодами 1.254 Ресурс Перегрузка памяти запросами на нодах Перегрузка памяти запросами превышает установленный порог. 10 минут Сумма запросов памяти нода / Сумма доступной памяти нода Kubernetes Classic, приложение Kubernetes
Обнаружение перегрузки нодов подами 1.254 Ресурс Перегрузка подов на нодах Перегрузка капсул превышает установленный порог. 10 минут Сумма запущенных подов на нода / Лимит подов на нода Kubernetes Classic, приложение Kubernetes
Обнаружение проблем с готовностью нода 1.254 Доступность Нод не готов Нод не готов. 10 минут Метрика состояния нода отфильтрована по критерию «не готов». Kubernetes Classic, приложение Kubernetes
Обнаружение проблемных состояний нодов 1.264 Ошибка Проблемное состояние нода Нод имеет одно или несколько проблемных состояний из следующих ContainerRuntimeProblem:​​​​​​​​​​​​Container RuntimeUnhea lthy Corrupt Docker Overlay2 Disk Pressure Filesystem Corruption Problem Frequent Containerd Restart Frequent Docker Restart Frequent Gcfs Snapshotter Restart Frequent Gcfsd Restart Frequent Kubelet Restart Frequent Unregister NetDevice GcfsSnapshotter Missing Layer Gcfs Snapshotter Unhealthy Gcfsd Unhealthy Kernel Deadlock Kubelet Problem Kubelet Unhealthy Memory Pressure Network Unavailable Out OfDisk PID Pressure Readonly Filesystem 10 минут Метрика состояния нода Kubernetes Classic, приложение Kubernetes

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

Обнаружение перегрузки ЦП нода

Тип Выражение
Метрическое выражение 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}

Автоматические оповещения для новых арендаторов

Алерт Настройка Значение
Проблемы готовности период выборки в минутах период выборки в минутах
3 период наблюдения в минутах 5
Проблемы состояние узла период выборки в минутах период выборки в минутах
3 период наблюдения в минутах 5

Постоянно поступающие оповещения о большом объеме заявок

Название оповещения Версия Ключ-АСТРОМ Тип проблемы Название проблемы Описание проблемы Отмена оповещений после Расчет Поддерживается в
Обнаружено нехватка места на диске (%) 1.262 Ресурс Kubernetes PVC: Низкий процент свободного места на диске Доступное дисковое пространство для запроса постоянного тома находится ниже порогового значения. 10 минут Доступные данные статистики по объему (в байтах) / Объем данных статистики по объему (в байтах) Kubernetes Classic, приложение Kubernetes
Обнаружение недостатка места на диске (МиБ) 1.262 Ресурс Kubernetes PVC: Недостаток дискового пространства Доступное дисковое пространство для запроса постоянного тома находится ниже порогового значения. 10 минут Статистика объема Kubelet, доступные байты, метрика Kubernetes Classic, приложение Kubernetes

Показатель постоянного объема претензий и выражения 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}

Обнаружение недостатка места на диске (МиБ)

Тип Выражение
Метрическое выражение 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}

Оповещения о рабочей нагрузке

Название оповещения Версия Ключ-АСТРОМ Тип проблемы Название проблемы Описание проблемы Отмена оповещений после Расчет Поддерживается в
Обнаружение предела ЦП 1.264 Ресурс Загрузка ЦП близка к пределу Использование ЦП превышает пороговое значение, установленное в рамках лимита использования ЦП. 10 минут Сумма использования ЦП рабочей нагрузкой / Сумма лимитов ЦП рабочей нагрузкой Kubernetes Classic, приложение Kubernetes
Обнаружение перезапусков контейнеров 1.254 Ошибка Контейнер перезапускается Количество перезапусков контейнеров, зафиксированных в ходе наблюдений, превышает установленный порог. 15 минут Метрика перезапуска контейнера Kubernetes Classic, приложение Kubernetes
Обнаружение высокого уровня троттлинга ЦП 1.264 Ресурс Высокое снижение производительности процессора Соотношение снижения производительности процессора к установленным пределам превышает заданный порог. 10 минут Сумма ограничений ЦП рабочей нагрузки / Сумма ограничений ЦП рабочей нагрузки Kubernetes Classic, приложение Kubernetes
Обнаружение событий, приводящих к сбоям в работе. 1.268 Ошибка Событие, приведшее к сбою в работе Обнаружены события с причинами 'BackoffLimitExceeded', 'DeadlineExceeded' или 'PodFailurePolicy'. 60 минут Метрика события, отфильтрованная по причине и типу рабочей нагрузки. Kubernetes Classic, приложение Kubernetes
Обнаружение предела использования памяти 1.264 Ресурс Использование памяти близко к пределу. Объем используемой памяти (память рабочего набора) превышает пороговое значение, установленное в рамках лимита памяти. 10 минут Сумма объема памяти, используемой рабочей нагрузкой / Сумма лимитов памяти, используемых рабочей нагрузкой Kubernetes Classic, приложение Kubernetes
Обнаружение случаев ошибок из-за нехватки памяти 1.268 Ошибка Ошибки, произошедшие из-за отсутствия памяти Для групп с такой рабочей нагрузкой наблюдались случаи гибели из-за нехватки памяти. 15 минут Показатель "нехватка памяти приводит к ошибкам" Kubernetes Classic, приложение Kubernetes
Обнаружение событий отката пода 1.268 Ошибка Откат Для модулей этой рабочей нагрузки обнаружены события с причиной 'BackOff'. Проверьте наличие модулей со статусом 'ImagePullBackOff' или 'CrashLoopBackOff'. 15 минут Метрика события, отфильтрованная по причине Kubernetes Classic, приложение Kubernetes
Обнаружение событий прерывания подов 1.268 Ошибка Событие прерывания подов Для модулей с данной рабочей нагрузкой были обнаружены события с причиной «прерывания». 60 минут Метрика события, отфильтрованная по причине Kubernetes Classic, приложение Kubernetes
Обнаружение событий прерывания подов 1.268 Ошибка Событие прерывания Для модулей с данной рабочей нагрузкой были обнаружены события с причинами «Прервано» или «Прерывание». 60 минут Метрика события, отфильтрованная по причине Kubernetes Classic, приложение Kubernetes
Обнаружение модулей, зависших в состоянии ожидания 1.254 Ресурс Поды застряли в состоянии ожидания В рабочей нагрузке имеются ожидающие завершения поды. 10 минут Метрика Pods отфильтрована по фазе 'Pending'. Kubernetes Classic, приложение Kubernetes
Обнаружение подов, зависших в состоянии завершения 1.260 Ресурс Поды застряли в состоянии завершения В процессе выполнения задачи модули зависли в состоянии "завершение". 10 минут Метрика Pods отфильтрована по статусу «Завершение». Kubernetes Classic, приложение Kubernetes
Обнаружение зависших развертываний 1.260 Ошибка Развертывание зависло Процесс развертывания завис и поэтому больше не продвигается. 10 минут Показатель состояния рабочей нагрузки отфильтрован по критерию «не выполняется». Kubernetes Classic, приложение Kubernetes
Обнаружение рабочих нагрузок с неготовыми подами 1.258 Ошибка Не все модули готовы. В рабочей нагрузке есть модули, которые еще не готовы. 10 минут Сумма всех ожидающих или выполняющихся подов − Сумма готовых ожидающих или выполняющихся подов. Поды, созданные с помощью Jobs и CronJob, исключаются. Kubernetes Classic, приложение Kubernetes
Обнаружение рабочих нагрузок без готовых модулей 1.254 Ошибка Модуль не готов В рабочей нагрузке нет готовых модулей. 10 минут Сумма всех ожидающих или выполняющихся подов − Сумма не готовых ожидающих или выполняющихся подов. Поды, созданные с помощью Jobs и CronJob, исключаются. Kubernetes Classic, приложение Kubernetes

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

Обнаружение насыщения ЦП

Тип Выражение
Метрическое выражение (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}

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

Тип Выражение
Метрическое выражение (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}

Обнаружение модулей, зависших в состоянии ожидания

Тип Выражение
Метрическое выражение 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}

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

Тип Выражение
Метрическое выражение 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}

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

Следующее выражение возвращает количество ожидающих и запущенных подов, находящихся в состоянии «не готово». Поды, созданные с помощью Jobs и CronJobs, исключаются.

Тип Выражение
Метрическое выражение 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}

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

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

Тип Выражение
Метрическое выражение 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}

Автоматические оповещения для новых арендаторов

Алерт Настройка Значение
Перезапуск контейнера порог 1
Перезапуск контейнера период выборки в минутах 3
Перезапуск контейнера период наблюдения в минутах 5
Развертывание зависло период выборки в минутах 3
Развертывание зависло период наблюдения в минутах 5
Ожидающие завершения модули порог 1
Ожидающие завершения модули период выборки в минутах 10
Ожидающие завершения модули период наблюдения в минутах 15
Под завис в состоянии завершения. период выборки в минутах 10
Под завис в состоянии завершения. период наблюдения в минутах 15
Рабочая нагрузка без готовых модулей период выборки в минутах 10
Рабочая нагрузка без готовых модулей период наблюдения в минутах 15
Oom Kills алерт всегда
События, приводящие к сбоям в работе алерт всегда
События отката пода алерт всегда
События по выселению из групп алерт всегда
События вытеснения подов алерт всегда