Deckhouse Kubernetes Platform (DKP) предоставляет решение для мониторинга Kubernetes на базе Prometheus и Grafana. В кластере автоматически настраивается сбор метрик с узлов, подов и ключевых компонентов кластера (etcd, kube-apiserver, CoreDNS), после чего становятся доступны предустановленные дашборды для анализа использования CPU, памяти, дисков и сети.
Мониторинг кластера по умолчанию включён в наборах модулей Default и Managed.
Все компоненты, включая Prometheus и Alertmanager, работают в отказоустойчивом режиме и могут использоваться как в облачных средах, так и на bare-metal-серверах.
Принцип работы Prometheus рассмотрен в разделе Настройка системы сбора и хранения метрик.
В DKP реализовано несколько видов мониторинга:
- мониторинг аппаратных ресурсов;
- мониторинг Kubernetes;
- мониторинг Ingress;
- мониторинг control plane;
- мониторинг сетевого взаимодействия;
- расширенный мониторинг;
- мониторинг SLA кластера.
В DKP предусмотрена система оповещений (алертинг), поддерживающая отправку уведомлений о событиях, в том числе во внешние системы.
Мониторинг аппаратных ресурсов
Предусмотрено отслеживание загрузки аппаратных ресурсов кластера с графиками по утилизации:
- процессора;
- памяти;
- диска;
- сети.
Графики доступны с агрегацией:
- по подам;
- контроллерам;
- пространствам имен;
- узлам.
Мониторинг Kubernetes
Модуль monitoring-kubernetes предназначен для базового мониторинга узлов кластера.
Модуль обеспечивает безопасный сбор метрик и предоставляет базовый набор правил для мониторинга:
- текущей версии container runtime (docker, containerd) на узле и ее соответствия версиям, разрешенным для использования;
- общей работоспособности подсистемы мониторинга кластера (Dead man’s switch);
- доступных файловых дескрипторов, сокетов, свободного места и inode;
- работы
kube-state-metrics,node-exporter,kube-dns; - состояния узлов кластера (NotReady, drain, cordon);
- состояния синхронизации времени на узлах;
- случаев продолжительного превышения CPU steal;
- состояния таблицы Conntrack на узлах;
- подов с некорректным состоянием (как возможное следствие проблем с kubelet) и др.
Мониторинг Ingress
Реализован сбор статистики для ingress-nginx в Prometheus с детальными метриками (время ответа, коды, география и др.), доступной в разных разрезах (namespace, vhost, ingress). Данные визуализированы в Grafana с интерактивными дашбордами.
Подробное описание доступно в разделе о мониторинге Ingress.
Модуль по умолчанию включён в наборах модулей Default и Managed.
Отключение сбора детализированной статистики Ingress-ресурсов
По умолчанию DKP собирает подробную статистику со всех Ingress-ресурсов в кластере. Этот процесс может приводить к высокой нагрузке системы мониторинга.
Для отключения сбора статистики добавьте лейбл ingress.deckhouse.io/discard-metrics: "true" к соответствующему пространству имён или Ingress-ресурсу.
-
Пример отключения сбора статистики (метрик) для всех Ingress-ресурсов в пространстве имен
review-1:d8 k label ns review-1 ingress.deckhouse.io/discard-metrics=true -
Пример отключения сбора статистики (метрик) для всех Ingress-ресурсов
test-siteв пространстве именdevelopment:d8 k label ingress test-site -n development ingress.deckhouse.io/discard-metrics=true
Мониторинг control plane
Мониторинг control plane осуществляется с помощью модуля monitoring-kubernetes-control-plane, который организует безопасный сбор метрик и предоставляет базовый набор правил мониторинга следующих компонентов кластера:
- kube-apiserver;
- kube-controller-manager;
- kube-scheduler;
- kube-etcd.
Мониторинг кластера
DKP безопасно собирает метрики мониторинга и настраивает правила.
Возможности мониторинга DKP:
- мониторинг текущей версии container runtime (containerd) на узле и ее соответствия версиям, разрешенным для использования в DKP;
- мониторинг работоспособности подсистемы мониторинга кластера («Dead man’s switch»);
- мониторинг доступных файловых дескрипторов, сокетов, свободного места и inode;
- мониторинг состояния узлов кластера (NotReady, drain, cordon);
- работы
kube-state-metrics,node-exporter,kube-dns; - мониторинг состояния синхронизации времени на узлах;
- мониторинг случаев продолжительного превышения CPU steal;
- мониторинг состояния таблицы Conntrack на узлах;
- мониторинг подов с некорректным состоянием (как возможное следствие проблем с kubelet);
- мониторинг компонентов control plane (реализуется модулем
monitoring-kubernetes-control-plane).
Режим расширенного мониторинга
В DKP поддерживается режим расширенного мониторинга с помощью модуля extended-monitoring, который позволяет настроить:
- мониторинг секретов в Кластере (объекты Secret) и срока действия TLS-сертификатов в них;
- сбор событий в кластере Kubernetes в виде метрик;
- мониторинг доступности образов контейнеров в registry, используемых в контроллерах (Deployments, StatefulSets, DaemonSets, CronJobs);
- мониторинг объектов в пространствах имен с установленным лейблом
extended-monitoring.deckhouse.io/enabled="".
Модуль предусматривает отправку алертов по следующим метрикам:
- свободное место и inode на дисках узлов;
- утилизация узлов;
- доступность подов и образов контейнеров;
- истечение срока действия сертификатов;
- иные события кластера.
Алерты
Мониторинг в составе DKP включает уведомления о событиях. Стандартная поставка включает набор базовых предупреждений, охватывающих состояние кластера и его компоненты. Также остается возможность добавлять кастомные алерты.
Список всех доступных алертов системы мониторинга DKP приведён на отдельной странице документации.
Отправка алертов во внешние системы
DKP поддерживает отправку алертов с помощью Alertmanager:
- по протоколу SMTP;
- в PagerDuty;
- в Slack;
- в Telegram;
- посредством Webhook;
- по любым другим каналам, поддерживаемым в Alertmanager.
Примеры интеграции мониторинга DKP с внешними системами доступны в разделе Настройка интеграций.
Мониторинг SLA кластера
Оценка доступности в DKP осуществляется модулем upmeter.
Состав модуля upmeter:
- agent — работает на master-узлах и делает пробы доступности, отправляет результаты на сервер.
- upmeter — собирает результаты и поддерживает API-сервер для их извлечения.
- front:
- status — показывает уровень доступности за последние 10 минут (требует авторизации, но ее можно отключить).
- webui — показывает дашборд со статистикой по пробам и группам доступности (требует авторизации).
- smoke-mini — поддерживает постоянное smoke-тестирование с помощью StatefulSet.
Модуль отправляет около 100 показаний метрик каждые 5 минут. Это значение зависит от количества включенных модулей Deckhouse Kubernetes Platform.