Модуль не требует обязательной конфигурации (всё работает из коробки).
Модуль включен по умолчанию в наборах модулей: Default
, Managed
.
Модуль выключен по умолчанию в наборе модулей Minimal
.
Чтобы настроить модуль используйте custom resource ModuleConfig
с именем prometheus
(подробнее о настройке Deckhouse…).
Пример ресурса ModuleConfig/prometheus
для настройки модуля:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: prometheus
spec:
version: 2
enabled: true
settings: # <-- Параметры модуля из раздела "Параметры" ниже.
Параметры
Версия схемы: 2
- authобъект
Опции, связанные с аутентификацией или авторизацией в приложении.
- auth.allowedUserGroupsмассив строк
Массив групп, пользователям которых позволен доступ в Grafana и Prometheus.
Используется, если включен модуль user-authn или параметр
externalAuthentication
.Внимание! При использовании совместно с модулем user-authn необходимо также добавить разрешенные группы в соответствующее поле в настройках DexProvider.
- auth.externalAuthenticationобъект
Параметры для подключения внешней аутентификации (используется механизм Nginx Ingress external-auth, работающий на основе модуля Nginx auth_request.
Внешняя аутентификация включается автоматически, если включен модуль user-authn.
- auth.externalAuthentication.authSignInURLстрока
URL, куда будет перенаправлен пользователь для прохождения аутентификации (если сервис аутентификации вернул код ответа HTTP отличный от 200).
Пример:
authSignInURL: https://example.com/dex/sign_in
- auth.externalAuthentication.authURLстрока
URL сервиса аутентификации. Если пользователь прошел аутентификацию, сервис должен возвращать код ответа HTTP 200.
Пример:
authURL: https://example.com/dex/auth
- auth.externalAuthentication.authSignInURLстрока
- auth.satisfyAnyбулевый
Разрешает пройти только одну из аутентификаций.
В комбинации с опцией
whitelistSourceRanges
позволяет считать авторизованными всех пользователей из указанных сетей без ввода логина и пароля.По умолчанию:
false
Пример:
satisfyAny: true
- auth.whitelistSourceRangesмассив строк
Массив CIDR, которым разрешено проходить авторизацию в Grafana и Prometheus.
Пример:
whitelistSourceRanges: - 1.1.1.1/32
- auth.allowedUserGroupsмассив строк
- externalLabelsобъект
Набор внешних меток для маркировки метрик.
Допускается использование значений переменных окружения контейнера
config-reloader
в качестве значений меток, например:HOSTNAME
/POD_NAME
- содержит наименование пода (примерprometheus-main-0
,prometheus-main-1
, etc.).SHARD
- содержит номер шарда.
Пример:
externalLabels: prometheus_replica: "$(POD_NAME)" shard: "$(SHARD)" hostname: "$(HOSTNAME)"
- grafanaобъект
Настройки для инсталляции Grafana.
- grafana.customPluginsмассив строк
Список дополнительных plug-in’ов для Grafana.
Необходимо указать в качестве значения список имен плагинов из официального репозитория.
Пример добавления plug-in’ов для возможности указания clickhouse в качестве datasource и панели flow-chart:
grafana: customPlugins: - agenty-flowcharting-panel - vertamedia-clickhouse-datasource
Пример:
customPlugins: - agenty-flowcharting-panel - vertamedia-clickhouse-datasource
- grafana.useDarkThemeбулевый
Использование по умолчанию пользовательской темной темы.
По умолчанию:
false
Пример:
useDarkTheme: true
- grafana.customPluginsмассив строк
- highAvailabilityбулевый
Ручное управление режимом отказоустойчивости.
По умолчанию режим отказоустойчивости определяется автоматически. Подробнее про режим отказоустойчивости.
Пример:
highAvailability: true
- httpsобъект
Тип сертификата используемого для Grafana/Prometheus.
При использовании этого параметра полностью переопределяются глобальные настройки
global.modules.https
.Примеры:
https: mode: CustomCertificate customCertificate: secretName: foobar
https: mode: CertManager certManager: clusterIssuerName: letsencrypt
- https.certManagerобъект
- https.certManager.clusterIssuerNameстрока
ClusterIssuer, используемый для Grafana/Prometheus.
Доступны
letsencrypt
,letsencrypt-staging
,selfsigned
, но вы можете определить свои.По умолчанию:
"letsencrypt"
- https.certManager.clusterIssuerNameстрока
- https.customCertificateобъект
- https.customCertificate.secretNameстрока
Имя secret’а в namespace
d8-system
, который будет использоваться для Grafana/Prometheus.Секрет должен быть в формате kubernetes.io/tls.
По умолчанию:
"false"
- https.customCertificate.secretNameстрока
- 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-схемой.
По умолчанию:
"Disabled"
Допустимые значения:
Disabled
,CertManager
,CustomCertificate
,OnlyInURI
- https.certManagerобъект
- 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
- longtermMaxDiskSizeGigabytesПараметр устарелцелочисленный
Устарел и будет удален. Ни на что не влияет. Максимальный размер в гигабайтах, до которого автоматически может ресайзиться диск Longterm Prometheus.
По умолчанию:
300
- longtermNodeSelectorобъект
Структура, аналогичная
spec.nodeSelector
Kubernetes Pod.Если ничего не указано или указано
false
— будет использоваться автоматика.Пример:
longtermNodeSelector: disktype: ssd
- longtermRetentionDaysцелочисленный
Сколько дней хранить данные в longterm Prometheus. Если указать 0, то longterm Prometheus не будет запущен в кластере.
По умолчанию:
1095
- longtermScrapeIntervalстрока
Как часто Longterm Prometheus должен собирать себе “снимок” данных из основного Prometheus.
По умолчанию:
"5m"
- longtermStorageClassстрока
Имя storageClass’а, который использовать для Longterm Prometheus.
Если не указано — используется StorageClass существующей PVC Longterm Prometheus, а если PVC пока нет — используется или глобальный StorageClass, или
global.discovery.defaultStorageClass
, а если и их нет — данные сохраняются вemptyDir
.ОСТОРОЖНО! При указании этой опции в значение, отличное от текущего (из существующей PVC), диск Longterm Prometheus будет перезаказан, а все данные удалены.
Пример:
longtermStorageClass: ceph-ssd
- longtermTolerationsмассив объектов
Структура, аналогичная
spec.tolerations
в Kubernetes Pod.Если ничего не указано или указано
false
— будет использоваться автоматика.Пример:
longtermTolerations: - key: key1 operator: Equal value: value1 effect: NoSchedule
- longtermTolerations.effectстрока
- longtermTolerations.keyстрока
- longtermTolerations.operatorстрока
- longtermTolerations.tolerationSecondsцелочисленный
- longtermTolerations.valueстрока
- mainMaxDiskSizeGigabytesПараметр устарелцелочисленный
Устарел и будет удален. Ни на что не влияет. Максимальный размер в гигабайтах, до которого автоматически может ресайзиться диск Prometheus.
По умолчанию:
300
- nodeSelectorобъект
Структура, аналогичная
spec.nodeSelector
Kubernetes Pod.Если ничего не указано или указано
false
— будет использоваться автоматика.Пример:
nodeSelector: disktype: ssd
- retentionDaysцелочисленный
Сколько дней хранить данные.
По умолчанию:
15
- scrapeIntervalстрока
Как часто Prometheus должен собирать метрики с target’ов.
Evaluation Interval всегда равен
scrapeInterval
.По умолчанию:
"30s"
Шаблон:
^([\d]*y)?([\d]*w)?([\d]*d)?([\d]*h)?([\d]*m)?([\d]*s)?$
- storageClassстрока
Имя storageClass’а, который использовать.
Если не указано — используется StorageClass существующей PVC Prometheus, а если PVC пока нет — используется или глобальный StorageClass, или
global.discovery.defaultStorageClass
, а если и их нет — данные сохраняются вemptyDir
.false
— принудительное использованиеemptyDir
. Удалить старый PVC и рестартануть Pod придется рукамиОСТОРОЖНО! При указании этой опции в значение, отличное от текущего (из существующей PVC), диск Prometheus будет перезаказан, а все данные удалены.
Примеры:
storageClass: ceph-ssd
storageClass: 'false'
- tolerationsмассив объектов
Структура, аналогичная
spec.tolerations
в Kubernetes Pod.Если ничего не указано или указано
false
— будет использоваться автоматика.Пример:
tolerations: - key: key1 operator: Equal value: value1 effect: NoSchedule
- tolerations.effectстрока
- tolerations.keyстрока
- tolerations.operatorстрока
- tolerations.tolerationSecondsцелочисленный
- tolerations.valueстрока
- vpaобъект
По умолчанию:
{"updateMode":"Initial"}
Примеры:
vpa: updateMode: Initial longtermMaxCPU: '1' longtermMaxMemory: 1500Mi maxCPU: 1000m maxMemory: 1500Mi
vpa: updateMode: 'Off'
- vpa.longtermMaxCPU
Максимальная граница CPU requests, выставляемая VPA контроллером для Pod’ов Longterm Prometheus.
Значение по умолчанию подбирается автоматически, исходя из максимального количества Pod’ов, которое можно создать в кластере при текущем количестве узлов и их настройках. Подробнее см. хук
detect_vpa_max
модуля.Пример:
longtermMaxCPU: 0.1
- vpa.longtermMaxMemory
Максимальная граница Memory requests, выставляемая VPA контроллером для Pod’ов longterm Prometheus.
Значение по умолчанию подбирается автоматически, исходя из максимального количества Pod’ов, которое можно создать в кластере при текущем количестве узлов и их настройках. Подробнее см. хук
detect_vpa_max
модуля.Пример:
longtermMaxMemory: 4Mi
- vpa.maxCPU
Максимальная граница CPU requests, выставляемая VPA контроллером для Pod’ов основного Prometheus.
Значение по умолчанию подбирается автоматически, исходя из максимального количества Pod’ов, которое можно создать в кластере при текущем количестве узлов и их настройках. Подробнее см. хук
detect_vpa_max
модуля.Пример:
maxCPU: '3'
- vpa.maxMemory
Максимальная граница Memory requests, выставляемая VPA контроллером для Pod’ов основного Prometheus.
Значение по умолчанию подбирается автоматически, исходя из максимального количества Pod’ов, которое можно создать в кластере при текущем количестве узлов и их настройках. Подробнее см. хук
detect_vpa_max
модуля.Пример:
maxMemory: 3Mi
- vpa.updateModeстрока
Режим обновления Pod’ов.
По умолчанию:
"Initial"
Допустимые значения:
Initial
,Auto
,Off
- vpa.longtermMaxCPU
Аутентификация
По умолчанию используется модуль user-authn. Также можно настроить аутентификацию через externalAuthentication
(см. ниже).
Если эти варианты отключены, то модуль включит basic auth со сгенерированным паролем.
Посмотреть сгенерированный пароль можно командой:
kubectl -n d8-system exec deploy/deckhouse -- deckhouse-controller module values prometheus -o json | jq '.prometheus.internal.auth.password'
Чтобы сгенерировать новый пароль, нужно удалить секрет:
kubectl -n d8-monitoring delete secret/basic-auth
Внимание! Параметр
auth.password
больше не поддерживается.
Примечание
retentionSize
дляmain
иlongterm
рассчитывается автоматически, возможности задать значение нет!- Алгоритм расчета:
pvc_size * 0.8
— если PVC существует.10 GiB
— если PVC нет и StorageClass поддерживает ресайз.25 GiB
— если PVC нет и StorageClass не поддерживает ресайз.
- Если используется
local-storage
и требуется изменитьretentionSize
, то необходимо вручную изменить размер PV и PVC в нужную сторону. Внимание! Для расчета берется значение из.status.capacity.storage
PVC, поскольку оно отражает рельный размер PV в случае ручного ресайза.
- Алгоритм расчета:
- Размер дисков prometheus можно изменить стандартным для kubernetes способом (если в StorageClass это разрешено), отредактировав в PersistentVolumeClaim поле
.spec.resources.requests.storage
.