В модуле реализовано 58 алертов.
Модуль включен по умолчанию в наборах модулей: 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
- объектcertificates
Настройки для мониторинга сертификатов в кластере Kubernetes.
- булевыйcertificates.exporterEnabled
Включен ли certExporter.
По умолчанию:
false 
 - объектevents
Настройки для мониторинга event’ов в кластере Kubernetes.
- булевыйevents.exporterEnabled
Включен ли eventsExporter.
По умолчанию:
false - строкаevents.severityLevel
Enables eventsExporter.
По умолчанию:
"OnlyWarnings"Допустимые значения:
All,OnlyWarnings 
 - объектimageAvailability
Настройки для мониторинга доступности образов в кластере.
- булевыйimageAvailability.exporterEnabled
Включен ли imageAvailabilityExporter.
По умолчанию:
true - массив строкimageAvailability.forceCheckDisabledControllers
Список контроллеров, которые необходимо проверять, даже если количество реплик подов равняется 0 или контроллер находится в статусе
suspend(приостановленный).Укажите
All, для проверки всех типов контроллеров.Пример:
forceCheckDisabledControllers: - Deployment - StatefulSet- строкаЭлемент массива
Допустимые значения:
Deployment,StatefulSet,DaemonSet,CronJob,All 
 - массив строкimageAvailability.ignoredImages
Список образов, для которых нужно пропустить проверку, например
alpine:3.12илиquay.io/test/test:v1.1.Пример:
ignoredImages: - alpine:3.10 - alpine:3.2 - массив объектовimageAvailability.mirrors
Список зеркал для container registry.
Пример:
mirrors: - original: docker.io mirror: mirror.gcr.io - original: internal-registry.com mirror: mirror.internal-registry.com- строкаimageAvailability.mirrors.mirror
Обязательный параметр
 - строкаimageAvailability.mirrors.original
Обязательный параметр
 
 - объектimageAvailability.registry
Настройки подключения к container registry.
- строкаimageAvailability.registry.scheme
Протокол доступа к container registry.
По умолчанию:
"HTTPS"Допустимые значения:
HTTP,HTTPS - объектimageAvailability.registry.tlsConfig
Настройки подключения к container registry
- строкаimageAvailability.registry.tlsConfig.ca
Корневой сертификат, которым можно проверить сертификат container registry при работе по HTTPS (если registry использует самоподписанные SSL-сертификаты).
 - булевыйimageAvailability.registry.tlsConfig.insecureSkipVerify
Пропускать ли валидацию TLS-сертификата для container registry.
По умолчанию:
false 
 
 
 - объектnodeSelector
Структура, аналогичная
spec.nodeSelectorпода Kubernetes.Если ничего не указано или указано
false, будет использоваться автоматика. - массив объектовtolerations
Структура, аналогичная
spec.tolerationsпода Kubernetes.Если ничего не указано или указано
false, будет использоваться автоматика.- строкаtolerations.effect
 - строкаtolerations.key
 - строкаtolerations.operator
 - целочисленныйtolerations.tolerationSeconds
 - строка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"})
)