Установка PREM#

Цель выполнения#

Целью данной инструкции «Установка PREM» является описание последовательных шагов по развертыванию компонента PREM. Выполнение инструкции обеспечивает корректную установку и настройку сервисов «Calculator» и «Adapter», включая сборку и публикацию контейнерных образов, а также развертывание компонентов с помощью Helm-чарта.

Последовательность действий#

Для того, чтобы установить PREM, необходимо выполнить следующие шаги:

Шаг 1. Скачайте версию дистрибутива с компонентом PREM на ваше устройство и распакуйте дистрибутив

Шаг 2. Добавьте kubeconfig, бинарные и конфигурационные файлы в свой проект

Шаг 3. Подготовка Docker-образов

Шаг 4. Развертывание сервиса c помощью Helm чарта

Шаг 5. Настройка конфигурации prem-metrics-config

Шаг 1. Скачайте версию дистрибутива с компонентом PREM на ваше устройство и распакуйте дистрибутив#

Цель выполнения#

Получить все необходимые компоненты установки PREM: бинарные файлы, конфигурации и SBOM-данные - в локальной среде для последующего использования при развертывании.

Последовательность действий#

  1. Скачайте дистрибутив с компонентом PREM и извлеките содержимое zip файла в любую папку вашей ОС.

  2. Перед установкой убедитесь, что состав дистрибутива компонента PREM корректен и представлен в полном объеме.

Компонент PREM предоставляет 2 архива (бинарные файлы и конфигурации), а также дополнительные файлы:

prem-bin-{version}-{build}-distrib#

Элемент дистрибутива

Описание

./package/bh/prem-calculator

Бинарные файлы приложения «Calculator»

./package/docker/prem-calculator/Dockerfile

Dockerfile для сборки приложения «Calculator»

prem-cfg-{version}-{build}-distrib#

Конфигурации для установки.

Элемент дистрибутива

Описание

