Расширение HAProxy: различия между версиями

Материал из Документация Ключ-АСТРОМ
Новая страница: «= Расширение HAProxy = Удаленный мониторинг балансировщика нагрузки '''HAProxy''' с использованием сокетных или '''HTTP'''-соединений. == Начать == === Обзор === Запускайте расширение '''HAProxy''' удаленно с вашего АктивногоШлюза. '''HAProxy''' можно настроить на использование ре...»
 
Нет описания правки
 
Строка 1: Строка 1:
= Расширение HAProxy =
Расширение '''HAProxy''' предназначено для удалённого мониторинга балансировщиков HAProxy в Ключ-АСТРОМ. Данные собираются через Runtime API либо HTTP-страницу статистики.
Удаленный мониторинг балансировщика нагрузки '''HAProxy''' с использованием сокетных или '''HTTP'''-соединений.


== Начать ==
== Возможности ==


=== Обзор ===
Расширение позволяет:
Запускайте расширение '''HAProxy''' удаленно с вашего АктивногоШлюза.


'''HAProxy''' можно настроить на использование режима сокета или режима '''HTTP'''. Каждую минуту данные собираются с вашего сервера '''HAProxy''' и отправляются в Ключ-АСТРОМ.
* контролировать доступность HAProxy;
* отслеживать состояние frontend, backend и server;
* контролировать количество и использование сессий;
* анализировать очереди, запросы и соединения;
* отслеживать HTTP-ответы по классам <code>2xx</code>, <code>3xx</code>, <code>4xx</code> и <code>5xx</code>;
* выявлять ошибки и прерванные соединения;
* контролировать объём входящего и исходящего трафика;
* получать общую информацию о процессе HAProxy;
* автоматически создавать сущности HAProxy и связи между ними;
* отображать данные на готовой обзорной панели.


Используйте встроенный в продукт Центр управления, чтобы указать необходимую конфигурацию устройства для вашего экземпляра '''HAProxy''' и активировать это расширение в вашей среде.
== Архитектура ==


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


=== Мониторинг служб и сервисов HAProxy ===
* через TCP-сокет Runtime API — рекомендуемый вариант;
Необходимо понимать состояние сервисов, например, отслеживать количество отклоненных запросов или запросов с ошибками. Включите оповещения об обнаруженных аномалиях.
* через HTTP-страницу статистики в формате CSV.


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


* При использовании режима сокета необходимо установить сокетное соединение между АктивнымШлюзом и вашим сервером '''HAProxy'''.
Сбор данных по умолчанию выполняется каждую минуту. Интервал можно изменить в конфигурации точки подключения.
* Для получения статистических метрик (<code>haproxy.stats</code>), вместо режима <code>HTTP</code> необходимо использовать режим <code>socket</code>.
** ПРИМЕЧАНИЕ: Порт <code>socket</code> отличается от порта <code>HTTP</code>.
* Для всех ключей метрик, содержащих указанный режим, <code>.stats.</code> требуется использование соответствующего параметра <code>socket</code>. В противном случае набор функций <code>Info</code> включает метрики, которые можно получить с помощью указанного режима <code>HTTP</code>.


== Подробности ==
== Требования ==
В состав пакета расширений входят:


* Новая панель управления
Для работы расширения необходимы:
* Классическая приборная панель
* Определение топологии и взаимосвязей для серверов и служб '''HAProxy'''.
* Страницы унифицированного анализа для каждой сущности.


=== Лицензирование и расходы ===
* Ключ-АСТРОМ версии <code>1.313.0</code> или новее;
Использование расширения бесплатно. Плата взимается только за данные, которые обрабатывает расширение.
* АктивныйШлюз с EEC версии <code>1.313.0</code> или новее;
* Python версии <code>3.10</code> или новее на стороне EEC;
* сетевой доступ от АктивногоШлюза до HAProxy;
* доступ к TCP-сокету Runtime API либо HTTP-странице статистики HAProxy.


