Модуль включен по умолчанию в наборах модулей: Default
, Managed
.
Модуль выключен по умолчанию в наборе модулей Minimal
.
Чтобы настроить модуль, используйте custom resource ModuleConfig
с именем extended-monitoring
(подробнее о настройке Deckhouse…).
Пример ресурса ModuleConfig/extended-monitoring
для настройки модуля:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: extended-monitoring
spec:
version: 1
enabled: true
settings: # <-- Параметры модуля из раздела "Параметры" ниже.
Параметры
Версия схемы: 1
- certificatesобъект
Настройки для мониторинга сертификатов в кластере Kubernetes.
- certificates.exporterEnabledбулевый
Включен ли certExporter.
По умолчанию:
false
- certificates.exporterEnabledбулевый
- eventsобъект
Настройки для мониторинга event’ов в кластере Kubernetes.
- events.exporterEnabledбулевый
Включен ли eventsExporter.
По умолчанию:
false
- events.severityLevelстрока
Enables eventsExporter.
По умолчанию:
"OnlyWarnings"
Допустимые значения:
All
,OnlyWarnings
- events.exporterEnabledбулевый
- imageAvailabilityобъект
Настройки для мониторинга доступности образов в кластере.
- imageAvailability.exporterEnabledбулевый
Включен ли imageAvailabilityExporter.
По умолчанию:
true
- imageAvailability.ignoredImagesмассив строк
Список образов, для которых нужно пропустить проверку, например
alpine:3.12
илиquay.io/test/test:v1.1
.Пример:
ignoredImages: - alpine:3.10 - alpine:3.2
- imageAvailability.skipRegistryCertVerificationбулевый
Пропускать ли валидацию TLS-сертификата для Docker Registry.
По умолчанию:
false
- imageAvailability.exporterEnabledбулевый
- 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"})
)