Prometheus Adapter — это компонент, который связывает собранные сервисом Prometheus метрики с механизмом горизонтального автоматического масштабирования подов (Horizontal pod autoscaler — HPA) в Kubernetes.
Prometheus Adapter обеспечивает доступ к пользовательским и внешним метрикам через Kubernetes API. Это позволяет автоматически масштабировать приложения на основе любых метрик из Prometheus: количества запросов в секунду, накопленных сообщений в очереди RabbitMQ, задержек ответа и других пользовательских индикаторов.
Установка Prometheus Adapter не требуется, если вы используете:
- KEDA, т. к. в это дополнение уже встроен необходимый компонент для работы с метриками RabbitMQ;
- Deckhouse с его встроенным модулем мониторинга. В этом случае вы можете настроить ресурс Deckhouse ServiceMetric.
В статье рассмотрим, как установить и настроить Prometheus Adapter в кластере.
Перед началом установки убедитесь, что у вас установлены средства мониторинга и мониторинг баз данных (RabbitMQ).
Установка дополнения состоит из нескольких этапов:
- Скачивание Helm-чарта и конфигурационного файла.
- Заполнение конфигурационного файла.
- Установка с помощью Helm в Kubernetes-кластер.
- Настройка ELMA365 для работы с Prometheus Adapter.
Важно: если вы используете 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
Получение конфигурационного файла для установки в закрытом контуре без доступа в интернет
helm repo add elma365 https://charts.elma365.tech
tar -xf prometheus-adapter-X.Y.Z.tgz
|
Шаг 2. Заполнение конфигурационного файла
Заполните конфигурационный файл values-prometheus-adapter.yaml для установки Prometheus Adapter.
Важно: проверьте параметр url: http://monitoring-kube-prometheus-prometheus.monitoring.svc. Он должен указывать на ваш сервис Prometheus.
Пример конфигурационного файла для установки Prometheus Adapter
prometheus-adapter:
где:
kubectl get --raw /apis/external.metrics.k8s.io/v1beta1
|
prometheus-adapter:
|
Шаг 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».
Настроить ресурс Deckhouse ServiceMetric для автомасштабирования ELMA365
Если вы используете Deckhouse со встроенным модулем мониторинга, для автомасштабирования подов в ELMA365 можно применять метрики очередей RabbitMQ. Они собираются с помощью ресурса Deckhouse ServiceMetric. Механизм HPA будет использовать эти метрики для принятия решений о масштабировании.
Чтобы создать ресурс ServiceMetric:
- Сохраните манифест в файл, например 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)
- Примените манифест командой:
kubectl apply -f rabbitmq-metrics.yaml