Расширение HAProxy

Материал из Документация Ключ-АСТРОМ
Версия от 02:48, 2 октября 2026; Azubarev (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Расширение HAProxy предназначено для удалённого мониторинга балансировщиков HAProxy в Ключ-АСТРОМ. Данные собираются через Runtime API либо HTTP-страницу статистики.

Возможности

Расширение позволяет:

  • контролировать доступность HAProxy;
  • отслеживать состояние frontend, backend и server;
  • контролировать количество и использование сессий;
  • анализировать очереди, запросы и соединения;
  • отслеживать HTTP-ответы по классам 2xx, 3xx, 4xx и 5xx;
  • выявлять ошибки и прерванные соединения;
  • контролировать объём входящего и исходящего трафика;
  • получать общую информацию о процессе HAProxy;
  • автоматически создавать сущности HAProxy и связи между ними;
  • отображать данные на готовой обзорной панели.

Архитектура

Расширение выполняется на АктивномШлюзе и удалённо подключается к HAProxy одним из способов:

  • через TCP-сокет Runtime API — рекомендуемый вариант;
  • через HTTP-страницу статистики в формате CSV.

На сервер HAProxy не требуется устанавливать ЕдиныйАгент или дополнительные компоненты.

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

Требования

Для работы расширения необходимы:

  • Ключ-АСТРОМ версии 1.313.0 или новее;
  • АктивныйШлюз с EEC версии 1.313.0 или новее;
  • Python версии 3.10 или новее на стороне EEC;
  • сетевой доступ от АктивногоШлюза до HAProxy;
  • доступ к TCP-сокету Runtime API либо HTTP-странице статистики HAProxy.

Одна конфигурация расширения может содержать до 200 точек подключения.

Подготовка HAProxy

Вариант 1. Runtime API

Подключение через Runtime API является рекомендуемым, поскольку предоставляет наиболее полный набор данных, включая общую информацию о процессе HAProxy.

В секции global файла конфигурации HAProxy добавьте TCP-сокет статистики:

global
    stats socket ipv4@192.0.2.10:9000 level user

Замените 192.0.2.10 на адрес интерфейса HAProxy, доступный с АктивногоШлюза.

Порт Runtime API должен отличаться от портов, на которых HAProxy принимает пользовательский HTTP- или HTTPS-трафик.

После изменения конфигурации проверьте её и перезапустите либо перезагрузите HAProxy.

Проверить доступ к Runtime API можно с АктивногоШлюза:

printf 'show info; show stat\n' | nc 192.0.2.10 9000

В ответ должна вернуться информация о процессе HAProxy и CSV-таблица статистики.

Рекомендуется разрешить подключение к порту Runtime API только с адресов АктивныхШлюзов с помощью межсетевого экрана.

Вариант 2. HTTP-статистика

Для сбора данных по HTTP можно настроить отдельную страницу статистики:

listen stats
    bind 192.0.2.10:8404
    mode http
    stats enable
    stats uri /stats
    stats refresh 10s
    stats auth monitoring:strong-password

Замените адрес, имя пользователя и пароль на значения, принятые в вашей инфраструктуре.

В конфигурации расширения необходимо указать адрес без суффикса ;csv:

http://192.0.2.10:8404/stats

При выполнении запроса расширение автоматически добавляет суффикс ;csv:

http://192.0.2.10:8404/stats;csv

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

curl -u 'monitoring:<password>' \
  'http://192.0.2.10:8404/stats;csv'

В ответ должна вернуться статистика HAProxy в формате CSV.

В режиме HTTP расширение получает статистику frontend, backend и server, однако общая информация о процессе из набора Info недоступна. Для полного набора данных используйте Runtime API.

Установка расширения

  1. Откройте раздел управления расширениями в Ключ-АСТРОМ.
  2. Загрузите архив расширения HAProxy.
  3. Дождитесь завершения проверки и активации расширения.
  4. Убедитесь, что для расширения доступен АктивныйШлюз с установленным EEC.
  5. Откройте конфигурацию расширения и создайте точку подключения.

Настройка точки подключения

При создании конфигурации выберите способ подключения.

Подключение через Runtime API

Для подключения через TCP-сокет заполните следующие параметры:

Параметр Описание
Включено Разрешает или приостанавливает сбор данных для точки подключения.
Использовать HTTP Отключите параметр для работы через Runtime API.
Сервер HAProxy Имя узла или IP-адрес сервера HAProxy.
Порт HAProxy Порт TCP-сокета Runtime API. Значение по умолчанию — 9000.
Интервал сбора Период между запусками сбора, в минутах. Допустимый диапазон — от 1 до 1440.

Пример:

Использовать HTTP: нет
Сервер HAProxy: haproxy.example.local
Порт HAProxy: 9000
Интервал сбора: 1 минута

Подключение через HTTP

Для подключения к странице статистики заполните следующие параметры:

Параметр Описание
Включено Разрешает или приостанавливает сбор данных для точки подключения.
Использовать HTTP Включите параметр для работы через HTTP-статистику.
Адрес HAProxy Полный адрес страницы статистики, например http://haproxy.example.local:8404/stats.
Использовать хранилище учётных данных Позволяет получить имя пользователя и пароль из хранилища учётных данных.
Идентификатор учётных данных Идентификатор записи в хранилище учётных данных.
Имя пользователя Имя пользователя HTTP Basic Authentication. Если поле не заполнено, запрос выполняется без аутентификации.
Пароль Пароль пользователя HTTP Basic Authentication.
Интервал сбора Период между запусками сбора, в минутах. Допустимый диапазон — от 1 до 1440.

Пример:

Использовать HTTP: да
Адрес HAProxy: http://haproxy.example.local:8404/stats
Имя пользователя: monitoring
Пароль: <password>
Интервал сбора: 1 минута

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

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

Для расширения можно выбрать уровень журналирования:

Значение Назначение
INFO Стандартный уровень журналирования. Рекомендуется для постоянной работы.
DEBUG Подробное журналирование для диагностики проблем. После устранения проблемы рекомендуется вернуть уровень INFO.

Наборы функций

Метрики расширения распределены по следующим наборам функций:

Набор Описание Количество метрик
default Доступность точки подключения HAProxy. 1
Info Общая информация о процессе HAProxy, времени работы, подключениях, потоках, памяти и внутренних ресурсах. 51
Queuing Текущая и максимальная длина очереди, среднее и максимальное время ожидания. 4
Request Текущая и максимальная скорость обработки запросов. 2
Response Среднее и максимальное время ответа и полное время обработки. 4
Sessions Текущие, максимальные и предельные значения сессий, а также процент использования лимита. 4
Rate Текущая и максимальная скорость обработки операций. 2
Aborts Соединения, прерванные клиентом или сервером. 2
Connection Время установления соединений и скорость создания соединений. 4
HTTP responses Количество ответов HTTP классов 2xx, 3xx, 4xx и 5xx. 4
Errors Ошибки запросов, ответов и соединений, а также отклонённые запросы и ответы. 5
Bytes Количество принятых и переданных байт. 2

Всего расширение содержит 85 метрик, включая метрику доступности.

Набор default рекомендуется оставлять включённым во всех конфигурациях.

Контролируемые показатели

Доступность

Метрика доступности показывает, смог ли АктивныйШлюз подключиться к HAProxy и получить статистику:

  • 100 — данные успешно получены;
  • 0 — произошла ошибка подключения или получения данных.

Метрика отражает доступность HAProxy с точки зрения АктивногоШлюза и не является результатом проверки доступности пользовательских приложений через балансировщик.

Общая информация

При подключении через Runtime API расширение получает:

  • время работы HAProxy;
  • количество процессов и потоков;
  • количество активных заданий, слушателей и пиров;
  • текущие и максимальные подключения;
  • загрузку внутренних ресурсов;
  • использование пулов памяти;
  • использование SSL;
  • количество отброшенных сообщений журнала;
  • ошибки разрешения имён;
  • использование сокетов и каналов;
  • показатели сжатия;
  • объём переданных данных.

Сессии и очереди

Расширение контролирует:

  • текущие и максимальные сессии;
  • настроенный предел сессий;
  • процент использования лимита;
  • текущую и максимальную очередь;
  • среднее и максимальное время ожидания в очереди.

HTTP-ответы и ошибки

Для сервисов HAProxy собираются:

  • ответы классов 2xx, 3xx, 4xx и 5xx;
  • ошибки запросов и ответов;
  • отклонённые запросы и ответы;
  • ошибки установления соединений;
  • соединения, прерванные клиентом или сервером.

Топология

Расширение создаёт следующие типы сущностей:

Сущность Описание
HAProxy server Экземпляр HAProxy, к которому подключается АктивныйШлюз.
HAProxy service Frontend, backend или server, полученный из статистики HAProxy.

Сущность сервиса связывается с соответствующим экземпляром HAProxy отношением «дочерняя сущность».

Для сервисов сохраняются следующие свойства:

  • имя proxy;
  • имя сервиса;
  • состояние;
  • результат проверки работоспособности;
  • код проверки;
  • адрес и порт экземпляра HAProxy.

Обзорная панель

В пакет расширения входит готовая панель HAProxy Overview.

Она позволяет анализировать:

  • доступность экземпляров HAProxy;
  • состояние сервисов;
  • текущие сессии и использование их лимита;
  • очереди;
  • скорость запросов и соединений;
  • распределение HTTP-ответов;
  • ошибки и прерванные соединения;
  • объём входящего и исходящего трафика.

Пакет содержит панель как в классическом формате, так и в формате документов.

Оповещения

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

  • недоступность HAProxy;
  • высокий процент использования лимита сессий;
  • продолжительный рост очереди;
  • увеличение времени ожидания;
  • рост количества ответов 5xx;
  • увеличение количества ошибок соединений;
  • рост количества соединений, прерванных клиентом или сервером.

Пороговые значения следует выбирать с учётом обычной нагрузки конкретного экземпляра HAProxy.

Проверка работы

После сохранения конфигурации:

  1. Убедитесь, что конфигурация имеет состояние «Работает».
  2. Откройте страницу созданной сущности HAProxy.
  3. Проверьте наличие метрики доступности.
  4. Убедитесь, что созданы дочерние сущности сервисов.
  5. Откройте панель HAProxy Overview и выберите нужный экземпляр.

Первые данные обычно появляются после завершения первого интервала сбора.

Устранение неисправностей

Нет подключения к Runtime API

Проверьте:

  • адрес и порт TCP-сокета;
  • доступность порта с АктивногоШлюза;
  • правила межсетевого экрана;
  • наличие директивы stats socket в секции global;
  • возможность выполнить команды show info и show stat.

HTTP возвращает ошибку

Проверьте:

  • правильность адреса страницы статистики;
  • доступность адреса с АктивногоШлюза;
  • имя пользователя и пароль;
  • доступность URL с суффиксом ;csv;
  • отсутствие перенаправления на страницу интерактивного входа.

Доступность есть, но набор Info пуст

Набор Info формируется из команды show info и доступен при подключении через Runtime API. Переключите точку подключения с HTTP на TCP-сокет.

Отсутствует часть сервисов или метрик

Набор доступных полей статистики зависит от версии и конфигурации HAProxy. Убедитесь, что необходимые frontend, backend и server присутствуют в ответе команды show stat или на странице /stats;csv.

Требуется подробная диагностика

Временно установите уровень журналирования DEBUG, повторите сбор данных и изучите журнал расширения на АктивномШлюзе. После завершения диагностики верните уровень INFO.

История изменений

Версия Изменения
1.0.5
  • Версия расширения для Ключ-АСТРОМ 1.313.0+.
  • Добавлен удалённый сбор данных через Runtime API и HTTP-страницу статистики HAProxy.
  • Добавлены метрики процесса, сервисов, сессий, очередей, запросов, соединений, HTTP-ответов, ошибок и трафика.
  • Добавлено автоматическое создание сущностей экземпляров и сервисов HAProxy.
  • Добавлены классическая обзорная панель и панель в формате документов.
  • Добавлена поддержка хранения учётных данных HTTP-подключения в хранилище учётных данных.