﻿# Установка Prometheus Adapter

> [HTML Version](prometheus-adapter.html)

Prometheus Adapter — это компонент, который связывает собранные сервисом Prometheus метрики с механизмом горизонтального автоматического масштабирования подов (Horizontal pod autoscaler — HPA) в Kubernetes. 

Prometheus Adapter обеспечивает доступ к пользовательским и внешним метрикам через Kubernetes API. Это позволяет автоматически масштабировать приложения на основе любых метрик из Prometheus: количества запросов в секунду, накопленных сообщений в очереди RabbitMQ, задержек ответа и других пользовательских индикаторов.

Установка Prometheus Adapter не требуется, если вы используете:

- [KEDA](install-keda.md), т. к. в это дополнение уже встроен необходимый компонент для работы с метриками RabbitMQ;

- Deckhouse с его встроенным модулем мониторинга. В этом случае вы можете [настроить ресурс Deckhouse ServiceMetric](#deckhouse).  

В статье рассмотрим, как установить и настроить Prometheus Adapter в кластере. 

Перед началом установки убедитесь, что у вас установлены [средства мониторинга](install-monitoring-tools.md) и [мониторинг баз данных (RabbitMQ)](monitoring-databases.md).

Установка дополнения состоит из нескольких этапов:

1. [Скачивание Helm-чарта и конфигурационного файла](#helm-chart).

2. [Заполнение конфигурационного файла](#configuration).

3. [Установка с помощью Helm в Kubernetes-кластер](#install).

4. [Настройка ELMA365 для работы с Prometheus Adapter](#configure-system).

**Важно**: если вы используете Prometheus Adapter вместе с Prometheus Operator, настройте их на один источник данных Prometheus для сбора метрик приложений.

## Шаг 1. Скачивание Helm-чарта и конфигурационного файла

Для установки через интернет получите конфигурационный файл `values-prometheus-adapter.yaml`, выполнив команду:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm show values elma365/prometheus-adapter > values-prometheus-adapter.yaml

````


Получение конфигурационного файла для установки в закрытом контуре без доступа в интернет

1. На компьютере с доступом в интернет скачайте архив актуальной версии (latest) чарта **prometheus-adapter** из репозитория **elma365** с помощью команды:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm pull elma365/prometheus-adapter

2. ````
Полученный архив чарта `prometheus-adapter-X.Y.Z.tgz` скопируйте на сервер, где будет производиться установка.

3. Распакуйте чарт `prometheus-adapter-X.Y.Z.tgz` на сервере, где будет производиться установка. 

4. Скопируйте конфигурационный файл по умолчанию `values.yaml` в `values-prometheus-adapter.yaml`:

````
tar -xf prometheus-adapter-X.Y.Z.tgz  
cp prometheus-adapter/values.yaml values-prometheus-adapter.yaml

````


## Шаг 2. Заполнение конфигурационного файла

Заполните конфигурационный файл `values-prometheus-adapter.yaml` для установки Prometheus Adapter. 

**Важно**: проверьте параметр `url: http://monitoring-kube-prometheus-prometheus.monitoring.svc`. Он должен указывать на ваш сервис Prometheus.



Пример конфигурационного файла для установки Prometheus Adapter

````
prometheus-adapter:  
  prometheus:  
    url: http://monitoring-kube-prometheus-prometheus.monitoring.svc  
    port: 9090  
  rules:  
    default: false  
    external:  
    - seriesQuery: 'rabbitmq\_queue\_messages\{queue\!=""\}'   
      name:   
        matches: "^rabbitmq\_queue\_messages\$"  
        as: "rabbitmq-queue-messages"   
      metricsQuery: 'rabbitmq\_queue\_messages\{<<.LabelMatchers>>\}'   
   - seriesQuery: 'rabbitmq\_queue\_messages\{queue="\_postman.\_new\_messages"\}'   
      name:   
        matches: "^rabbitmq\_queue\_messages\$"  
        as: "rabbitmq-queue-messages-postman"   
     metricsQuery: 'rabbitmq\_queue\_messages\{<<.LabelMatchers>>\}'

````
  



где:

- `seriesQuery` — запрос к Prometheus для поиска метрик;

- `name.as` — имя, под которым метрика будет доступна в Kubernetes API. Проверить наличие метрики можно с помощью команды:

````
kubectl get --raw /apis/external.metrics.k8s.io/v1beta1

- ````
`metricsQuery` — запрос PromQL для получения значения. Параметр `<<.LabelMatchers>>` подставится автоматически для фильтрации по лейблам.





Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

  
Для подключения к приватному registry:

1. [Загрузите образы ELMA365](downloadin-images-elma365.md) и разместите их в локальном реестре образов.

2. Задайте адрес и путь для параметра `image.repository`.

3. В параметре `imagePullSecrets` укажите наименование секрета с правами доступа к приватному registry. Секрет должен быть создан вручную и зашифрован в Base64.

````
prometheus-adapter:  
\## параметры подключения к приватному registry  
image:  
\## адрес и путь для приватного registry  
  repository: registry.example.com/prometheus-adapter  
\#   tag: "v0.12.0"  
  pullSecrets:   
    - myRegistryKeySecretName

````




## Шаг 3. Установка с помощью Helm в Kubernetes-кластер чарта prometheus-adapter

Установите чарт **prometheus-adapter** в пространстве имён **monitoring**:

- для установки через интернет используйте команду:

````
helm upgrade --install -n monitoring prometheus-adapter elma365/prometheus-adapter -f values-prometheus-adapter.yaml

- ````
для установки без доступа в интернет перейдите в каталог с загруженным чартом и выполните команду:

````
helm upgrade --install prometheus-adapter ./prometheus-adapter -f values-prometheus-adapter.yaml -n monitoring

## ````
Шаг 4. Настройка ELMA365 для работы с Prometheus Adapter

Prometheus Adapter позволяет механизму HPA автоматически масштабировать поды приложения ELMA365 в зависимости от нагрузки на очередь сообщений RabbitMQ.

Чтобы использовать метрики RabbitMQ для HPA, в приложении ELMA365 активируйте параметры в глобальной конфигурации. Для этого отредактируйте файл `values-elma365.yaml`, используемый при установке.

````
Начало внимание

````
Перед редактированием файла `values-elma365.yaml` создайте его резервную копию, поскольку некорректная настройка параметров может привести к сбоям в работе приложения ELMA365.

````
Конец внимание

````
Настройте следующие параметры:

````
elma365:  
  global:  
    monitoring:  
      externalRmqMetrics: true       # Включение использования метрик RabbitMQ для HPA  
      rmqExporterVhost: "elma365"    # Указание vhost для экспортера метрик HPA (по умолчанию "elma365")  
    autoscaling:  
      rabbitmqQueueLength: 500       # порог длины очереди RabbitMQ для автомасштабирования.

````


Подробнее о всех параметрах конфигурационного файла `values-elma365.yaml`, а также работе с ними читайте в статье [«Изменение параметров ELMA365 Enterprise»](change-settings-enterprise.md).



## Настроить ресурс Deckhouse ServiceMetric для автомасштабирования ELMA365

Если вы используете Deckhouse со встроенным модулем мониторинга, для автомасштабирования подов в ELMA365 можно применять метрики очередей RabbitMQ. Они собираются с помощью ресурса Deckhouse ServiceMetric. Механизм HPA будет использовать эти метрики для принятия решений о масштабировании.

Чтобы создать ресурс ServiceMetric: 

1. Сохраните манифест в файл, например `rabbitmq-metrics.yaml`:



````
apiVersion: deckhouse.io/v1beta1  
kind: ServiceMetric  
metadata:  
  name: rabbitmq-queue-messages  
spec:  
  query: |  
    sum(rabbitmq\_queue\_messages\{<<.LabelMatchers>>, queue\!=""\}) by (queue)  
\---  
apiVersion: deckhouse.io/v1beta1  
kind: ServiceMetric  
metadata:  
  name: rabbitmq-queue-messages-postman  
spec:  
  query: |  
    sum(rabbitmq\_queue\_messages\{<<.LabelMatchers>>, queue="\_postman.\_new\_messages"\}) by (queue)

2. ````
Примените манифест командой:

````
kubectl apply -f rabbitmq-metrics.yaml

````
