В модуле реализовано 59 алертов.
Модуль включен по умолчанию в наборах модулей: Default
, Managed
.
Модуль выключен по умолчанию в наборе модулей Minimal
.
Чтобы настроить модуль, используйте custom resource ModuleConfig
с именем extended-monitoring
(подробнее о настройке Deckhouse…).
Пример ресурса ModuleConfig/extended-monitoring
для настройки модуля:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: extended-monitoring
spec:
version: 2
enabled: true
settings: # <-- Параметры модуля из раздела "Параметры" ниже.
Параметры
Версия схемы: 2
- settings
- settings.certificates
Настройки для мониторинга сертификатов в кластере Kubernetes.
- settings.certificates.exporterEnabled
Включен ли certExporter.
По умолчанию:
false
- settings.events
Настройки для мониторинга event’ов в кластере Kubernetes.
- settings.events.exporterEnabled
Включен ли eventsExporter.
По умолчанию:
false
- settings.events.severityLevel
Enables eventsExporter.
По умолчанию:
"OnlyWarnings"
Допустимые значения:
All
,OnlyWarnings
- settings.imageAvailability
Настройки для мониторинга доступности образов в кластере.
- settings.imageAvailability.exporterEnabled
Включен ли imageAvailabilityExporter.
По умолчанию:
true
- settings.imageAvailability.forceCheckDisabledControllers
Список контроллеров, которые необходимо проверять, даже если количество реплик подов равняется 0 или контроллер находится в статусе
suspend
(приостановленный).Укажите
All
, для проверки всех типов контроллеров.Пример:
forceCheckDisabledControllers: - Deployment - StatefulSet
- Элемент массива
Допустимые значения:
Deployment
,StatefulSet
,DaemonSet
,CronJob
,All
- settings.imageAvailability.ignoredImages
Список образов, для которых нужно пропустить проверку, например
alpine:3.12
илиquay.io/test/test:v1.1
.Пример:
ignoredImages: - alpine:3.10 - alpine:3.2
- settings.imageAvailability.mirrors
Список зеркал для container registry.
Пример:
mirrors: - original: docker.io mirror: mirror.gcr.io - original: internal-registry.com mirror: mirror.internal-registry.com
- settings.imageAvailability.mirrors.mirror
Обязательный параметр
- settings.imageAvailability.mirrors.original
Обязательный параметр
- settings.imageAvailability.registry
Настройки подключения к container registry.
- settings.imageAvailability.registry.scheme
Протокол доступа к container registry.
По умолчанию:
"HTTPS"
Допустимые значения:
HTTP
,HTTPS
- settings.imageAvailability.registry.tlsConfig
Настройки подключения к container registry
- settings.imageAvailability.registry.tlsConfig.ca
Корневой сертификат, которым можно проверить сертификат container registry при работе по HTTPS (если registry использует самоподписанные SSL-сертификаты).
- settings.imageAvailability.registry.tlsConfig.insecureSkipVerify
Пропускать ли валидацию TLS-сертификата для container registry.
По умолчанию:
false
- settings.nodeSelector
Структура, аналогичная
spec.nodeSelector
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика. - settings.tolerations
Структура, аналогичная
spec.tolerations
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика.- settings.tolerations.effect
- settings.tolerations.key
- settings.tolerations.operator
- settings.tolerations.tolerationSeconds
- settings.tolerations.value
Как использовать extended-monitoring-exporter
Чтобы включить экспортирование extended-monitoring метрик, нужно навесить на namespace лейбл extended-monitoring.deckhouse.io/enabled
любым удобным способом, например:
- добавить в проект соответствующий helm-чарт (рекомендуемый);
- добавить в описание
.gitlab-ci.yml
(kubectl patch/create); - поставить руками (
kubectl label namespace my-app-production extended-monitoring.deckhouse.io/enabled=""
); - настроить через namespace-configurator модуль.
Сразу же после этого для всех поддерживаемых Kubernetes-объектов в данном namespace в Prometheus появятся default-метрики + любые кастомные с префиксом threshold.extended-monitoring.deckhouse.io/
. Для ряда non-namespaced Kubernetes-объектов, описанных ниже, мониторинг включается автоматически.
К Kubernetes-объектам threshold.extended-monitoring.deckhouse.io/что-то свое
можно добавить любые другие лейблы с указанным значением. Пример: kubectl label pod test threshold.extended-monitoring.deckhouse.io/disk-inodes-warning=30
.
В таком случае значение из лейбла заменит значение по умолчанию.
Слежение за объектом можно отключить индивидуально, поставив на него лейбл extended-monitoring.deckhouse.io/enabled=false
. Соответственно, отключатся и лейблы по умолчанию, а также все алерты, привязанные к лейблам.
Стандартные лейблы и поддерживаемые Kubernetes-объекты
Далее приведен список используемых в Prometheus Rules лейблов, а также их стандартные значения.
Обратите внимание, что все лейблы начинаются с префикса threshold.extended-monitoring.deckhouse.io/
. Указанное в лейбле значение — число, которое устанавливает порог срабатывания алерта.
Например, лейбл threshold.extended-monitoring.deckhouse.io/5xx-warning: "5"
на Ingress-ресурсе изменяет порог срабатывания алерта с 10% (по умолчанию) на 5%.
Non-namespaced Kubernetes-объекты
Non-namespaced Kubernetes-объекты не нуждаются в лейблах на namespace и мониторинг на них включается по умолчанию при включении модуля.
Node
Label | Type | Default value |
---|---|---|
disk-bytes-warning | int (percent) | 70 |
disk-bytes-critical | int (percent) | 80 |
disk-inodes-warning | int (percent) | 90 |
disk-inodes-critical | int (percent) | 95 |
load-average-per-core-warning | int | 3 |
load-average-per-core-critical | int | 10 |
Важно! Эти лейблы не действуют для тех разделов, в которых расположены
imagefs
(по умолчанию —/var/lib/docker
) иnodefs
(по умолчанию —/var/lib/kubelet
). Для этих разделов пороги настраиваются полностью автоматически согласно eviction thresholds в kubelet. Значения по умолчанию см. тут, подробнее см. экспортер.
Namespaced Kubernetes-объекты
Под
Label | Type | Default value |
---|---|---|
disk-bytes-warning | int (percent) | 85 |
disk-bytes-critical | int (percent) | 95 |
disk-inodes-warning | int (percent) | 85 |
disk-inodes-critical | int (percent) | 90 |
Ingress
Label | Type | Default value |
---|---|---|
5xx-warning | int (percent) | 10 |
5xx-critical | int (percent) | 20 |
Deployment
Label | Type | Default value |
---|---|---|
replicas-not-ready | int (count) | 0 |
Порог подразумевает количество недоступных реплик сверх maxUnavailable. Сработает, если недоступно реплик больше на указанное значение, чем разрешено в maxUnavailable
. То есть при нуле сработает, если недоступно больше, чем указано в maxUnavailable
, а при единице сработает, если недоступно больше, чем указано в maxUnavailable
, плюс 1. Таким образом, у конкретных Deployment, которые находятся в namespace со включенным расширенным мониторингом и которым допустимо быть недоступными, можно подкрутить этот параметр, чтобы не получать ненужные алерты.
StatefulSet
Label | Type | Default value |
---|---|---|
replicas-not-ready | int (count) | 0 |
Порог подразумевает количество недоступных реплик сверх maxUnavailable (см. комментарии к Deployment).
DaemonSet
Label | Type | Default value |
---|---|---|
replicas-not-ready | int (count) | 0 |
Порог подразумевает количество недоступных реплик сверх maxUnavailable (см. комментарии к Deployment).
CronJob
Работает только выключение через лейбл extended-monitoring.deckhouse.io/enabled=false
.
Как работает
Модуль экспортирует в Prometheus специальные лейблы Kubernetes-объектов. Позволяет улучшить Prometheus-правила путем добавления порога срабатывания для алертов. Использование метрик, экспортируемых данным модулем, позволяет, например, заменить «магические» константы в правилах.
До:
(
kube_statefulset_status_replicas - kube_statefulset_status_replicas_ready
)
> 1
После:
(
kube_statefulset_status_replicas - kube_statefulset_status_replicas_ready
)
> on (namespace, statefulset)
(
max by (namespace, statefulset) (extended_monitoring_statefulset_threshold{threshold="replicas-not-ready"})
)