Стадия жизненного цикла модуля: Preview
У модуля есть требования для установки
Дашборд — это набор панелей, отображающих метрические данные в виде графиков, таблиц и других элементов. Дашборд представляет собой сохранённое графическое отображение PromQL-запросов к метрикам.
Модуль observability предоставляет механизмы управления дашбордами уровня кластера и проектов, а также разграничения доступа к ним.
Для описания дашбордов используется формат Grafana, что позволяет импортировать и экспортировать их при необходимости.
Виды дашбордов
Поддерживаются три типа дашбордов:
| Тип дашбордов | Область видимости | У кого есть доступ |
|---|---|---|
| Системные дашборды (ClusterObservabilityDashboard) | Уровень кластера | Администраторы DKP |
| Проектные дашборды (ObservabilityDashboard) | Уровень проекта (неймспейса) | Пользователи соответствующего проекта |
| Общедоступные (propagated) дашборды (ClusterObservabilityPropagatedDashboard) | Создаются на уровне кластера и автоматически доступны во всех проектах | Пользователи всех проектов (в режиме чтения) |
Описание дашбордов:
-
Системные дашборды (ClusterObservabilityDashboard) — используются для визуализации метрик кластера. Доступны в веб-интерфейсе Deckhouse в разделе «Система» → «Управление системой» → «Мониторинг» → «Дашборды». Создаются и управляются администраторами DKP.
-
Проектные дашборды (ObservabilityDashboard) — предназначены для визуализации метрик конкретного проекта (неймспейса). Доступны в соответствующем проекте в разделе «Мониторинг» → «Дашборды». Пользователи проекта могут создавать и редактировать такие дашборды в рамках настроенных прав доступа.
-
Общедоступные (propagated) дашборды (ClusterObservabilityPropagatedDashboard) — создаются на уровне кластера и автоматически становятся доступными во всех проектах. Используются для предоставления единых дашбордов (например, поставляемых модулями DKP) всем пользователям. Доступны пользователям всех проектов в режиме чтения.
Разграничение прав доступа к дашбордам
Доступ к дашбордам настраивается с помощью механизмов действующей ролевой модели (RBAC).
В зависимости от типа дашборда, права назначаются на следующие ресурсы:
clusterobservabilitydashboards.observability.deckhouse.io— системные дашборды;observabilitydashboards.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", ... }