Модуль не требует обязательной конфигурации (всё работает из коробки).

Модуль включен по умолчанию в наборах модулей: Default, Managed. Модуль выключен по умолчанию в наборе модулей Minimal.

Как явно включить или отключить модуль…

Обратите внимание, что при установке Deckhouse для явного включения/отключения и настройки модуля используется параметр configOverrides ресурса InitConfiguration, а не ModuleConfig.

Чтобы явно включить или выключить модуль prometheus при установке Deckhouse, укажите prometheusEnabled: true или prometheusEnabled: false в секции configOverrides.

Чтобы задать настройки модуля при установке Deckhouse, используйте секцию prometheus параметра configOverrides.

Чтобы явно включить или выключить модуль prometheus, установите spec.enabled в true или false в ModuleConfig/prometheus.

Пример включения модуля prometheus:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: prometheus
spec:
  enabled: true

Пример выключения модуля prometheus:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: prometheus
spec:
  enabled: false

Чтобы настроить модуль используйте 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.satisfyAnyбулевый

      Разрешает пройти только одну из аутентификаций.

      В комбинации с опцией whitelistSourceRanges позволяет считать авторизованными всех пользователей из указанных сетей без ввода логина и пароля.

      По умолчанию: false

      Пример:

      satisfyAny: true
      
    • auth.whitelistSourceRangesмассив строк

      Массив CIDR, которым разрешено проходить авторизацию в Grafana и Prometheus.

      Пример:

      whitelistSourceRanges:
      - 1.1.1.1/32
      
  • 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
      
  • 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.customCertificateобъект
      • https.customCertificate.secretNameстрока

        Имя secret’а в namespace d8-system, который будет использоваться для Grafana/Prometheus.

        Секрет должен быть в формате kubernetes.io/tls.

        По умолчанию: "false"

    • https.modeстрока

      Режим работы HTTPS:

      • Disabled — в данном Grafana/Prometheus будут работать только по HTTP.
      • CertManager — Grafana/Prometheus будут работать по https и заказывать сертификат с помощью clusterissuer заданном в параметре certManager.clusterIssuerName.
      • CustomCertificate — Grafana/Prometheus будут работать по https используя сертификат из namespace d8-system.
      • OnlyInURI — Grafana/Prometheus будут работать по HTTP (подразумевая, что перед ними стоит внешний балансер, который терминирует HTTPS) и все ссылки в user-authn будут генерироваться с HTTPS-схемой.

      По умолчанию: "Disabled"

      Допустимые значения: Disabled, CertManager, CustomCertificate, OnlyInURI

  • 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

Аутентификация

По умолчанию используется модуль 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.