Расширение '''HAProxy''' обрабатывает пользовательские метрики, которые используют единицы данных ИИ ('''DDU''') (для классической лицензии Ключ-АСТРОМ) или метрики ('''DPS''') в зависимости от вашей модели лицензирования.
Одна конфигурация расширения может содержать до 200 точек подключения.


Это расширение запрашивает метрики каждую минуту. Чтобы оценить количество точек данных метрик, генерируемых конфигурацией расширения в минуту, используйте следующий список, который оценивает количество метрик для каждого набора функций и значение множителя в зависимости от того, по какому объекту разделена метрика. Сложите эти значения, чтобы оценить количество точек данных метрик, обрабатываемых в минуту.
== Подготовка HAProxy ==


* <code>default</code>: 1 x HAProxy сервер
=== Вариант 1. Runtime API ===
* <code>Aborts</code>: 2 x Сервис HAProxy
* <code>Bytes</code>: 2 x Сервис HAProxy
* <code>Connection</code>: 4 сервера HAProxy
* <code>Errors</code>: 5 x Сервис HAProxy
* <code>HTTP responses</code>: 4 x HAProxy Service
* <code>Info</code>: 51 x HAProxy Server
* <code>Queuing</code>: 4 x HAProxy Service
* <code>Rate</code>: 2 x Сервис HAProxy
* <code>Request</code>: 2 x Сервис HAProxy
* <code>Response</code>: 4 x HAProxy Service
* <code>Sessions</code>: 4 x HAProxy Service


==== Подписка на платформу Ключ-АСТРОМ ====
Подключение через Runtime API является рекомендуемым, поскольку предоставляет наиболее полный набор данных, включая общую информацию о процессе HAProxy.
В рамках подписки на платформу Ключ-АСТРОМ, при приеме метрик используются метрики в зависимости от количества принятых точек данных метрик.


Для расчета приблизительного годового потребления выполните следующую операцию: <code><metric data points per minute> * 60 minutes * 24 hours * 365 days</code>.
В секции <code>global</code> файла конфигурации HAProxy добавьте TCP-сокет статистики:


==== Классическая лицензия Ключ-АСТРОМ ====
<pre>
В классической модели лицензирования ввод метрик потребляет единицы данных ИИ ('''DDU''') со скоростью 0,001 '''DDU''' на одну точку данных метрики. Умножьте приведенную выше формулу для годового количества точек данных на 0,001, чтобы оценить годовое потребление '''DDU'''.
global
    stats socket ipv4@192.0.2.10:9000 level user
</pre>


Указанная выше стоимость '''DDU''' не включает возможные события лога или пользовательские события, запускаемые расширением. Для получения дополнительной информации см. раздел «События DDU».
Замените <code>192.0.2.10</code> на адрес интерфейса HAProxy, доступный с АктивногоШлюза.


== Наборы функций ==
Порт Runtime API должен отличаться от портов, на которых HAProxy принимает пользовательский HTTP- или HTTPS-трафик.
При активации расширения с помощью конфигурации мониторинга вы можете ограничить мониторинг одним из наборов функций. Для корректной работы расширение должно собирать как минимум одну метрику после активации.
 
После изменения конфигурации проверьте её и перезапустите либо перезагрузите HAProxy.
 
Проверить доступ к Runtime API можно с АктивногоШлюза:
 
<pre>
printf 'show info; show stat\n' | nc 192.0.2.10 9000
</pre>
 
В ответ должна вернуться информация о процессе HAProxy и CSV-таблица статистики.
 
Рекомендуется разрешить подключение к порту Runtime API только с адресов АктивныхШлюзов с помощью межсетевого экрана.
 
=== Вариант 2. HTTP-статистика ===
 
Для сбора данных по HTTP можно настроить отдельную страницу статистики:
 
