Перейти к основному содержимому
Мониторинг облачного балансировщика нагрузки
Последнее изменение:

Мониторинг облачного балансировщика нагрузки

Для облачных балансировщиков нагрузки можно настроить мониторинг — собирать и экспортировать метрики OpenStack Octavia в формате Prometheus и подключить Grafana, чтобы отслеживать метрики на дашбордах.

Посмотреть список доступных метрик можно в таблице Метрики Octavia в формате Prometheus.

Настроить мониторинг

осторожно

Мы не рекомендуем настраивать мониторинг в период максимальной нагрузки вашей инфраструктуры. При увеличении трафика на балансировщике нагрузки растет частота запроса метрик — это влияет на производительность амфор (amphora) балансировщика.

  1. Создайте слушатель (listener) на балансировщике нагрузки.
  2. Создайте облачный сервер для Prometheus и Grafana.
  3. Установите Prometheus на облачном сервере и настройте сбор метрик.
  4. Установите Grafana на облачном сервере и авторизуйтесь в Grafana.
  5. Создайте дашборд в Grafana.

1. Создать слушатель (listener) на балансировщике нагрузки

осторожно

После создания слушателя с протоколом PROMETHEUS метрики облачного балансировщика нагрузки будут доступны из интернета по IP-адресу и порту без аутентификации, если:

  • балансировщик нагрузки находится в приватной подсети и к нему подключен публичный IP-адрес;
  • или балансировщик нагрузки находится в публичной подсети.
  1. Если балансировщик нагрузки находится в приватной подсети и к нему подключен публичный IP-адрес, создайте облачный файрвол.

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

  2. Откройте OpenStack CLI.

  3. Создайте слушатель (listener) — правило для балансировщика с протоколом PROMETHEUS и портом 8088:

    openstack loadbalancer listener create \
    --name <listener_name> \
    --protocol PROMETHEUS \
    --protocol-port 8088 \
    <loadbalancer>

    Укажите:

    • <listener_name> — имя слушателя;
    • <loadbalancer> — ID или имя балансировщика нагрузки, можно посмотреть через openstack loadbalancer list.
  4. Чтобы посмотреть метрики балансировщика нагрузки в текстовом формате, откройте в браузере страницу:

    http://<loadbalancer_ip_address>:8088

    Укажите <loadbalancer_ip_address> — приватный или публичный IP-адрес балансировщика нагрузки. Можно посмотреть в панели управления в разделе Облачная платформаБалансировщики → страница балансировщика нагрузки.

2. Создать облачный сервер для Prometheus и Grafana

Prometheus и Grafana нужно установить и настроить на облачном сервере, который находится в одной приватной подсети с балансировщиком нагрузки.

Используйте инструкцию Создать облачный сервер.

Выберите:

  • источник — любой готовый образ с Ubuntu, например Ubuntu 22.04 LTS 64-bit;
  • конфигурацию — любую конфигурацию (фиксированную или произвольную) с vCPU от 2, RAM от 4 ГБ и объемом загрузочного диска от 10 ГБ;
  • сеть — приватную подсеть с публичным IP-адресом, к которой подключен балансировщик нагрузки.

3. Установить Prometheus на облачном сервере и настроить сбор метрик

  1. Подключитесь к облачному серверу, который вы создали на шаге 2.

  2. Скачайте и установите Prometheus:

    sudo apt update
    wget https://github.com/prometheus/prometheus/releases/download/v2.45.1/prometheus-2.45.1.linux-amd64.tar.gz
    tar xvf prometheus-2.45.1.linux-amd64.tar.gz
    cd prometheus-2.45.1.linux-amd64
  3. Откройте конфигурационный файл prometheus.yml:

    nano prometheus.yml
  4. Измените значение targets в блоке scrape_configs:

    Пример блока:

    scrape_configs:
    - job_name: "prometheus"
    static_configs:
    - targets: ["<loadbalancer_private_ip_address>:8088"]

    Укажите <loadbalancer_private_ip_address> — приватный IP-адрес балансировщика нагрузки. Можно посмотреть в панели управления в разделе Облачная платформаБалансировщики → страница балансировщика нагрузки.

  5. Запустите Prometheus локально:

    sudo apt install screen
    screen -dm ./prometheus --config.file=./prometheus.yml --web.listen-address=localhost:9090

4. Установить Grafana на облачном сервере и авторизоваться в Grafana

  1. Подключитесь к облачному серверу, который вы создали на шаге 2.

  2. Установите библиотеку fontconfig, которая необходима для работы с Grafana:

    sudo apt install -y libfontconfig1
  3. Скачайте и установите Grafana:

    cd ~
    wget https://dl.grafana.com/oss/release/grafana_9.1.0_amd64.deb
    sudo dpkg -i grafana_9.1.0_amd64.deb
  4. Откройте в браузере страницу:

    http://<server_ip_address>:3000/login

    Укажите <server_ip_address> — публичный IP-адрес облачного сервера. Можно посмотреть в панели управления в разделе Облачная платформаСерверы → страница сервера → вкладка Порты → столбец Публичный IP.

  5. Авторизуйтесь в Grafana. Для первой авторизации используйте:

    • логин — admin;
    • пароль — admin.
  6. Grafana предложит изменить пароль. Введите новый пароль.

  7. Нажмите Submit.

5. Создать дашборд в Grafana

Для сбора метрик Octavia существует готовый дашборд. Подробнее на странице OpenStack Octavia Amphora Load Balancer на официальном сайте Grafana.

  1. Добавьте источник данных (Data Source) в Grafana. Для этого перейдите в раздел ConfigurationData sources.
  2. Нажмите Add data source.
  3. Выберите тип источника данных Prometheus.
  4. В поле URL введите http://localhost:9090.
  5. Нажмите Save & test.
  6. Добавьте готовый дашборд для метрик Octavia. Для этого перейдите в раздел Dashboards+ Import.
  7. В поле Import via grafana.com введите 15828.
  8. Нажмите Load.
  9. В поле Prometheus выберите источник данных Prometheus, который вы создали на шаге 5.
  10. Нажмите Import.
  11. Убедитесь, что дашборд создан. Для этого перейдите в раздел DashboardsBrowse.
  12. Откройте страницу дашборда OpenStack Octavia Amphora Load Balancer.

Метрики Octavia в формате Prometheus

Метрики собираются для всех компонентов балансировщика нагрузки:

  • octavia_loadbalancer, octavia_memory_pool — метрики балансировщика нагрузки;
  • octavia_listener — метрики слушателя (listener). Собираются для каждого слушателя отдельно, различаются по ID;
  • octavia_pool — метрики пула (pool). Собираются для каждого пула отдельно, различаются по ID;
  • octavia_member — метрики сервера (member). Собираются для каждого сервера отдельно, различаются по ID.

Подробнее о компонентах балансировщика и модели OpenStack Octavia в подразделе Как работает балансировщик.

МетрикаТипОписание
octavia_loadbalancer_cpugaugeИспользование ядер процессора (CPU) балансировщика нагрузки в процентах
octavia_loadbalancer_memorygaugeИспользование памяти (RAM) балансировщика нагрузки в процентах
octavia_memory_pool_allocated_bytesgaugeОбщее количество памяти, выделенной для пулов памяти в байтах
octavia_memory_pool_used_bytesgaugeОбщее количество памяти, использованной в пулах памяти в байтах
octavia_memory_pool_failures_totalcounterОбщее количество неудачных попыток выделения пула памяти
octavia_loadbalancer_max_connectionsgaugeМаксимальное количество одновременных соединений
octavia_loadbalancer_current_connectionsgaugeКоличество активных сессий
octavia_loadbalancer_connections_totalcounterОбщее количество созданных сессий
octavia_loadbalancer_requests_totalcounterОбщее количество запросов TCP и HTTP
octavia_loadbalancer_max_ssl_connectionsgaugeНастроенное максимальное количество одновременных SSL-соединений
octavia_loadbalancer_current_ssl_connectionsgaugeТекущее количество активных SSL-соединений
octavia_loadbalancer_ssl_connections_totalcounterОбщее количество открытых SSL-соединений
octavia_loadbalancer_current_connection_rategaugeТекущее количество соединений в секунду за последнюю секунду
octavia_loadbalancer_limit_connection_rategaugeНастроенное максимальное количество соединений в секунду
octavia_loadbalancer_max_connection_rategaugeМаксимальное наблюдаемое количество соединений в секунду
octavia_loadbalancer_current_session_rategaugeТекущее количество сессий в секунду за последнюю секунду
octavia_loadbalancer_limit_session_rategaugeНастроенное максимальное количество сессий в секунду
octavia_loadbalancer_max_session_rategaugeМаксимальное наблюдаемое количество сессий в секунду
octavia_loadbalancer_current_ssl_rategaugeТекущее количество SSL-сессий в секунду за последнюю секунду
octavia_loadbalancer_limit_ssl_rategaugeНастроенное максимальное количество SSL-сессий в секунду
octavia_loadbalancer_max_ssl_rategaugeМаксимальное наблюдаемое количество SSL-сессий в секунду
octavia_loadbalancer_current_frontend_ssl_key_rategaugeТекущее время декодирования SSL-ключа на фронтенде в секунду за последнюю секунду
octavia_loadbalancer_max_frontend_ssl_key_rategaugeМаксимальное наблюдаемое время декодирования SSL-ключа на фронтенде в секунду
octavia_loadbalancer_current_backend_ssl_key_rategaugeТекущее время декодирования SSL-ключа на бэкенде в секунду за последнюю секунду
octavia_loadbalancer_max_backend_ssl_key_rategaugeМаксимальное наблюдаемое время декодирования SSL-ключа на бэкенде в секунду
octavia_loadbalancer_ssl_cache_lookups_totalcounterОбщее количество поисков в кеше SSL-сессий
octavia_loadbalancer_ssl_cache_misses_totalcounterОбщее количество потерь в кеше SSL-сессий
octavia_loadbalancer_http_comp_bytes_in_totalcounterКоличество байт в секунду до сжатия HTTP за последнюю секунду
octavia_loadbalancer_http_comp_bytes_out_totalcounterКоличество байт в секунду после сжатия HTTP за последнюю секунду
octavia_loadbalancer_limit_http_compgaugeНастроенная максимальная степень сжатия входных данных в байтах
octavia_loadbalancer_listenersgaugeКоличество активных слушателей (listener)
octavia_loadbalancer_dropped_logs_totalcounterОбщее количество удаленных логов