В этом разделе вы узнаете о работе с дашбордами для анализа состояния Deckhouse Kubernetes Platform (DKP) и запущенных в нем приложений.
Дашборды представляют собой наборы графиков и таблиц с данными о работе приложений. Они содержат информацию о загрузке CPU, потреблении памяти, дисковой и сетевой активности, а также о состоянии подов, контроллеров, узлов и неймспейсов.
Виды дашбордов
В DKP доступны предустановленные дашборды, а также пользовательские дашборды, которые можно создавать несколькими способами.
| Вид дашбордов | Описание |
|---|---|
| Предустановленные | Готовые дашборды, поставляемые вместе с DKP. Предназначены для мониторинга состояния запущенных приложений. |
Пользовательские, создаваемые с помощью модуля observability |
Пользовательские дашборды, создаваемые с помощью ресурса ObservabilityDashboard на уровне неймспейсов и с возможностью разграничения прав доступа. Это рекомендуемый способ работы с дашбордами. |
| Пользовательские, создаваемые с помощью GrafanaDashboardDefinition | Пользовательские дашборды, создаваемые с помощью ресурса GrafanaDashboardDefinition на уровне кластера. Требуют расширенных прав доступа и не позволяют управлять разграничением прав доступа. Это устаревший способ работы с дашбордами, который перестанет поддерживаться в следующих версиях DKP. |
Предустановленные дашборды
Пользователям DKP предоставляется доступ к базовому набору дашбордов для наблюдения за состоянием запущенных приложений. Дашборды доступны в веб-интерфейсе Deckhouse в разделе «Мониторинг» → «Дашборды».
Предустановленные дашборды недоступны для редактирования.
Ingress Nginx
Дашборды для мониторинга работы Ingress-контроллера. Содержат метрики, отражающие состояние виртуальных хостов, статистику по HTTP-ответам, а также данные о задержках при обработке запросов.
Доступные дашборды:
- Namespaces — совокупные метрики Ingress-ресурсов по неймспейсам;
- Namespace Detail — детальная информация по Ingress-ресурсам в выбранном неймспейсе;
- VHosts — обзор состояния виртуальных хостов;
- VHost Detail — детальная информация по выбранному виртуальному хосту.
Потребление ресурсов (Main)
Набор дашбордов для анализа потребления ресурсов приложениями. Дашборды предназначены для оценки нагрузки, поиска проблем с ресурсами и анализа состояния рабочих нагрузок.
Доступные дашборды:
- Namespaces — сводная информация по всем неймспейсам;
- Namespace — основные показатели использования ресурсов в выбранном неймспейсе;
- Namespace / Controller — статистика использования ресурсов контроллерами в рамках выбранного неймспейса;
- Namespace / Controller / Pod — детальные метрики по отдельным подам.
Security
Дашборды, содержащие метрики, связанные с безопасностью компонентов кластера.
Доступные дашборды:
- Admission policy engine — метрики работы модуля
admission-policy-engine, включая информацию о проверках и применении политик.
Пользовательские дашборды
Пользователи DKP могут создавать собственные дашборды несколькими способами, в зависимости от требований к управлению доступом и области видимости дашборда.
С помощью модуля observability
Модуль observability расширяет функциональность модуля prometheus и веб-интерфейса Deckhouse,
предоставляя дополнительные возможности для гибкого управления визуализацией метрик и разграничения доступа к ним.
Модуль добавляет новые типы дашбордов, включая ресурсы, ограниченные неймспейсом. Это даёт пользователям возможность создавать и управлять собственными дашбордами без необходимости иметь права на объекты кластерного уровня. Кроме того, модуль упрощает редактирование дашбордов — настройка выполняется напрямую в веб-интерфейсе, без необходимости работы с ресурсами вручную.
Перед началом работы с этими ресурсами убедитесь, что модуль observability включён в кластере.
При необходимости обратитесь к администратору DKP.
Для создания дашбордов предусмотрены следующие ресурсы:
-
ObservabilityDashboard — дашборды в рамках неймспейса. Отображаются в веб-интерфейсе Deckhouse в разделе «Мониторинг» → «Проекты».
Пример:
apiVersion: observability.deckhouse.io/v1alpha1 kind: ObservabilityDashboard metadata: name: example-dashboard namespace: my-namespace annotations: metadata.deckhouse.io/category: "Apps" metadata.deckhouse.io/title: "Example dashboard" spec: definition: | { "title": "Example dashboard", ... } -
ClusterObservabilityDashboard — дашборды для отображения компонентов кластера. Отображаются в веб-интерфейсе Deckhouse в разделе «Мониторинг» → «Система».
Пример:
apiVersion: observability.deckhouse.io/v1alpha1 kind: ClusterObservabilityDashboard metadata: name: example-dashboard annotations: metadata.deckhouse.io/category: "Apps" metadata.deckhouse.io/title: "Example dashboard" spec: definition: | { "title": "Example dashboard", ... } -
ClusterObservabilityPropagatedDashboard — дашборды, расширяющие список дашбордов из двух предыдущих категорий. Такие дашборды автоматически добавляются в веб-интерфейс Deckhouse и отображаются в разделах «Мониторинг» → «Система» и «Мониторинг» → «Проекты». Они становятся доступны пользователям, обладающим правами на соответствующий неймспейс или системный раздел.
Пример:
apiVersion: observability.deckhouse.io/v1alpha1 kind: ClusterObservabilityPropagatedDashboard metadata: name: example-dashboard annotations: metadata.deckhouse.io/category: "Apps" metadata.deckhouse.io/title: "Example dashboard" spec: definition: | { "title": "Example dashboard", ... }
Разграничение прав доступа
Доступ к дашбордам настраивается с помощью механизмов действующей ролевой модели (RBAC).
В зависимости от типа дашборда (системный или пользовательский) права назначаются на следующие ресурсы:
observabilitydashboards.observability.deckhouse.io— дашборды в рамках неймспейсов;clusterobservabilitydashboards.observability.deckhouse.io— системные дашборды;clusterobservabilitypropagateddashboards.observability.deckhouse.io— дашборды, распространяемые на всех пользователей.
Для выполнения операций с дашбордами требуются следующие разрешения:
- чтение —
get; - создание и редактирование —
create,update,patch,delete.
Доступ к метрикам в дашбордах также контролируется с помощью RBAC. В зависимости от выданных прав фильтрация метрик осуществляется автоматически.
Поддерживаются следующие сценарии доступа:
-
Пользователи неймспейсов получают доступ только к метрикам своего неймспейса. Проверяется RBAC-доступ к ресурсу
metrics.observability.deckhouse.io. - Администраторы DKP получают доступ ко всем системным метрикам:
- метрики Deckhouse (
d8-*); - метрики Kubernetes (
kube-*); - метрики без лейбла
namespace.
Используется RBAC-доступ к ресурсу
clustermetrics.observability.deckhouse.io. - метрики Deckhouse (
- Метрики из пользовательских неймспейсов также могут быть доступны администраторам
при наличии соответствующих прав на ресурс
metrics.observability.deckhouse.io.
Пример настройки ресурсов ClusterRole и RoleBinding для доступа к метрикам и дашбордам на чтение и редактирование:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: observability-editor
rules:
- apiGroups: ["observability.deckhouse.io"]
resources: ["metrics", "observabilitydashboards"]
verbs: ["get", "list", "watch"]
- apiGroups: ["observability.deckhouse.io"]
resources: ["observabilitydashboards"]
verbs: ["create", "update", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: bind-observability-editor
namespace: my-namespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: observability-editor
subjects:
- kind: User
name: user@example.com
apiGroup: rbac.authorization.k8s.io
Конвертация дашбордов из GrafanaDashboardDefinition
Чтобы перенести дашборды, созданные с помощью устаревшего ресурса GrafanaDashboardDefinition,
в один из форматов модуля observability, отредактируйте каждый манифест соответствующего дашборда вручную.
Обратите внимание на важные отличия:
| Формат GrafanaDashboardDefinition | Формат модуля observability |
|---|---|
Папка в Grafana для отображения дашборда задается в поле spec.folder. |
Папка задается с помощью аннотации observability.deckhouse.io/category. |
Название дашборда задается в поле title JSON-манифеста. |
Название задаётся с помощью аннотации observability.deckhouse.io/title. Если аннотация отсутствует, используется поле title из JSON-манифеста. |
Пример конвертации:
-
Старый формат:
apiVersion: deckhouse.io/v1 kind: GrafanaDashboardDefinition metadata: name: example-dashboard spec: folder: "Apps" json: '{ "title": "Example Dashboard", ... }' -
Новый формат:
apiVersion: observability.deckhouse.io/v1alpha1 kind: ObservabilityDashboard metadata: name: example-dashboard namespace: my-namespace annotations: metadata.deckhouse.io/category: "Apps" metadata.deckhouse.io/title: "Example Dashboard" spec: definition: | { "title": "Example Dashboard", ... }
С помощью GrafanaDashboardDefinition
Это устаревший способ, который не рекомендуется для новых дашбордов. Поддержка этого способа будет прекращена в следующих версиях DKP.
Чтобы добавить дашборд напрямую в Grafana, используйте ресурс GrafanaDashboardDefinition.
Пример:
apiVersion: deckhouse.io/v1
kind: GrafanaDashboardDefinition
metadata:
name: my-dashboard
spec:
folder: My folder # Папка, в которой в Grafana будет отображаться ваш дашборд.
definition: |
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
...
При использовании этого способа учитывайте следующие ограничения:
-
Дашборды, добавленные через GrafanaDashboardDefinition, нельзя изменить через интерфейс Grafana.
-
Алерты, настроенные в панели «Dashboard», не работают с шаблонами datasource — такой дашборд считается невалидным и не импортируется. Начиная с Grafana 9.0, функционал legacy alerting признан устаревшим и заменён на Grafana Alerting. В связи с этим не рекомендуется использовать legacy alerting (оповещения панели мониторинга) в дашбордах.
-
Если после применения ресурса дашборд не появляется в Grafana, возможно, в JSON-файле дашборда содержится ошибка. Чтобы просмотреть логи компонента, отвечающего за применение дашбордов, используйте следующую команду:
d8 k logs -n d8-monitoring deployments/grafana-v10 dashboard-provisioner