Данный раздел предназначен для пользователей проектов Deckhouse Kubernetes Platform (DKP).
В состав DKP включена система мониторинга, которая предоставляет пользователям удобные инструменты для наблюдения за состоянием инфраструктуры и приложений.
По умолчанию в DKP доступен готовый набор дашбордов и алертов, позволяющих отслеживать ключевые показатели состояния приложений. Доступ к ним осуществляется через раздел «Мониторинг» веб-интерфейса Deckhouse.
Кроме того, пользователи могут:
Подробнее о расширенных возможностях мониторинга, включая управление дашбордами и метриками, можно прочитать в описании модуля observability.
После установки DKP пользователям по умолчанию доступен базовый набор инструментов для наблюдения за кластером.
Дашборды содержат графики с данными по загрузке CPU, потреблению памяти, а также дисковой и сетевой активности в разрезе подов, узлов или пространств имён.
В разделе «Мониторинг» → «Дашборды» веб-интерфейса Deckhouse у пользователей есть доступ к следующим группам дашбордов:
Алерты — это автоматические уведомления, информирующие о событиях, требующих внимания, например, о превышении пороговых значений метрик или проблемах с доступностью компонентов. Порог срабатывания большинства алертов можно переопределять при необходимости.
По умолчанию в кластере DKP включены уведомления о следующих видах событий:
Пользователям доступны следующие настройки системы мониторинга DKP:
В этом разделе вы узнаете о работе с дашбордами для анализа состояния Deckhouse Kubernetes Platform (DKP) и запущенных в нем приложений.
Дашборды представляют собой наборы графиков и таблиц с данными о работе приложений. Они содержат информацию о загрузке CPU, потреблении памяти, дисковой и сетевой активности, а также о состоянии подов, контроллеров, узлов и неймспейсов.
В DKP доступны предустановленные дашборды, а также пользовательские дашборды, которые можно создавать несколькими способами.
|
Виды дашбордов |
Описание |
|---|---|
|
Предустановленные |
Готовые дашборды, поставляемые вместе с DKP. Предназначены для мониторинга состояния запущенных приложений. |
|
Пользовательские, создаваемые с помощью модуля observability |
Пользовательские дашборды, создаваемые с помощью ресурса ObservabilityDashboard на уровне неймспейсов и с возможностью разграничения прав доступа. Это рекомендуемый способ работы с дашбордами.
|
|
Пользовательские, создаваемые с помощью GrafanaDashboardDefinition |
Пользовательские дашборды, создаваемые с помощью ресурса GrafanaDashboardDefinition на уровне кластера. Требуют расширенных прав доступа и не позволяют управлять разграничением прав доступа. Это устаревший способ работы с дашбордами, который перестанет поддерживаться в следующих версиях DKP.
|
Пользователям DKP предоставляется доступ к базовому набору дашбордов для наблюдения за состоянием запущенных приложений. Дашборды доступны в веб-интерфейсе Deckhouse в разделе «Мониторинг» → «Дашборды».
Предустановленные дашборды недоступны для редактирования.
Дашборды для мониторинга работы Ingress-контроллера. Содержат метрики, отражающие состояние виртуальных хостов, статистику по HTTP-ответам, а также данные о задержках при обработке запросов.
Доступные дашборды:
Набор дашбордов для анализа потребления ресурсов приложениями. Дашборды предназначены для оценки нагрузки, поиска проблем с ресурсами и анализа состояния рабочих нагрузок.
Доступные дашборды:
Пользователи DKP могут создавать собственные дашборды несколькими способами, в зависимости от требований к управлению доступом и области видимости дашборда.
Модуль observability расширяет функциональность модуля prometheus и веб-интерфейса Deckhouse, предоставляя дополнительные возможности для гибкого управления визуализацией метрик и разграничения доступа к ним.
Модуль добавляет новые типы дашбордов, включая ресурсы, ограниченные неймспейсом. Это даёт пользователям возможность создавать и управлять собственными дашбордами без необходимости иметь права на объекты кластерного уровня. Кроме того, модуль упрощает редактирование дашбордов — настройка выполняется напрямую в веб-интерфейсе, без необходимости работы с ресурсами вручную.
Перед началом работы с этими ресурсами убедитесь, что модуль observability включён в кластере. При необходимости обратитесь к администратору DKP.
Для создания дашбордов предусмотрены следующие ресурсы:
Пример:
Пример:
Пример:
Доступ к дашбордам настраивается с помощью механизмов действующей ролевой модели (RBAC).
В зависимости от типа дашборда (системный или пользовательский) права назначаются на следующие ресурсы:
Для выполнения операций с дашбордами требуются следующие разрешения:
Доступ к метрикам в дашбордах также контролируется с помощью RBAC. В зависимости от выданных прав фильтрация метрик осуществляется автоматически.
Используется RBAC-доступ к ресурсу clustermetrics.observability.deckhouse.io.
Пример настройки ресурсов ClusterRole и RoleBinding для доступа к метрикам и дашбордам на чтение и редактирование:
Чтобы перенести дашборды, созданные с помощью устаревшего ресурса GrafanaDashboardDefinition, в один из форматов модуля observability, отредактируйте каждый манифест соответствующего дашборда вручную. Обратите внимание на важные отличия:
|
Формат GrafanaDashboardDefinition |
Формат модуля observability |
|---|---|
|
Папка в Grafana для отображения дашборда задается в поле spec.folder. |
Папка задается с помощью аннотации observability.deckhouse.io/category. |
|
Название дашборда задается в поле title JSON-манифеста. |
Название задаётся с помощью аннотации observability.deckhouse.io/title. Если аннотация отсутствует, используется поле title из JSON-манифеста. |
Пример конвертации:
Это устаревший способ, который не рекомендуется для новых дашбордов. Поддержка этого способа будет прекращена в следующих версиях DKP.
Чтобы добавить дашборд напрямую в Grafana, используйте ресурс GrafanaDashboardDefinition.
Пример:
При использовании этого способа учитывайте следующие ограничения:
Deckhouse Kubernetes Platform (DKP) поддерживает четыре способа подключения приложения к системе мониторинга:
|
Способ подключения |
Описание |
|---|---|
|
Через лейблы и аннотации |
Самый простой и быстрый способ, требующий лишь добавления метаданных к сервису или поду. Позволяет задать базовые параметры мониторинга. |
|
С помощью PodMonitor или ServiceMonitor |
Расширенный способ настройки мониторинга для случаев, когда требуется использование relabeling-правил Prometheus. Позволяет гибко управлять сбором метрик и обработкой лейблов, а также добавлять пользовательские лейблы в метрики. Данный подход подходит для сложных сценариев мониторинга, но требует более глубокого понимания принципов работы Prometheus и его механизма сбора метрик. |
|
С помощью ScrapeConfig |
Способ настройки мониторинга, максимально приближенный к нативной структуре конфигурации Prometheus. Предоставляет полный контроль над scrape-настройками, включая relabeling, и позволяет собирать метрики как из Kubernetes, так и с targets, расположенных за пределами кластера. |
|
Мониторинг доступности с помощью blackbox-exporter |
Способ мониторинга доступности эндпоинтов с помощью проверок (probes). Подключается с помощью blackbox-exporter, который необходимо установить в кластере отдельно. |
Пример:
В качестве значения лейбла prometheus.deckhouse.io/custom-target рекомендуется использовать название приложения, которое позволяет его уникально идентифицировать в кластере.
Формат лейбла должен соответствовать требованиям Kubernetes: не более 63 символов, среди которых могут быть буквенно-цифровые символы ([a-z0-9A-Z]), а также дефисы (-), знаки подчеркивания (_), точки (.).
Если приложение ставится в кластер больше одного раза (staging, testing и т. д.) или даже ставится несколько раз в одно пространство имён, достаточно одного общего названия, так как у всех метрик в любом случае будут лейблы namespace, pod и, если доступ осуществляется через сервис, лейбл service. Это название, которое уникально идентифицирует приложение в кластере, а не его единичную инсталляцию.
4. Для порта, с которого нужно собирать метрики, укажите имя http-metrics и https-metrics для подключения по HTTP или HTTPS соответственно.
Если это невозможно (например, порт уже определен и назван другим именем), используйте следующие аннотации:
При указании аннотации для сервиса в качестве значения порта необходимо использовать targetPort — порт, который открыт и слушается приложением, а не порт сервиса.
Пример 1:
Пример 2:
При использовании service mesh Istio в режиме STRICT mTLS укажите для сбора метрик аннотацию prometheus.deckhouse.io/istio-mtls: "true" у сервиса или пода. Важно, что метрики приложения должны экспортироваться по протоколу HTTP без TLS.
Пример:
Для более точной настройки мониторинга приложения можно указать дополнительные аннотации для пода или сервиса, для которых настраивается мониторинг:
DKP поддерживает подключение приложений через два схожих по функциональности ресурса:
Оба ресурса позволяют задавать интервал опроса, пути, TLS-параметры, параметры переписывания лейблов (relabeling) и другие настройки.
Разница между ресурсами заключается в источнике собираемых метрик. Используйте PodMonitor, если требуется сбор метрик напрямую с подов, и ServiceMonitor — если ваше приложение публикует метрики через Service.
Чтобы подключить приложение к системе мониторинга с помощью одного из этих ресурсов, выполните следующие шаги:
1. Установите лейбл prometheus.deckhouse.io/monitor-watcher-enabled: "true" в том же пространстве имен, где будет находиться PodMonitor или ServiceMonitor:
2. Создайте ресурс PodMonitor или ServiceMonitor, указав обязательный лейбл prometheus: main, а также перечислив параметры необходимых эндпоинтов.
Пример для PodMonitor:
Пример для ServiceMonitor:
Если вам нужно добавить дополнительные лейблы непосредственно в собираемые метрики, воспользуйтесь правилами переписывания метрик (с помощью параметра metricRelabelings).
Ниже приведен пример ресурса PodMonitor, который добавляет в собираемые метрики лейбл application со значением dotnet:
После применения такого правила в метриках появится дополнительный лейбл:
ScrapeConfig — это кастомный ресурс, который позволяет настраивать раздел конфигурации Prometheus под названием scrape_config для полного контроля над процессом сбора метрик.
Чтобы подключить приложение к системе мониторинга, выполните следующие шаги:
1. Установите лейбл prometheus.deckhouse.io/scrape-configs-watcher-enabled: "true" в пространстве имен, где будет находиться ScrapeConfig:
2. Создайте ресурс ScrapeConfig, указав обязательный лейбл prometheus: main:
DKP поддерживает сбор метрик доступности с blackbox-exporter, который не входит в состав DKP и должен быть установлен отдельно в кластере. Для этого используется кастомный ресурс Probe, который описывает проверки доступности (probes), выполняемые Prometheus.
Чтобы подключить Probe к системе мониторинга DKP, выполните следующие шаги:
1. Установите лейбл prometheus.deckhouse.io/probe-watcher-enabled: "true" в пространстве имен, где будет находиться Probe:
2. Создайте ресурс Probe, указав обязательный лейбл prometheus: main:
Опишите вашу задачу, и мы поможем вам ее решить