Устанавливает и полностью настраивает Prometheus, настраивает сбор метрик со многих распространенных приложений, а также предоставляет необходимый минимальный набор alert’ов для Prometheus и dashboard Grafana.

Если используется storage class с поддержкой автоматического расширения (allowVolumeExpansion: true), то при нехватке места на диске для данных Prometheus его ёмкость будет увеличена.

Ресурсы CPU и memory автоматически выставляются при пересоздании Pod’а на основе истории потребления, благодаря модулю Vertical Pod Autoscaler. Также, благодаря кешированию запросов к Prometheus с помощью Trickster, потребление памяти Prometheus сильно сокращается.

Поддерживается как pull, так и push-модель получения метрик.

Мониторинг аппаратных ресурсов

Реализовано отслеживание нагрузки на аппаратные ресурсы кластера с графиками по утилизации:

  • процессора,
  • памяти,
  • диска,
  • сети.

Графики доступны с агрегацией в разрезе по:

  • Pod’ам,
  • контроллерам,
  • пространствам имен,
  • узлам.

Мониторинг Kubernetes

Deckhouse настраивает мониторинг широкого набора параметров “здоровья” Kubernetes и его компонентов, в частности:

  • общей утилизации кластера;
  • связанность узлов Kubernetes между собой (измеряется rtt между всеми узлами);
  • доступность и работоспособность компонентов control-plane:
    • etcd
    • coredns и kube-dns
    • kube-apiserver и др.
  • синхронизацию времени на узлах и др.

Мониторинг Ingress

Подробно описан здесь

Режим расширенного мониторинга

В Deckhouse возможно использование режима расширенного мониторинга, который дополнительно предоставляет возможности алертов по метрикам, собранным с помощью следующих exporter’ов:

  • extended-monitoring-exporter. Включает расширенный сбор метрик с namespace (у которых есть аннотация extended-monitoring.flant.com/enabled=””), в том числе сбор информации о доступных inodes и месте на дисках узлов, мониторинг утилизации узлов, доступность Pod’ов в Deployment, StatefulSet, DaemonSet и т.д.;
  • image-availability-exporter. Добавляет метрики и включает отправку алертов, позволяющих узнать о проблемах с доступностью образа контейнера в registry, прописанному в поле image из spec Pod’а в Deployments, StatefulSets, DaemonSets, CronJobs.

Алертинг в режиме расширенного мониторинга

Deckhouse позволяет гибко настроить алертинг на каждый из namespace и указывать разную критичность в зависимости от порогового значения. Есть возможность указать множество пороговых значений отправки алертов в различных namespace, например, для таких параметров, как:

  • значения свободного места и inodes на диске;
  • утилизация CPU узлов и контейнера;
  • процент 5xx ошибок на nginx-ingress;
  • количество возможных недоступных Pod’ов в Deployment, StatefulSet, DaemonSet.

Алерты

Мониторинг в составе Deckhouse включает также и возможности уведомления о событиях. В стандартной поставке уже идет большой набор только необходимых алертов, покрывающих состояние кластера и его компонентов. При этом всегда остается возможность добавления кастомных алертов.

Отправка алертов во внешние системы

Deckhouse поддерживает отправку алертов с помощью Alertmanager:

  • по протоколу SMTP;
  • в PagerDuty;
  • в Slack;
  • в Telegram;
  • посредством Webhook;
  • любым другим каналам, поддерживаемым в Alertmanager.

Включенные модули

Компоненты устанавливаемые Deckhouse

Компонент Описание
prometheus-main Основной Prometheus, который выполняет scrape каждые 30 секунд (с помощью параметра scrapeInterval можно изменить это значение). Именно он обрабатывает все правила, отправляет алерты и является основным источником данных.
prometheus-longterm Дополнительный Prometheus, который выполняет scrape данных из основного Prometheus (prometheus-main) каждые 5 минут (с помощью параметра longtermScrapeInterval можно изменить это значение). Используется для продолжительного хранения истории и для отображения больших промежутков времени.
trickster Кэширующий прокси, снижающий нагрузку на Prometheus.
grafana Управляемая платформа визуализации данных. Включает подготовленные dashboard’ы для всех модулей Deckhouse и некоторых популярных приложений. Grafana умеет работать в режиме высокой доступности, не хранит состояние и настраивается при помощи CRD.
metrics-adapter Компонент, соединяющий Prometheus и Kubernetes metrics API. Включает поддержку HPA в кластере Kubernetes.
vertical-pod-autoscaler Компонент, позволяющий автоматически изменять размер запрошенных ресурсов для Pod’ов с целью оптимальной утилизации CPU и памяти.
Различные Exporter’ы Подготовленные и подключенные к Prometheus exporter’ы. Список включает множество exporter’ов для всех необходимых метрик: kube-state-metrics, node-exporter, oomkill-exporter, image-availability-exporter и многие другие.

Внешние компоненты

Deckhouse может интегрироваться с большим количеством разнообразных решений следующими способами:

Название Описание
Alertmanagers Alertmanager’ы могут быть подключены к Prometheus и Grafana и находится как в кластере Deckhouse, так и за его пределами.
Long-term metrics storages Используя протокол remote write возможно отсылать метрики из Deckhouse в большое количество хранилищ, включающее Cortex, Thanos, VictoriaMetrics.