Доступно в редакциях: CE, BE, SE, SE+, EE, CSE Lite (1.73), CSE Pro (1.73)
Стадия жизненного цикла модуля: General Availability
У модуля есть требования для установки
Модуль не требует обязательной конфигурации (все работает из коробки).
Аутентификация
По умолчанию используется модуль user-authn. Также можно настроить аутентификацию через externalAuthentication (см. ниже).
Если эти варианты отключены, модуль включит basic auth со сгенерированным паролем и пользователем admin.
Посмотреть сгенерированный пароль можно командой:
d8 k -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module values prometheus -o json | jq '.internal.auth.password'Чтобы сгенерировать новый пароль, нужно удалить Secret:
d8 k -n d8-monitoring delete secret/basic-authВнимание. Параметр
auth.passwordбольше не поддерживается.
Примечание
retentionSizeдляmainиlongtermрассчитывается автоматически, возможности задать значение нет!- Алгоритм расчета:
pvc_size * 0.85— если PVC существует;10 GiB— если PVC нет и StorageClass поддерживает ресайз;25 GiB— если PVC нет и StorageClass не поддерживает ресайз.
- Если используется
local-storageи требуется изменитьretentionSize, необходимо вручную изменить размер PV и PVC в нужную сторону. Внимание! Для расчета берется значение из.status.capacity.storagePVC, поскольку оно отражает реальный размер PV в случае ручного ресайза.
- Алгоритм расчета:
40 GiB— размер PersistentVolumeClaim создаваемого по умолчанию.- Размер дисков Prometheus можно изменить стандартным для Kubernetes способом (если в StorageClass это разрешено), отредактировав в PersistentVolumeClaim поле
.spec.resources.requests.storage.
Требования
К версии Deckhouse: 1.76 и выше.
К версиям других модулей:
-
operator-prometheus: любая версия.
Конверсии
Модуль настраивается с помощью ресурса ModuleConfig, схема которого содержит номер версии. При применении в кластере старой версии схемы ModuleConfig выполняются автоматические преобразования. Чтобы обновить версию схемы ModuleConfig вручную, необходимо последовательно для каждой версии выполнить следующие действия:
-
Обновление из версии 1 в 2:
Удалите поле
.auth.password. Если в результате объект.authстановится пуст, удалите его.
Параметры
Версия схемы: 2
-
-
объектsettings.authОпции, связанные с аутентификацией или авторизацией в приложении.
По умолчанию:
{}-
массив строкsettings.auth.allowedUserEmails
Массив адресов электронной почты, пользователям которых разрешен доступ к веб-интерфейсу.
Используется, если включен модуль
user-authnили задан параметрexternalAuthentication. -
массив строкsettings.auth.allowedUserGroups
Массив групп, пользователям которых позволен доступ в Grafana и Prometheus.
Используется, если включен модуль user-authn или параметр
externalAuthentication.Внимание! При использовании совместно с модулем user-authn необходимо также добавить разрешенные группы в соответствующее поле в настройках DexProvider.
-
объектsettings.auth.externalAuthentication
Параметры для подключения внешней аутентификации (используется механизм Ingress NGINX external-auth, работающий на основе модуля NGINX auth_request.
Внешняя аутентификация включается автоматически, если включен модуль user-authn.
-
строкаsettings.auth.externalAuthentication.authSignInURLURL, куда будет перенаправлен пользователь для прохождения аутентификации (если сервис аутентификации вернул код ответа HTTP, отличный от 200).
Пример:
authSignInURL: https://example.com/dex/sign_in -
строкаsettings.auth.externalAuthentication.authURLURL сервиса аутентификации. Если пользователь прошел аутентификацию, сервис должен возвращать код ответа HTTP 200.
Пример:
authURL: https://example.com/dex/auth
-
-
булевыйsettings.auth.satisfyAny
Разрешает пройти только одну из аутентификаций.
В комбинации с опцией
whitelistSourceRangesпозволяет считать авторизованными всех пользователей из указанных сетей без ввода логина и пароля.По умолчанию:
falseПример:
satisfyAny: true -
массив строкsettings.auth.whitelistSourceRangesСписок адресов в формате CIDR, которым разрешено проходить авторизацию в Grafana и Prometheus.
Пример:
whitelistSourceRanges: - 1.1.1.1/32
-
-
объектsettings.externalLabels
Набор внешних лейблов для маркировки метрик.
Допускается использование значений переменных окружения контейнера
config-reloaderв качестве значений лейблов, например:HOSTNAME/POD_NAME— содержит наименование пода (например,prometheus-main-0,prometheus-main-1и т. д.);SHARD— содержит номер шарда.
Пример:
hostname: $(HOSTNAME) prometheus_replica: $(POD_NAME) shard: $(SHARD) -
объектsettings.grafanaНастройки для инсталляции Grafana.
По умолчанию:
{}-
массив строкsettings.grafana.customPlugins
Список дополнительных plug-in’ов для Grafana.
Необходимо указать в качестве значения список имен плагинов из официального репозитория.
Пример добавления plug-in’ов для возможности указания clickhouse в качестве datasource и панели flow-chart:
grafana: customPlugins: - agenty-flowcharting-panel - vertamedia-clickhouse-datasourceВы также можете устанавливать плагины из других источников передав ссылку на zip-архив плагина в формате
<url to plugin zip>;<plugin name>:grafana: customPlugins: - http://10.241.32.16:3000/netsage-bumpchart-panel-1.1.1.zip;netsage-bumpchart-panelПример:
customPlugins: - agenty-flowcharting-panel - vertamedia-clickhouse-datasource -
булевыйsettings.grafana.enabledВключить установку Grafana в кластер.
По умолчанию:
trueПример:
enabled: false -
булевыйsettings.grafana.useDarkThemeИспользование по умолчанию пользовательской темной темы.
По умолчанию:
falseПример:
useDarkTheme: true
-
-
булевыйsettings.highAvailability
Ручное управление режимом отказоустойчивости.
По умолчанию режим отказоустойчивости определяется автоматически. Подробнее про режим отказоустойчивости.
Пример:
highAvailability: true -
объектsettings.https
Тип сертификата, используемого для Grafana/Prometheus.
При использовании этого параметра полностью переопределяются глобальные настройки
global.modules.https.Примеры:
customCertificate: secretName: foobar mode: CustomCertificatecertManager: clusterIssuerName: letsencrypt mode: CertManager-
объектsettings.https.certManager
-
строкаsettings.https.certManager.clusterIssuerName
ClusterIssuer, используемый для Grafana/Prometheus.
Доступны
letsencrypt,letsencrypt-staging,selfsigned, но вы можете определить свои.По умолчанию:
letsencrypt
-
-
объектsettings.https.customCertificate
По умолчанию:
{}-
строкаsettings.https.customCertificate.secretName
Имя Secret’а в namespace
d8-system, который будет использоваться для Grafana/Prometheus.Secret должен быть в формате kubernetes.io/tls.
По умолчанию:
false
-
-
строкаsettings.https.mode
Режим работы HTTPS:
Disabled— Grafana/Prometheus будут работать только по HTTP;CertManager— Grafana/Prometheus будут работать по HTTPS и заказывать сертификат с помощью ClusterIssuer, заданного в параметреcertManager.clusterIssuerName.CustomCertificate— Grafana/Prometheus будут работать по HTTPS, используя сертификат из namespaced8-system.OnlyInURI— Grafana/Prometheus будут работать по HTTP (подразумевая, что перед ними стоит внешний балансировщик, который терминирует HTTPS) и все ссылки в user-authn будут генерироваться с HTTPS-схемой. Балансировщик должен обеспечивать перенаправление с HTTP на HTTPS.
По умолчанию:
DisabledДопустимые значения:
Disabled,CertManager,CustomCertificate,OnlyInURI
-
-
строкаsettings.ingressClass
Класс Ingress-контроллера, который используется для Grafana/Prometheus.
Опциональный параметр, по умолчанию используется глобальное значение
modules.ingressClass.Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Пример:
ingressClass: public -
целочисленныйsettings.longtermMaxDiskSizeGigabytesПараметр устарелУстарел и будет удален. Ни на что не влияет.
-
объектsettings.longtermNodeSelector
Структура, аналогичная
spec.nodeSelectorпода Kubernetes.Если значение не указано или указано
false, будет использоваться автоматика.Пример:
disktype: ssd -
строкаsettings.longtermPodAntiAffinity
Устанавливает конфигурацию podAntiAffinity для Prometheus longterm по отношению к Prometheus main.
Preferred— позволяет размещать Prometheus longterm на одном узле с Prometheus main, если нет возможности их разместить на разных узлах.Required— не позволяет размещать Prometheus longterm на одном узле с Prometheus main ни при каких условиях.
По умолчанию:
PreferredДопустимые значения:
Preferred,Required -
целочисленныйsettings.longtermRetentionDaysСколько дней хранить данные в Longterm Prometheus. Если указать 0, Longterm Prometheus не будет запущен в кластере.
По умолчанию:
1095 -
строкаsettings.longtermScrapeIntervalКак часто Longterm Prometheus должен собирать себе «снимок» данных из основного Prometheus.
По умолчанию:
5m -
строкаsettings.longtermStorageClass
Имя StorageClass, который будет использован для Longterm Prometheus.
Если значение не указано, используется StorageClass существующей PVC Longterm Prometheus. Если PVC нет, будет использоваться StorageClass, согласно настройке глобального параметра storageClass.
Настройка глобального параметра
storageClassучитывается только при включении модуля. Изменение глобального параметраstorageClassпри включенном модуле не приведет к перезаказу диска.Внимание. Если указать значение, отличное от текущего (используемого в существующей PVC), диск будет перезаказан, и все данные удалятся.
Пример:
longtermStorageClass: ceph-ssd -
массив объектовsettings.longtermTolerations
Структура, аналогичная
spec.tolerationsпода Kubernetes.Если значение не указано или указано
false, будет использоваться автоматика.Пример:
longtermTolerations: - effect: NoSchedule key: key1 operator: Equal value: value1-
строкаsettings.longtermTolerations.effect
-
строкаsettings.longtermTolerations.key
-
строкаsettings.longtermTolerations.operator
-
целочисленныйsettings.longtermTolerations.tolerationSeconds
-
строкаsettings.longtermTolerations.value
-
-
целочисленныйsettings.mainMaxDiskSizeGigabytesПараметр устарелУстарел и будет удален. Ни на что не влияет.
-
объектsettings.nodeSelector
Структура, аналогичная
spec.nodeSelectorпода Kubernetes.Если значение не указано или указано
false, будет использоваться автоматика.Пример:
disktype: ssd -
целочисленныйsettings.retentionDaysСколько дней хранить данные.
По умолчанию:
15 -
строкаsettings.scrapeInterval
Как часто Prometheus должен собирать метрики с target’ов.
Evaluation Interval всегда равен
scrapeInterval.По умолчанию:
30sШаблон:
^([\d]*y)?([\d]*w)?([\d]*d)?([\d]*h)?([\d]*m)?([\d]*s)?$ -
строкаsettings.storageClass
Имя StorageClass для хранения данных Prometheus.
Если не указано, используется StorageClass существующей PVC Prometheus. Если PVC нет, будет использоваться StorageClass, согласно настройке глобального параметра storageClass.
Настройка глобального параметра
storageClassучитывается только при включении модуля. Изменение глобального параметраstorageClassпри включенном модуле не приведет к перезаказу диска.Внимание. Если указать значение, отличное от текущего (используемого в существующей PVC), диск Prometheus будет перезаказан, а все данные удалены.
Внимание. При переносе Prometheus с локальным хранилищем на другие узлы, поды зависнут в состоянии Pending. В этом случае будет необходимо сохранить базу данных Prometheus, удалить старые PVC и перезапустить под вручную. Под локальным хранилищем подразумевается StorageClass, связанный не с сетевым хранилищем, а с локальным томом на узле (например, StorageClass, создаваемый модулем local-path-provisioner).
Если указать
false, будет принудительно использоватьсяemptyDir.Примеры:
storageClass: ceph-ssdstorageClass: 'false' -
массив объектовsettings.tolerations
Структура, аналогичная
spec.tolerationsпода Kubernetes.Если значение не указано или указано
false, будет использоваться автоматика.Пример:
tolerations: - effect: NoSchedule key: key1 operator: Equal value: value1-
строкаsettings.tolerations.effect
-
строкаsettings.tolerations.key
-
строкаsettings.tolerations.operator
-
целочисленныйsettings.tolerations.tolerationSeconds
-
строкаsettings.tolerations.value
-
-
объектsettings.vpaНастройки VPA для подов.
По умолчанию:
{ "updateMode": "Initial" }Примеры:
longtermMaxCPU: '1' longtermMaxMemory: 1500Mi maxCPU: 1000m maxMemory: 1500Mi updateMode: InitialupdateMode: 'Off'-
settings.vpa.longtermMaxCPU
Максимальное значение, которое может выставить VPA для запроса CPU (CPU requests) для подов Longterm Prometheus.
Значение по умолчанию подбирается автоматически, исходя из максимального количества подов, которое можно создать в кластере при текущем количестве узлов и их настройках. Подробнее см. хук
detect_vpa_maxмодуля.Пример:
longtermMaxCPU: 0.1 -
settings.vpa.longtermMaxMemory
Максимальное значение, которое может выставить VPA для запроса к памяти (memory requests) для подов Longterm Prometheus.
Значение по умолчанию подбирается автоматически, исходя из максимального количества подов, которое можно создать в кластере при текущем количестве узлов и их настройках. Подробнее см. хук
detect_vpa_maxмодуля.Пример:
longtermMaxMemory: 4Mi -
settings.vpa.maxCPU
Максимальное значение, которое может выставить VPA для запроса CPU (CPU requests) для подов основного Prometheus.
Значение по умолчанию подбирается автоматически, исходя из максимального количества подов, которое можно создать в кластере при текущем количестве узлов и их настройках. Подробнее см. хук
detect_vpa_maxмодуля.Пример:
maxCPU: '3' -
settings.vpa.maxMemory
Максимальное значение, которое может выставить VPA для запроса к памяти (memory requests) для подов основного Prometheus..
Значение по умолчанию подбирается автоматически, исходя из максимального количества подов, которое можно создать в кластере при текущем количестве узлов и их настройках. Подробнее см. хук
detect_vpa_maxмодуля.Пример:
maxMemory: 3Mi -
строкаsettings.vpa.updateModeРежим работы VPA.
По умолчанию:
InitialДопустимые значения:
Initial,Auto,Off
-
-