Доступно в редакциях: CE, BE, SE, SE+, EE, CSE Pro (1.67)
Как использовать extended-monitoring-exporter
Чтобы включить экспортирование extended-monitoring метрик, нужно указать в пространстве имён лейбл 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-объектов в данном пространстве имён в 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
.
В таком случае значение из лейбла заменит значение по умолчанию.
Если вы хотите переопределить значения threshold для всех объектов в определенном пространстве имен, вы можете установить лейбл threshold.extended-monitoring.deckhouse.io/
на уровне namespace. Например: kubectl label namespace my-app-production threshold.extended-monitoring.deckhouse.io/5xx-warning=20
.
Это заменит значение по умолчанию для всех объектов namespace, для которых еще не установлен этот лейбл.
Слежение за объектом можно отключить индивидуально, поставив на него лейбл 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-объекты, то есть объекты вне пространств имён, не нуждаются в лейблах на этих пространствах и мониторинг на них включается по умолчанию при включении модуля.
Узел
Лейбл | Тип | Значение по умолчанию |
---|---|---|
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. Значения по умолчанию указаны в документации Kubernetes, в описании экспортера.
Namespaced Kubernetes-объекты
Под
Лейбл | Тип | Значение по умолчанию |
---|---|---|
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
Лейбл | Тип | Значение по умолчанию |
---|---|---|
5xx-warning | int (percent) | 10 |
5xx-critical | int (percent) | 20 |
Deployment
Лейбл | Тип | Значение по умолчанию |
---|---|---|
replicas-not-ready | int (count) | 0 |
Порог подразумевает количество недоступных реплик сверх maxUnavailable. Сработает, если недоступно реплик больше на указанное значение, чем разрешено в maxUnavailable
. То есть при нуле сработает, если недоступно больше, чем указано в maxUnavailable
, а при единице сработает, если недоступно больше, чем указано в maxUnavailable
, плюс 1. Таким образом, у конкретных Deployment, которые находятся в пространстве имён со включенным расширенным мониторингом и которым допустимо быть недоступными, можно установить этот параметр, чтобы не получать ненужные алерты.
StatefulSet
Лейбл | Тип | Значение по умолчанию |
---|---|---|
replicas-not-ready | int (count) | 0 |
Порог подразумевает количество недоступных реплик сверх maxUnavailable (см. комментарии к Deployment).
DaemonSet
Лейбл | Тип | Значение по умолчанию |
---|---|---|
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"})
)
В модуле реализовано 59 алертов.
Модуль включен по умолчанию в наборах модулей: Default
, Managed
.
Модуль выключен по умолчанию в наборе модулей Minimal
.
Чтобы настроить модуль, используйте ресурс ModuleConfig
с именем extended-monitoring
(подробнее о настройке Deckhouse…).
Пример ресурса ModuleConfig/extended-monitoring
для настройки модуля:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: extended-monitoring
spec:
version: 2
enabled: true
settings: # <-- Параметры модуля из раздела "Параметры" ниже.
Параметры
Версия схемы: 2
- массив строк
Список контроллеров, которые необходимо проверять, даже если количество реплик подов равняется 0 или контроллер находится в статусе
suspend
(приостановленный).Укажите
All
, для проверки всех типов контроллеров.Пример:
forceCheckDisabledControllers: - Deployment - StatefulSet
- массив объектов
Список зеркал для container registry.
Пример:
mirrors: - original: docker.io mirror: mirror.gcr.io - original: internal-registry.com mirror: mirror.internal-registry.com
- объект
Структура, аналогичная
spec.nodeSelector
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика. - массив объектов
Структура, аналогичная
spec.tolerations
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика.