Модуль не требует обязательной конфигурации (все работает из коробки).
В модуле реализовано 25 алертов.
Модуль включен по умолчанию в наборах модулей: 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
- settings
- settings.auth
Опции, связанные с аутентификацией или авторизацией в приложении.
- settings.auth.allowedUserGroups
Массив групп, пользователям которых позволен доступ в Grafana и Prometheus.
Используется, если включен модуль user-authn или параметр
externalAuthentication
.Внимание! При использовании совместно с модулем user-authn необходимо также добавить разрешенные группы в соответствующее поле в настройках DexProvider.
- settings.auth.externalAuthentication
Параметры для подключения внешней аутентификации (используется механизм NGINX Ingress external-auth, работающий на основе модуля NGINX auth_request.
Внешняя аутентификация включается автоматически, если включен модуль user-authn.
- settings.auth.externalAuthentication.authSignInURL
URL, куда будет перенаправлен пользователь для прохождения аутентификации (если сервис аутентификации вернул код ответа HTTP, отличный от 200).
Пример:
authSignInURL: https://example.com/dex/sign_in
- settings.auth.externalAuthentication.authURL
URL сервиса аутентификации. Если пользователь прошел аутентификацию, сервис должен возвращать код ответа 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
— содержит номер шарда.
Пример:
externalLabels: prometheus_replica: "$(POD_NAME)" shard: "$(SHARD)" hostname: "$(HOSTNAME)"
- 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.useDarkTheme
Использование по умолчанию пользовательской темной темы.
По умолчанию:
false
Пример:
useDarkTheme: true
- settings.highAvailability
Ручное управление режимом отказоустойчивости.
По умолчанию режим отказоустойчивости определяется автоматически. Подробнее про режим отказоустойчивости.
Пример:
highAvailability: true
- settings.https
Тип сертификата, используемого для Grafana/Prometheus.
При использовании этого параметра полностью переопределяются глобальные настройки
global.modules.https
.Примеры:
https: mode: CustomCertificate customCertificate: secretName: foobar
https: mode: CertManager certManager: clusterIssuerName: letsencrypt
- 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Параметр устарел
Устарел и будет удален. Ни на что не влияет. Максимальный размер в гигабайтах, до которого автоматически может ресайзиться диск Longterm Prometheus.
- settings.longtermNodeSelector
Структура, аналогичная
spec.nodeSelector
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика.Пример:
longtermNodeSelector: disktype: ssd
- 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, или
global.discovery.defaultStorageClass
, а если и их нет, данные сохраняются вemptyDir
.global.discovery.defaultStorageClass
применяется только при включении модуля, смена StorageClass по умолчанию в кластере не приведет к перезаказу диска.Внимание. При указании этой опции в значение, отличное от текущего (из существующей PVC), диск Longterm Prometheus будет перезаказан, а все данные удалены.
Пример:
longtermStorageClass: ceph-ssd
- settings.longtermTolerations
Структура, аналогичная
spec.tolerations
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика.Пример:
longtermTolerations: - key: key1 operator: Equal value: value1 effect: NoSchedule
- settings.longtermTolerations.effect
- settings.longtermTolerations.key
- settings.longtermTolerations.operator
- settings.longtermTolerations.tolerationSeconds
- settings.longtermTolerations.value
- settings.mainMaxDiskSizeGigabytesПараметр устарел
Устарел и будет удален. Ни на что не влияет. Максимальный размер в гигабайтах, до которого автоматически может ресайзиться диск Prometheus.
- settings.nodeSelector
Структура, аналогичная
spec.nodeSelector
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика.Пример:
nodeSelector: 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’а, который предполагается использовать.
Если не указано, используется StorageClass существующей PVC Prometheus, а если PVC пока нет, используется или глобальный StorageClass, или
global.discovery.defaultStorageClass
, а если и их нет, данные сохраняются вemptyDir
.global.discovery.defaultStorageClass
применяется только при включении модуля, смена StorageClass по умолчанию в кластере не приведет к перезаказу диска.false
— принудительное использованиеemptyDir
. Удалить старый PVC и рестартануть под придется вручную.Внимание. При переносе Prometheus с локальным хранилищем на другие узлы, поды зависнут в состоянии Pending. В этом случае будет необходимо сохранить базу данных Prometheus, удалить старые PVC и перезапустить под вручную. Под локальным хранилищем подразумевается StorageClass, связанный не с сетевым хранилищем, а с локальным томом на узле (например, StorageClass, создаваемый модулем local-path-provisioner).
Внимание. При указании этой опции в значение, отличное от текущего (из существующей PVC), диск Prometheus будет перезаказан, а все данные удалены.
Примеры:
storageClass: ceph-ssd
storageClass: 'false'
- settings.tolerations
Структура, аналогичная
spec.tolerations
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика.Пример:
tolerations: - key: key1 operator: Equal value: value1 effect: NoSchedule
- settings.tolerations.effect
- settings.tolerations.key
- settings.tolerations.operator
- settings.tolerations.tolerationSeconds
- settings.tolerations.value
- settings.vpa
Настройки VPA для подов.
По умолчанию:
{"updateMode":"Initial"}
Примеры:
vpa: updateMode: Initial longtermMaxCPU: '1' longtermMaxMemory: 1500Mi maxCPU: 1000m maxMemory: 1500Mi
vpa: updateMode: '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
Аутентификация
По умолчанию используется модуль user-authn. Также можно настроить аутентификацию через externalAuthentication
(см. ниже).
Если эти варианты отключены, модуль включит basic auth со сгенерированным паролем и пользователем admin
.
Посмотреть сгенерированный пароль можно командой:
kubectl -n d8-system exec svc/deckhouse-leader -c deckhouse -- deckhouse-controller module values prometheus -o json | jq '.internal.auth.password'
Чтобы сгенерировать новый пароль, нужно удалить Secret:
kubectl -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.storage
PVC, поскольку оно отражает реальный размер PV в случае ручного ресайза.
- Алгоритм расчета:
40 GiB
— размер PersistentVolumeClaim создаваемого по умолчанию.- Размер дисков Prometheus можно изменить стандартным для Kubernetes способом (если в StorageClass это разрешено), отредактировав в PersistentVolumeClaim поле
.spec.resources.requests.storage
.