<pre>
listen stats
    bind 192.0.2.10:8404
    mode http
    stats enable
    stats uri /stats
    stats refresh 10s
    stats auth monitoring:strong-password
</pre>
 
Замените адрес, имя пользователя и пароль на значения, принятые в вашей инфраструктуре.
 
В конфигурации расширения необходимо указать адрес без суффикса <code>;csv</code>:
 
<pre>
http://192.0.2.10:8404/stats
</pre>
 
При выполнении запроса расширение автоматически добавляет суффикс <code>;csv</code>:
 
<pre>
http://192.0.2.10:8404/stats;csv
</pre>
 
Проверить доступность статистики можно командой:
 
<pre>
curl -u 'monitoring:&lt;password&gt;' \
  'http://192.0.2.10:8404/stats;csv'
</pre>
 
В ответ должна вернуться статистика HAProxy в формате CSV.
 
В режиме HTTP расширение получает статистику frontend, backend и server, однако общая информация о процессе из набора <code>Info</code> недоступна. Для полного набора данных используйте Runtime API.
 
== Установка расширения ==
 
# Откройте раздел управления расширениями в Ключ-АСТРОМ.
# Загрузите архив расширения HAProxy.
# Дождитесь завершения проверки и активации расширения.
# Убедитесь, что для расширения доступен АктивныйШлюз с установленным EEC.
# Откройте конфигурацию расширения и создайте точку подключения.
 
== Настройка точки подключения ==


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


Все метрики, не отнесенные ни к одному набору функций, считаются значениями по умолчанию и всегда отображаются в отчете.
=== Подключение через Runtime API ===


Метрика наследует набор характеристик подгруппы, которая, в свою очередь, наследует набор характеристик группы. Кроме того, набор характеристик, определенный на уровне метрики, переопределяет набор характеристик, определенный на уровне подгруппы, который, в свою очередь, переопределяет набор характеристик, определенный на уровне группы.
Для подключения через TCP-сокет заполните следующие параметры:


=== Rate ===
{| class="wikitable"
{| class="wikitable"
!Название метрики
! Параметр
!Ключ метрики
! Описание
!Описание
|-
|-
|Session rate
| Включено
|haproxy.stats.rate
| Разрешает или приостанавливает сбор данных для точки подключения.
|Количество сессий в секунду
|-
|-
|Max session rate
| Использовать HTTP
|haproxy.stats.rate_max
| Отключите параметр для работы через Runtime API.
|Максимальное количество сессий в секунду
|}
 
=== Connection ===
{| class="wikitable"
!Название метрики
!Ключ метрики
!Описание
|-
|-
|Connect time
| Сервер HAProxy
|haproxy.stats.connect_time
| Имя узла или IP-адрес сервера HAProxy.
|Среднее время подключения в мс.
|-
|-
|Max connect time
| Порт HAProxy
|haproxy.stats.connect_time_max
| Порт TCP-сокета Runtime API. Значение по умолчанию — <code>9000</code>.
|Максимальное время соединения в миллисекундах.
|-
|-
|Connection rate
| Интервал сбора
|haproxy.stats.connection_rate
| Период между запусками сбора, в минутах. Допустимый диапазон — от <code>1</code> до <code>1440</code>.
|Количество соединений в секунду
|-
|Max connection rate
|haproxy.stats.connection_rate_max
|Максимальное количество подключений в секунду.
|}
|}


=== Sessions ===
Пример:
{| class="wikitable"
 
!Название метрики
<pre>
!Ключ метрики
Использовать HTTP: нет
!Описание
Сервер HAProxy: haproxy.example.local
|-
Порт HAProxy: 9000
|Sessions
Интервал сбора: 1 минута
|haproxy.stats.sessions
</pre>
|Текущее количество сессий.
 
|-
=== Подключение через HTTP ===
|Session limit
|haproxy.stats.sessions_limit
|Установленное ограничение на количество сессий.
|-
|Session utilization
|haproxy.stats.session_utilization
|Процент использованных сессий, превышающий лимит
|-
|Max sessions
|haproxy.stats.sessions_max
|Максимальное количество сессий.
|}


