Доступно в редакциях:  CE, BE, SE, SE+, EE, CSE Lite (1.67), CSE Pro (1.67)

Стадия жизненного цикла модуля: General Availability

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

В модуле реализовано 26 алертов.

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

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

Явно включить или выключить модуль можно одним из следующих способов:

  • С помощью веб-интерфейса Deckhouse. В разделе «Система» → «Управление системой» → «Deckhouse» → «Модули», откройте модуль prometheus, включите (или выключите) переключатель «Модуль включен». Сохраните изменения.

    Пример:

    Интерфейс включения и выключения модуля

  • С помощью Deckhouse CLI (d8).

    Используйте команду d8 system module enable для включения модуля, или d8 system module disable для выключения модуля (требуется Deckhouse CLI (d8), настроенный на работу с кластером).

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

    d8 system module enable prometheus
    
  • С помощью ModuleConfig prometheus.

    Установите spec.enabled в true или false в ModuleConfig prometheus (создайте его, при необходимости).

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

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

Как настроить модуль…

Настроить модуль можно одним из следующих способов:

  • С помощью веб-интерфейса Deckhouse.

    В разделе «Система» → «Управление системой» → «Deckhouse» → «Модули», откройте модуль prometheus, включите переключатель «Дополнительные настройки». Заполните необходимые поля формы на вкладке «Конфигурация», или укажите настройки модуля в формате YAML на вкладке «YAML», не включая секцию settings. Сохраните изменения.

    Пример:

    Интерфейс настройки модуля

    Вы также можете отредактировать объект ModuleConfig prometheus на вкладке «YAML» в окне настроек модуля («Система» → «Управление системой» → «Deckhouse» → «Модули», откройте модуль prometheus), указав версию схемы в параметре spec.version и необходимые параметры модуля в секции spec.settings.

  • С помощью Deckhouse CLI (d8) (требуется Deckhouse CLI (d8), настроенный на работу с кластером).

    Отредактируйте существующий ModuleConfig prometheus (подробнее о настройке Deckhouse читайте в документации), выполнив следующую команду:

    d8 k edit mc prometheus
    

    Внесите необходимые изменения в секцию spec.settings. При необходимости укажите версию схемы в параметре spec.version. Сохраните изменения.

    Вы также можете создать файл манифеста ModuleConfig prometheus, используя пример ниже. Заполните секцию spec.settings необходимыми параметрами модуля. При необходимости укажите версию схемы в параметре spec.version.

    Примените манифест с помощью следующей команды (укажите имя файла манифеста):

    d8 k apply -f <FILENAME>
    

    Пример файла манифеста ModuleConfig prometheus:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: prometheus
    spec:
      version: 2
      enabled: true
      settings: # Параметры модуля из раздела "Параметры" ниже.
    

Требования

К версиям других модулей:

  • operator-prometheus: любая версия.

Конверсии

Модуль настраивается с помощью ресурса ModuleConfig, схема которого содержит номер версии. При применении в кластере старой версии схемы ModuleConfig выполняются автоматические преобразования. Чтобы обновить версию схемы ModuleConfig вручную, необходимо последовательно для каждой версии выполнить следующие действия :

  • Обновление из версии 1 в 2:

    Удалите поле .auth.password. Если в результате объект .auth становится пуст, удалите его.

Параметры

Версия схемы: 2

  • settings
    объект
    • 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.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.enabled
        булевый

        Включить установку Grafana в кластер.

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

        Пример:

        enabled: false
        
      • 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, используя сертификат из namespace d8-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, будет использоваться автоматика.

      Пример:

      longtermNodeSelector:
        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:
      - 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
      Параметр устарел
      целочисленный

      Устарел и будет удален. Ни на что не влияет.

    • 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, согласно настройке глобального параметра storageClass.

      Настройка глобального параметра storageClass учитывается только при включении модуля. Изменение глобального параметра storageClass при включенном модуле не приведет к перезаказу диска.

      Внимание. Если указать значение, отличное от текущего (используемого в существующей PVC), диск Prometheus будет перезаказан, а все данные удалены.

      Внимание. При переносе Prometheus с локальным хранилищем на другие узлы, поды зависнут в состоянии Pending. В этом случае будет необходимо сохранить базу данных Prometheus, удалить старые PVC и перезапустить под вручную. Под локальным хранилищем подразумевается StorageClass, связанный не с сетевым хранилищем, а с локальным томом на узле (например, StorageClass, создаваемый модулем local-path-provisioner).

      Если указать false, будет принудительно использоваться emptyDir.

      Примеры:

      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.

Посмотреть сгенерированный пароль можно командой:

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.storage PVC, поскольку оно отражает реальный размер PV в случае ручного ресайза.
  • 40 GiB — размер PersistentVolumeClaim создаваемого по умолчанию.
  • Размер дисков Prometheus можно изменить стандартным для Kubernetes способом (если в StorageClass это разрешено), отредактировав в PersistentVolumeClaim поле .spec.resources.requests.storage.