Доступно в редакциях: CE, BE, SE, SE+, EE, CSE Lite (1.67), CSE Pro (1.67)
Модуль не требует обязательной конфигурации (все работает из коробки).
В модуле реализовано 25 алертов.
Модуль включен по умолчанию в наборах модулей: Default
, Managed
.
Модуль выключен по умолчанию в наборе модулей Minimal
.
Чтобы настроить модуль, используйте ресурс ModuleConfig
с именем prometheus
(подробнее о настройке Deckhouse…).
Пример ресурса ModuleConfig/prometheus
для настройки модуля:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: prometheus
spec:
version: 2
enabled: true
settings: # <-- Параметры модуля из раздела "Параметры" ниже.
Параметры
Версия схемы: 2
- массив строк
Массив групп, пользователям которых позволен доступ в Grafana и Prometheus.
Используется, если включен модуль user-authn или параметр
externalAuthentication
.Внимание! При использовании совместно с модулем user-authn необходимо также добавить разрешенные группы в соответствующее поле в настройках DexProvider.
- объект
Параметры для подключения внешней аутентификации (используется механизм NGINX Ingress external-auth, работающий на основе модуля NGINX auth_request.
Внешняя аутентификация включается автоматически, если включен модуль user-authn.
- объект
Набор внешних меток для маркировки метрик.
Допускается использование значений переменных окружения контейнера
config-reloader
в качестве значений меток, например:HOSTNAME
/POD_NAME
— содержит наименование пода (например,prometheus-main-0
,prometheus-main-1
и т. д.);SHARD
— содержит номер шарда.
Пример:
externalLabels: prometheus_replica: "$(POD_NAME)" shard: "$(SHARD)" hostname: "$(HOSTNAME)"
- массив строк
Список дополнительных 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
- булевый
Ручное управление режимом отказоустойчивости.
По умолчанию режим отказоустойчивости определяется автоматически. Подробнее про режим отказоустойчивости.
Пример:
highAvailability: true
- объект
Тип сертификата, используемого для Grafana/Prometheus.
При использовании этого параметра полностью переопределяются глобальные настройки
global.modules.https
.Примеры:
https: mode: CustomCertificate customCertificate: secretName: foobar
https: mode: CertManager certManager: clusterIssuerName: letsencrypt
- строка
Имя Secret’а в namespace
d8-system
, который будет использоваться для Grafana/Prometheus.Secret должен быть в формате kubernetes.io/tls.
По умолчанию:
"false"
- строка
Режим работы 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
- объект
Структура, аналогичная
spec.nodeSelector
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика.Пример:
longtermNodeSelector: disktype: ssd
- строка
Устанавливает конфигурацию podAntiAffinity для Prometheus longterm по отношению к Prometheus main.
Preferred
— позволяет размещать Prometheus longterm на одном узле с Prometheus main, если нет возможности их разместить на разных узлах.Required
— не позволяет размещать Prometheus longterm на одном узле с Prometheus main ни при каких условиях.
По умолчанию:
"Preferred"
Допустимые значения:
Preferred
,Required
- строка
Имя StorageClass, который будет использован для Longterm Prometheus.
Если значение не указано, используется StorageClass существующей PVC Longterm Prometheus. Если PVC нет, будет использоваться StorageClass, согласно настройке глобального параметра storageClass.
Настройка глобального параметра
storageClass
учитывается только при включении модуля. Изменение глобального параметраstorageClass
при включенном модуле не приведет к перезаказу диска.Внимание. Если указать значение, отличное от текущего (используемого в существующей PVC), диск будет перезаказан, и все данные удалятся.
Пример:
longtermStorageClass: ceph-ssd
- массив объектов
Структура, аналогичная
spec.tolerations
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика.Пример:
longtermTolerations: - key: key1 operator: Equal value: value1 effect: NoSchedule
- объект
Структура, аналогичная
spec.nodeSelector
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика.Пример:
nodeSelector: disktype: ssd
- строка
Имя StorageClass, который будет использоваться по умолчанию в кластере.
Если не указано, используется StorageClass существующей PVC Prometheus. Если PVC нет, будет использоваться StorageClass, согласно настройке глобального параметра storageClass.
Настройка глобального параметра
storageClass
учитывается только при включении модуля. Изменение глобального параметраstorageClass
при включенном модуле не приведет к перезаказу диска.Внимание. Если указать значение, отличное от текущего (используемого в существующей PVC), диск Prometheus будет перезаказан, а все данные удалены.
Внимание. При переносе Prometheus с локальным хранилищем на другие узлы, поды зависнут в состоянии Pending. В этом случае будет необходимо сохранить базу данных Prometheus, удалить старые PVC и перезапустить под вручную. Под локальным хранилищем подразумевается StorageClass, связанный не с сетевым хранилищем, а с локальным томом на узле (например, StorageClass, создаваемый модулем local-path-provisioner).
Если указать
false
, будет принудительно использоватьсяemptyDir
.Примеры:
storageClass: ceph-ssd
storageClass: 'false'
- массив объектов
Структура, аналогичная
spec.tolerations
пода Kubernetes.Если значение не указано или указано
false
, будет использоваться автоматика.Пример:
tolerations: - key: key1 operator: Equal value: value1 effect: NoSchedule
- объект
Настройки VPA для подов.
По умолчанию:
{"updateMode":"Initial"}
Примеры:
vpa: updateMode: Initial longtermMaxCPU: '1' longtermMaxMemory: 1500Mi maxCPU: 1000m maxMemory: 1500Mi
vpa: updateMode: 'Off'
Максимальное значение, которое может выставить VPA для запроса CPU (CPU requests) для подов Longterm Prometheus.
Значение по умолчанию подбирается автоматически, исходя из максимального количества подов, которое можно создать в кластере при текущем количестве узлов и их настройках. Подробнее см. хук
detect_vpa_max
модуля.Пример:
longtermMaxCPU: 0.1
Максимальное значение, которое может выставить VPA для запроса к памяти (memory requests) для подов Longterm Prometheus.
Значение по умолчанию подбирается автоматически, исходя из максимального количества подов, которое можно создать в кластере при текущем количестве узлов и их настройках. Подробнее см. хук
detect_vpa_max
модуля.Пример:
longtermMaxMemory: 4Mi
Максимальное значение, которое может выставить VPA для запроса CPU (CPU requests) для подов основного Prometheus.
Значение по умолчанию подбирается автоматически, исходя из максимального количества подов, которое можно создать в кластере при текущем количестве узлов и их настройках. Подробнее см. хук
detect_vpa_max
модуля.Пример:
maxCPU: '3'
Максимальное значение, которое может выставить VPA для запроса к памяти (memory requests) для подов основного Prometheus..
Значение по умолчанию подбирается автоматически, исходя из максимального количества подов, которое можно создать в кластере при текущем количестве узлов и их настройках. Подробнее см. хук
detect_vpa_max
модуля.Пример:
maxMemory: 3Mi
Аутентификация
По умолчанию используется модуль 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
.