=== default ===
Для подключения к странице статистики заполните следующие параметры:
{| class="wikitable"
!Название метрики
!Ключ метрики
!Описание
|-
|Availability
|haproxy.server.availability
|Подключение АктивногоШлюза к серверу '''HAProxy'''. Это значение отражает доступность из данного представления расширения.
|}


=== Info - Process ===
{| class="wikitable"
{| class="wikitable"
!Название метрики
! Параметр
!Ключ метрики
! Описание
!Описание
|-
|-
|Uptime
| Включено
|haproxy.info.uptime
| Разрешает или приостанавливает сбор данных для точки подключения.
|Текущее время безотказной работы, возвращаемое командой show info.
|-
|-
|Processes
| Использовать HTTP
|haproxy.info.processes
| Включите параметр для работы через HTTP-статистику.
|Количество процессов, возвращаемое командой show info.
|-
|-
|Process number
| Адрес HAProxy
|haproxy.info.process_num
| Полный адрес страницы статистики, например <code>http://haproxy.example.local:8404/stats</code>.
|Номер процесса, возвращаемый командой show info.
|-
|-
|Threads
| Использовать хранилище учётных данных
|haproxy.info.threads
| Позволяет получить имя пользователя и пароль из хранилища учётных данных.
|Количество запущенных потоков
|-
|-
|Current connections
| Идентификатор учётных данных
|haproxy.info.current_connections
| Идентификатор записи в хранилище учётных данных.
|Количество текущих подключений
|-
|-
|Max connections
| Имя пользователя
|haproxy.info.max_connections
| Имя пользователя HTTP Basic Authentication. Если поле не заполнено, запрос выполняется без аутентификации.
|Наибольшая ценность связей
|-
|-
|Hard max connections
| Пароль
|haproxy.info.hard_max_connections
| Пароль пользователя HTTP Basic Authentication.
|Максимальное количество жестких соединений
|-
|-
|Total connections
| Интервал сбора
|haproxy.info.connections_total
| Период между запусками сбора, в минутах. Допустимый диапазон — от <code>1</code> до <code>1440</code>.
|Общее количество подключений
|-
|Total requests
|haproxy.info.requests_total
|Общее количество запросов
|-
|Current tasks
|haproxy.info.current_tasks
|Количество текущих задач
|-
|Idle time percent
|haproxy.info.idle_time_percent
|Процент времени простоя
|-
|Max memory bytes
|haproxy.info.max_memory_bytes
|Максимальный объем используемой памяти
|-
|Pool allocated bytes
|haproxy.info.pool_allocated_bytes
|Количество байтов, выделенных пулу
|-
|Pool used bytes
|haproxy.info.pool_used_bytes
|Количество байтов, используемых пулом
|-
|Pool failures total
|haproxy.info.pool_failures_total
|Общее количество отказов пула
|-
|Failed resolutions
|haproxy.info.failed_resolutions
|Количество неудачных решений
|-
|Dropped logs
|haproxy.info.dropped_logs
|Количество упавших логов
|}
|}


=== Queuing ===
Пример:
 
<pre>
Использовать HTTP: да
Адрес HAProxy: http://haproxy.example.local:8404/stats
Имя пользователя: monitoring
Пароль: &lt;password&gt;
Интервал сбора: 1 минута
</pre>
 
Для производственной среды рекомендуется хранить учётные данные в хранилище учётных данных, а не непосредственно в конфигурации расширения.
 
== Общие параметры ==
 
Для расширения можно выбрать уровень журналирования:
 
