Deckhouse Kubernetes Platform (DKP) предоставляет решение для мониторинга Kubernetes на базе Prometheus и Grafana. В кластере автоматически настраивается сбор метрик с узлов, подов и ключевых компонентов кластера (etcd, kube-apiserver, CoreDNS), после чего становятся доступны предустановленные дашборды для анализа использования CPU, памяти, дисков и сети.

Мониторинг кластера по умолчанию включён в наборах модулей Default и Managed.

Все компоненты, включая Prometheus и Alertmanager, работают в отказоустойчивом режиме и могут использоваться как в облачных средах, так и на bare-metal-серверах.

Принцип работы Prometheus рассмотрен в разделе Настройка системы сбора и хранения метрик.

В DKP реализовано несколько видов мониторинга:

В 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.