Расширение HAProxy
Расширение 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.
Установка расширения
- Откройте раздел управления расширениями в Ключ-АСТРОМ.
- Загрузите архив расширения HAProxy.
- Дождитесь завершения проверки и активации расширения.
- Убедитесь, что для расширения доступен АктивныйШлюз с установленным EEC.
- Откройте конфигурацию расширения и создайте точку подключения.
Настройка точки подключения
При создании конфигурации выберите способ подключения.
Подключение через 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.
Проверка работы
После сохранения конфигурации:
- Убедитесь, что конфигурация имеет состояние «Работает».
- Откройте страницу созданной сущности HAProxy.
- Проверьте наличие метрики доступности.
- Убедитесь, что созданы дочерние сущности сервисов.
- Откройте панель 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 |
|