{| class="wikitable"
{| class="wikitable"
!Название метрики
! Значение
!Ключ метрики
! Назначение
!Описание
|-
|-
|Queued requests
| <code>INFO</code>
|haproxy.stats.queued
| Стандартный уровень журналирования. Рекомендуется для постоянной работы.
|Текущее количество запросов в очереди. Для бэкэнда отображается число запросов в очереди без назначенного сервера.
|-
|-
|Max queued requests
| <code>DEBUG</code>
|haproxy.stats.queued_max
| Подробное журналирование для диагностики проблем. После устранения проблемы рекомендуется вернуть уровень <code>INFO</code>.
|Максимальное количество запросов в очереди в минуту
|-
|Queue time
|haproxy.stats.queue_time
|Среднее время ожидания в очереди в миллисекундах за последние 1024 запроса.
|-
|Max queue time
|haproxy.stats.queue_time_max
|Максимальное время ожидания в очереди
|}
|}


=== Aborts ===
== Наборы функций ==
{| class="wikitable"
!Название метрики
!Ключ метрики
!Описание
|-
|Client aborts
|haproxy.stats.client_aborts
|Количество передач данных, прерванных клиентом.
|-
|Server aborts
|haproxy.stats.server_aborts
|Количество передач данных, прерванных сервером.
|}


=== Bytes ===
Метрики расширения распределены по следующим наборам функций:
{| class="wikitable"
!Название метрики
!Ключ метрики
!Описание
|-
|Bytes in
|haproxy.stats.bytes_in
|Переданы входящие байты
|-
|Bytes out
|haproxy.stats.bytes_out
|Переданы исходящие байты
|}


=== Info - Internal ===
{| class="wikitable"
{| class="wikitable"
!Название метрики
! Набор
!Ключ метрики
! Описание
!Описание
! Количество метрик
|-
|Active jobs
|haproxy.info.active_jobs
|Количество заданий, возвращенных командой show info.
|-
|Unstoppable jobs
|haproxy.info.unstoppable_jobs
|Текущее количество неостановимых заданий в текущем рабочем процессе (основные соединения)
|-
|Active listeners
|haproxy.info.active_listeners
|Количество активных слушателей
|-
|Active peers
|haproxy.info.active_peers
|Количество активных пользователей
|-
|-
|Connected peers
| <code>default</code>
|haproxy.info.connected_peers
| Доступность точки подключения HAProxy.
|Количество подключенных узлов.
| 1
|-
|-
|Busy polling
| <code>Info</code>
|haproxy.info.busy_polling
| Общая информация о процессе HAProxy, времени работы, подключениях, потоках, памяти и внутренних ресурсах.
|Количество занятых избирательных участков
| 51
|-
|-
|Session rate
| <code>Queuing</code>
|haproxy.info.session_rate
| Текущая и максимальная длина очереди, среднее и максимальное время ожидания.
|Количество сессий в секунду
| 4
|-
|-
|Session rate limit
| <code>Request</code>
|haproxy.info.session_rate_limit
| Текущая и максимальная скорость обработки запросов.
|Ограничение количества сессий
| 2
|-
|-
|Max session rate
| <code>Response</code>
|haproxy.info.max_session_rate
| Среднее и максимальное время ответа и полное время обработки.
|Максимальная частота сеансов
| 4
|-
|-
|Connection rate limit
| <code>Sessions</code>
|haproxy.info.connection_rate_limit
| Текущие, максимальные и предельные значения сессий, а также процент использования лимита.
|Ограничение количества подключений.
| 4
|-
|-
|Max connection rate
| <code>Rate</code>
|haproxy.info.max_connection_rate
| Текущая и максимальная скорость обработки операций.
|Максимальная скорость соединений
| 2
|-
|-
|Max sockets
| <code>Aborts</code>
|haproxy.info.max_sockets
| Соединения, прерванные клиентом или сервером.
|Максимальное количество используемых розеток
| 2
|-
|-
|Pipes used
| <code>Connection</code>
|haproxy.info.pipes_used
| Время установления соединений и скорость создания соединений.
|Количество используемых труб
| 4
|-
|-
|Pipes free
| <code>HTTP responses</code>
|haproxy.info.pipes_free
| Количество ответов HTTP классов <code>2xx</code>, <code>3xx</code>, <code>4xx</code> и <code>5xx</code>.
|Количество свободных труб
| 4
|-
|-
|Max pipes
| <code>Errors</code>
|haproxy.info.max_pipes
| Ошибки запросов, ответов и соединений, а также отклонённые запросы и ответы.
|Максимальное количество используемых труб
| 5
|-
|-
|Bytes out rate
| <code>Bytes</code>
|haproxy.info.bytes_out_rate
| Количество принятых и переданных байт.
|Средняя скорость вывода байтов
| 2
|-
|Bytes out total
|haproxy.info.bytes_out_total
|Количество отправленных байтов
|-
|Spliced bytes out total
|haproxy.info.spliced_bytes_out_total
|Общее количество байтов, переданных текущим рабочим процессом через канал ядра с момента запуска.
|-
|Compress bits in
|haproxy.info.compress_bits_in
|Входящие сжатые данные в битах в секунду
|-
|Compress bits out
|haproxy.info.compress_bits_out
|Исходящие сжатые данные в битах в секунду
|-
|Compress bits rate limit
|haproxy.info.compress_bits_rate_limit
|Ограничение скорости передачи сжатых данных в битах в секунду.
|}
|}