./package/conf/helm/application/prem/*

Конфигурации развертывавния компонента

prem-bin-{version}-{build}–cyclonedx-distrib.json#

В данном файле находится спецификация программного обеспечения SBOM (Software Bill Of Materials) — это список всех open source и других сторонних компонент, использующихся в кодовой базе программного продукта.

SBOM состоит из сторонних библиотек с открытым исходным кодом, программных пакетов и собственных артефактов, созданных командной. Дополнительно SBOM может содержать информацию по уязвимостям, подлинности, дочерним зависимостям и множество других контекстных данных.

С помощью SBOM вы можете просмотреть версии сборки, номера выпусков компонентов программного обеспечения и решить, продолжать их использование или нет. Это необходимо во избежание проблем с безопасностью в цепочках зависимостей. Поэтому, если в одной из библиотек обнаруживается проблема, вам необходимо знать, уязвимо ли приложение в целом.

CycloneDX — это стандарт SBOM от фонда OWASP, разработанный для контекстов безопасности приложений и анализа компонентов цепочки поставок, обеспечивающий инвентаризацию всех компонентов программного обеспечения как собственных, так и сторонних производителей.

Проверка результата#

Убедитесь, что:

  • Архивы prem-bin-{version}-{build}-distrib.zip и prem-cfg-{version}-{build}-distrib.zip успешно извлечены.

  • В директории ./package/ присутствуют подкаталоги bh, docker, conf.

Шаг 2. Добавьте kubeconfig, бинарные и конфигурационные файлы в свой проект#

Цель выполнения#

Обеспечить доступ PREM к Kubernetes-кластеру и предоставить ему необходимые бинарные и конфигурационные файлы, организовав корректную структуру проекта для последующих этапов установки.

Последовательность действий#

  1. Добавьте вручную kubeconfig, бинарные и конфигурационные файлы в свой проект так, чтобы иерархия файлов соответствовала следующей схеме:

∟ PREM
    ∟ bin/ # папка prem-bin-{version}-{build}-distrib
    ∟ conf/ # папка prem-cfg-{version}-{build}-distrib или prem-infra-cfg-{version}-{build}-distrib в случае, если необходима коммунальная инсталляция
    ∟ kubeconfig # файл `kubeconfig` предоставляется администратором Kubernetes-кластера

Бинарные и конфигурационные файлы, а также kubeconfig должны находиться в корне каталога PREM.

Проверка результата#

Убедитесь, что:

  • Файл kubeconfig размещен в корне директории PREM

Шаг 3. Подготовка Docker-образов#

Цель выполнения#

Цель выполнения шага - подготовить бинарные файлы приложения, собрать их в контейнерный образ (image) и интегрировать его в конфигурации установки, чтобы обеспечить корректную работу системы.

Последовательность действий#

  1. Используйте инструменты сборки, чтобы создать исполняемые файлы или артефакты.

  2. Соберите Docker-образ, включающий бинарные файлы.

Чтобы собрать Docker-образ для prem-calculator введите следующую команду:

   docker build -t <ваш registry>/<ваш путь>/prem-calculator:latest -f package/docker/prem-calculator/Dockerfile . --build-arg=<базовый образ>

Далее отправьте Docker-образ для prem-calculator в registry, для этого введите следующую команду:

   docker push <ваш registry>/<ваш путь>/prem-calculator:latest
  1. Обновите конфигурационные файл values.yaml (conf/helm/prem/values.yaml), указав новый образ:

registry: <ваш registry>
registry_path: <ваш путь>

Проверка результата#

Если все выполнено верно, система будет использовать актуальный образ с собранными бинарными файлами, и конфигурации установки будут работать без ошибок.

Шаг 4. Развертывание сервисов c помощью Helm чарта#

Цель выполнения#

Цель выполнения шага - развернуть сервисы с использованием Helm-чарта, используя подготовленный Docker-образ с бинарными файлами, чтобы обеспечить корректную работу системы в кластере Kubernetes.

Последовательность действий#

  1. Убедитесь, что Helm-чарт существует и содержит конфигурации для развертывания сервисов.

  2. Выполните команду для установки чарта в кластер Kubernetes:

   helm install <ваш релиз> ./path/to/chart --kubeconfig ./<ваш kubeconfig>.yaml --namespace <название вашего namespace>

Проверка результата#

Если все выполнено верно:

  • Helm-релиз будет отображаться в списке (helm list).

  • Все поды будут работать без ошибок.

  • PREM успешно взаимодействует с ресурсами в наблюдаемых namespace-ах.

Шаг 5. Настройка конфигурации prem-metrics-config#

Цель выполнения#

Данная инструкция предназначена для настройки конфигурации prem-metrics-config.

Последовательность действий#

  1. Изучите конфигурацию и описание полей prem-metrics-config.Конфигурационный файл prem-metrics-config используется для настройки предсказательной модели в системе PREM. Он представляет собой ConfigMap, содержащий YAML-конфигурацию метрик и параметров их прогнозирования.

kind: ConfigMap
apiVersion: v1
metadata:
  name: prem-metrics-config
  namespace: $NAMESPACE
data:
  metrics-config.yaml: |
    metrics:
    - name: "prem_metric_aft_1"
      uid: "prem_metric_aft_1"
      data: # неизменяемая
        retention: 30d # timeout
        initHistoryInterval: 7d # lookbackWindow - timeout 
        prometheus:  # oneOf
          query: 'vector(15)' 
          frequency: 30s # freq
      model: # optional, неизменяемая - это пользователь не указывает в 1 версии
        ensemble: 
          smoothing:
            trend: 0.0 # beta - параметр ансамбля 
            seasonal: 0.15 # gammas - параметр сглаживания 
            error: 0.1 # delta - параметр за сглаживание ошибки
          members:
            - model: holt-winters 
              smoothing:
                level: 0.0 # alpha - параметр конкретный модели в ансамбле
            - model: holt-winters
              smoothing:
                level: 0.5
            - model: holt-winters
              smoothing:
                level: 1.0
      forecast: # изменяемая
        calculationLoopInterval: 30s  # or recalculationInterval
        horizon: 3 # 5 минут фикс., 45 минут удаляемые
        confidence: 0.95

Описание полей

Общие параметры метрики#

Поле

Описание

name

Имя предсказанной метрики.

uid

PromQL-запрос, по которому извлекаются исходные данные из хранилища метрик

data.retention

Частота пересчета прогноза. Указывает, как часто PREM будет обновлять модель и генерировать новые предсказания (например, "30s", "1m")

data.initHistoryInterval

Временной интервал, используемый для загрузки исторических данных при старте PREM. Например, "2h" означает, что при запуске будут загружены данные за последние 2 часа

data.prometheus.query

PromQL-запрос, по которому извлекаются исходные данные из Prometheus

data.prometheus.frequency

Частота сбора метрик. Определяет шаг между точками временного ряда

Параметры модели model#

Поле

Описание

model.ensemble.smoothing.trend

Параметр сглаживания тренда (beta)

model.ensemble.smoothing.seasonal

Параметр сезонного сглаживания (gammas)

model.ensemble.smoothing.error

Параметр сглаживания ошибки (delta)

model.ensemble.members[*].model

Тип модели внутри ансамбля (например, holt-winters)

model.ensemble.members[*].smoothing.level

Параметр уровня сглаживания для конкретной модели (alpha)

Параметры прогноза (forecast)#

Поле

Описание

forecast.calculationLoopInterval

Частота пересчета прогноза. Указывает, как часто PREM будет обновлять модель и генерировать новые предсказания. Должно быть больше или равно data.prometheus.frequency

forecast.horizon

Количество шагов вперед, на которые делается прогноз.
Важно: Часть прогноза может быть фиксированной, а часть удаляемой (отбрасываемой) для повышения точности в реальном времени

forecast.confidence

Уровень доверия прогноза. Значение должно быть строго между 0 и 1 (например, 0.95 для 95% доверительного интервала)

Примечание: ограничения - calculationLoopInterval >= data.prometheus.frequency; 0 < confidence < 1.

  1. Создайте ConfigMap

Создайте YAML-файл, например prem-config.yaml, и начните с базовой структуры ConfigMap.

kind: ConfigMap
apiVersion: v1
metadata:
  name: prem-metrics-config
  namespace: <ваш_namespace>
data:
  metrics-config.yaml: |
    metrics:
  1. Определите метрику для прогнозирования

Добавьте в список metrics новую метрику. Каждая метрика - это отдельный элемент списка.

  1. Укажите имя и uid предсказываемой метрики

data:
  metrics-config.yaml: |
    metrics:
      - name: "cpu_usage"
        uid: "cpu_metric_01"
  1. Настройте источник данных (Prometheus)

Укажите запрос и частоту сбора данных.

data:
  metrics-config.yaml: |
    metrics:
      - name: "cpu_usage"
        uid: "cpu_metric_01"
        data:
          retention: 30d
          initHistoryInterval: 14d
          prometheus:
            query: 'rate(container_cpu_usage_seconds_total{}[1m])'
            frequency: 60s
  1. Настройте прогноз (forecast)

Задайте интервал пересчета, горизонт прогноза и доверительный интервал.

data:
  metrics-config.yaml: |
    metrics:
      - name: "cpu_usage"
        uid: "cpu_metric_01"
        data:
          retention: 30d
          initHistoryInterval: 14d
          prometheus:
            query: 'rate(container_cpu_usage_seconds_total{}[1m])'
            frequency: 60s
        forecast:
          calculationLoopInterval: 5m
          horizon: 50
          confidence: 0.95

Примечание: Блок model можно оставить пустым или убрать, если используются значения по умолчанию, либо скопировать структуру ensemble из примера, если требуется кастомизация (хотя в первой версии она неизменяема).

  1. Настройка модели (Опционально)

Если необходимо явно указать параметры ансамбля (несмотря на то, что они неизменяемы в текущей версии, структура поддерживается для совместимости), добавьте блок model:

model:
   ensemble:
    smoothing:
      trend: 0.0
      seasonal: 0.15
      error: 0.1
    members:
      - model: holt-winters
        smoothing:
          level: 0.0
      - model: holt-winters
        smoothing:
          level: 0.5
  1. Проверьте итоговую конфигурацию

Пример полной конфигурации:

kind: ConfigMap
apiVersion: v1
metadata:
  name: prem-metrics-config
  namespace: default
data:
  metrics-config.yaml: |
    metrics:
      - name: "cpu_usage"
        uid: "cpu_metric_01"
        data: 
          retention: 30d
          initHistoryInterval: 14d
          prometheus: 
            query: 'rate(container_cpu_usage_seconds_total{}[1m])'
            frequency: 60s
        model: 
          ensemble: 
            smoothing:
              trend: 0.0
              seasonal: 0.15
              error: 0.1
            members:
              - model: holt-winters 
                smoothing:
                  level: 0.0
              - model: holt-winters
                smoothing:
                  level: 0.5
        forecast: 
          calculationLoopInterval: 5m
          horizon: 50
          confidence: 0.95
  1. Примените конфигурацию

Выполните команду:

bash kubectl apply -f metrics-config.yaml

Проверка результата#

Убедитесь, что:

  • ConfigMap prem-metrics-config успешно применен.

Проверка результата#

Корректным результатом проверки установки PREM является соответствие успешным проверкам в шагах:

  • Сборка и установка бинарных файлов.

  • Развертывание сервисов c помощью Helm чарта.