=== Info - SSL ===
Всего расширение содержит 85 метрик, включая метрику доступности.
 
Набор <code>default</code> рекомендуется оставлять включённым во всех конфигурациях.
 
== Контролируемые показатели ==
 
=== Доступность ===
 
Метрика доступности показывает, смог ли АктивныйШлюз подключиться к HAProxy и получить статистику:
 
* <code>100</code> — данные успешно получены;
* <code>0</code> — произошла ошибка подключения или получения данных.
 
Метрика отражает доступность HAProxy с точки зрения АктивногоШлюза и не является результатом проверки доступности пользовательских приложений через балансировщик.
 
=== Общая информация ===
 
При подключении через Runtime API расширение получает:
 
* время работы HAProxy;
* количество процессов и потоков;
* количество активных заданий, слушателей и пиров;
* текущие и максимальные подключения;
* загрузку внутренних ресурсов;
* использование пулов памяти;
* использование SSL;
* количество отброшенных сообщений журнала;
* ошибки разрешения имён;
* использование сокетов и каналов;
* показатели сжатия;
* объём переданных данных.
 
=== Сессии и очереди ===
 
Расширение контролирует:
 
* текущие и максимальные сессии;
* настроенный предел сессий;
* процент использования лимита;
* текущую и максимальную очередь;
* среднее и максимальное время ожидания в очереди.
 
=== HTTP-ответы и ошибки ===
 
Для сервисов HAProxy собираются:
 
* ответы классов <code>2xx</code>, <code>3xx</code>, <code>4xx</code> и <code>5xx</code>;
* ошибки запросов и ответов;
* отклонённые запросы и ответы;
* ошибки установления соединений;
* соединения, прерванные клиентом или сервером.
 
== Топология ==
 
Расширение создаёт следующие типы сущностей:
 
{| class="wikitable"
{| class="wikitable"
!Название метрики
! Сущность
!Ключ метрики
! Описание
!Описание
|-
|-
|Current SSL connections
| HAProxy server
|haproxy.info.current_ssl_connections
| Экземпляр HAProxy, к которому подключается АктивныйШлюз.
|Количество текущих SSL-соединений
|-
|-
|Max SSL connections
| HAProxy service
|haproxy.info.max_ssl_connections
| Frontend, backend или server, полученный из статистики HAProxy.
|Максимальное количество SSL-соединений
|-
|SSL connections total
|haproxy.info.ssl_connections_total
|Общее количество SSL-конечных точек в этом рабочем процессе с момента запуска (фронт + бэк)
|-
|SSL rate
|haproxy.info.current_ssl_rate
|Частота SSL-запросов.
|-
|Limit SSL rate
|haproxy.info.limit_ssl_rate
|Ограничение количества SSL-запросов.
|-
|Max SSL rate
|haproxy.info.max_ssl_rate
|Максимальная скорость SSL-запросов.
|-
|Frontend SSL key rate
|haproxy.info.current_frontend_ssl_key_rate
|Ключевой показатель частоты SSL-сессий на стороне клиента.
|-
|Max frontend SSL key rate
|haproxy.info.max_frontend_ssl_key_rate
|Максимальная скорость передачи SSL-ключей для внешнего интерфейса
|-
|Frontend SSL reuse
|haproxy.info.frontend_ssl_reuse
|Коэффициент повторного использования SSL-сессий на стороне клиента
|-
|Backend SSL key rate
|haproxy.info.current_backend_ssl_key_rate
|Ключевой показатель скорости SSL-сессий на бэкэнде.
|-
|Max backend SSL key rate
|haproxy.info.max_backend_ssl_key_rate
|Максимальная скорость передачи ключей в SSL-сессиях бэкэнда.
|-
|SSL cache lookups total
|haproxy.info.ssl_cache_lookups_total
|Общее количество запросов идентификатора SSL-сессии в кэше SSL-сессий на этом рабочем узле с момента запуска.
|-
|SSL cache misses total
|haproxy.info.ssl_cache_misses_total
|Общее количество запросов идентификатора SSL-сессии, которые не нашли сессию в кэше SSL-сессий на этом рабочем узле с момента его запуска.
|}
|}


=== HTTP responses ===
Сущность сервиса связывается с соответствующим экземпляром HAProxy отношением «дочерняя сущность».
{| class="wikitable"
 
!Название метрики
Для сервисов сохраняются следующие свойства:
!Ключ метрики
 
!Описание
* имя proxy;
|-
* имя сервиса;
|HTTP 2xx responses
* состояние;
|haproxy.stats.http_2xx_responses
* результат проверки работоспособности;
|Количество HTTP-ответов 2xx
* код проверки;
|-
* адрес и порт экземпляра HAProxy.
|HTTP 3xx responses
 
|haproxy.stats.http_3xx_responses
== Обзорная панель ==
|Количество HTTP-ответов 3xx
 
|-
В пакет расширения входит готовая панель '''HAProxy Overview'''.
|HTTP 4xx responses
 
|haproxy.stats.http_4xx_responses
Она позволяет анализировать:
|Количество HTTP-ответов 4xx
 
|-
* доступность экземпляров HAProxy;
|HTTP 5xx responses
* состояние сервисов;
|haproxy.stats.http_5xx_responses
* текущие сессии и использование их лимита;
|Количество HTTP-ответов 5xx
* очереди;
|}
* скорость запросов и соединений;
* распределение HTTP-ответов;
* ошибки и прерванные соединения;
* объём входящего и исходящего трафика.
 
Пакет содержит панель как в классическом формате, так и в формате документов.
 
== Оповещения ==
 
При необходимости можно создать правила обнаружения аномалий для следующих показателей:
 
* недоступность HAProxy;
* высокий процент использования лимита сессий;
* продолжительный рост очереди;
* увеличение времени ожидания;
* рост количества ответов <code>5xx</code>;
* увеличение количества ошибок соединений;
* рост количества соединений, прерванных клиентом или сервером.
 
Пороговые значения следует выбирать с учётом обычной нагрузки конкретного экземпляра HAProxy.
 
== Проверка работы ==
 
После сохранения конфигурации:
 
# Убедитесь, что конфигурация имеет состояние «Работает».
# Откройте страницу созданной сущности HAProxy.
# Проверьте наличие метрики доступности.
# Убедитесь, что созданы дочерние сущности сервисов.
# Откройте панель '''HAProxy Overview''' и выберите нужный экземпляр.
 
Первые данные обычно появляются после завершения первого интервала сбора.
 
== Устранение неисправностей ==
 
=== Нет подключения к Runtime API ===
 
Проверьте:
 
* адрес и порт TCP-сокета;
* доступность порта с АктивногоШлюза;
* правила межсетевого экрана;
* наличие директивы <code>stats socket</code> в секции <code>global</code>;
* возможность выполнить команды <code>show info</code> и <code>show stat</code>.
 
=== HTTP возвращает ошибку ===
 
Проверьте:
 
* правильность адреса страницы статистики;
* доступность адреса с АктивногоШлюза;
* имя пользователя и пароль;
* доступность URL с суффиксом <code>;csv</code>;
* отсутствие перенаправления на страницу интерактивного входа.
 
=== Доступность есть, но набор Info пуст ===
 
Набор <code>Info</code> формируется из команды <code>show info</code> и доступен при подключении через Runtime API. Переключите точку подключения с HTTP на TCP-сокет.
 
=== Отсутствует часть сервисов или метрик ===
 
Набор доступных полей статистики зависит от версии и конфигурации HAProxy. Убедитесь, что необходимые frontend, backend и server присутствуют в ответе команды <code>show stat</code> или на странице <code>/stats;csv</code>.
 
=== Требуется подробная диагностика ===


=== Response ===
Временно установите уровень журналирования <code>DEBUG</code>, повторите сбор данных и изучите журнал расширения на АктивномШлюзе. После завершения диагностики верните уровень <code>INFO</code>.
{| class="wikitable"
!Название метрики
!Ключ метрики
!Описание
|-
|Response time
|haproxy.stats.response_time
|Среднее время отклика в мс
|-
|Total time
|haproxy.stats.total_time
|Среднее общее время сеанса в миллисекундах.
|-
|Max response time
|haproxy.stats.response_time_max
|Максимальное значение времени отклика
|-
|Max total time
|haproxy.stats.total_time_max
|Максимальное общее время в миллисекундах.
|}


=== Request ===
== История изменений ==
{| class="wikitable"
!Название метрики
!Ключ метрики
!Описание
|-
|Request rate
|haproxy.stats.request_rate
|HTTP-запросов в секунду
|-
|Max request rate
|haproxy.stats.request_rate_max
|Максимальное количество запросов в секунду, зафиксированное в ходе наблюдений.
|}


=== Errors ===
{| class="wikitable"
{| class="wikitable"
!Название метрики
! Версия
!Ключ метрики
! Изменения
!Описание
|-
|Denied requests
|haproxy.stats.denied_requests
|Количество отклоненных запросов
|-
|Denied responses
|haproxy.stats.denied_responses
|Количество отклоненных ответов
|-
|Error requests
|haproxy.stats.error_requests
|Количество запросов с ошибками
|-
|Error responses
|haproxy.stats.error_responses
|Количество ошибочных ответов
|-
|-
|Connection errors
| 1.0.5
|haproxy.stats.connection_errors
|
|Количество запросов, при которых возникла ошибка подключения к бэкэнд-серверу.
* Версия расширения для Ключ-АСТРОМ <code>1.313.0+</code>.
* Добавлен удалённый сбор данных через Runtime API и HTTP-страницу статистики HAProxy.
* Добавлены метрики процесса, сервисов, сессий, очередей, запросов, соединений, HTTP-ответов, ошибок и трафика.
* Добавлено автоматическое создание сущностей экземпляров и сервисов HAProxy.
* Добавлены классическая обзорная панель и панель в формате документов.
* Добавлена поддержка хранения учётных данных HTTP-подключения в хранилище учётных данных.
|}
|}

Текущая версия от 02:48, 2 октября 2026

Расширение 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-подключения в хранилище учётных данных.