Перейти к содержимому
Skip to main content

Интеграция с HAProxy

info

Перевод в процессе / Translation in progress. See русская версия.

Интеграция собирает метрики HAProxy по фронтендам и бэкендам: число текущих и обработанных сессий, rate по 2xx/4xx/5xx, длины очередей, время ответа и статусы health-check. Агент опрашивает stats-endpoint HAProxy (CSV или admin-socket) в read-only режиме и не требует доступа к конфигу или перезапуску процесса.

Предварительные требования

  • HAProxy версии ≥ 2.4 запущен как системный сервис (systemd или Docker-контейнер).
  • В haproxy.cfg включён stats-endpoint на loopback-интерфейсе: либо HTTP-секция frontend stats с stats enable и stats uri /stats, либо unix-сокет stats socket /run/haproxy/admin.sock mode 660 level user.
  • Агент Flaree установлен на том же хосте (см. Установка systemd-сервиса) и имеет сетевой доступ к HTTP-порту stats или read-доступ к admin-сокету.
  • Токен агента и endpoint ingestion-шлюза заданы через переменные окружения ${FLAREE_TOKEN} и ${FLAREE_ENDPOINT}.
  • Для HTTP-stats с Basic Auth заведена отдельная read-only пара user:password; пароль передаётся через ${HAPROXY_STATS_AUTH} в формате <user:password>.

Минимальная конфигурация

Минимально — включить интеграцию и указать URL CSV-экспорта HAProxy:

# agent.yaml
integrations:
haproxy:
enabled: true
stats_url: http://127.0.0.1:8404/stats;csv
stats_auth: ${HAPROXY_STATS_AUTH}

Пример соответствующей секции haproxy.cfg, которая экспонирует stats на loopback:

# /etc/haproxy/haproxy.cfg
frontend stats
bind 127.0.0.1:8404
mode http
stats enable
stats uri /stats
stats refresh 10s
stats auth <REPLACE_ME>:<REPLACE_ME>

Полная конфигурация

Полный набор опций — интервал опроса, альтернативный admin-сокет, явный набор метрик и сбор per-backend:

# agent.yaml
integrations:
haproxy:
enabled: true

# HTTP stats CSV (используется, если задан stats_url)
stats_url: http://127.0.0.1:8404/stats;csv
stats_auth: ${HAPROXY_STATS_AUTH}

# Admin-сокет как альтернатива HTTP (если задан, имеет приоритет)
socket_path: /run/haproxy/admin.sock

# Частота сбора
refresh_interval_sec: 15

# Какие метрики собирать
metrics:
- frontends
- backends
- servers
- sessions_current
- sessions_rate
- http_2xx_rate
- http_4xx_rate
- http_5xx_rate
- response_time_avg
- response_time_p99
- queue_current
- queue_time_avg

# Фильтрация объектов HAProxy
include_frontends:
- "fe_*"
include_backends:
- "be_*"
exclude_objects:
- "stats"

# Credentials
token: ${FLAREE_TOKEN}
endpoint: ${FLAREE_ENDPOINT}

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

  1. Убедитесь, что сервис HAProxy активен (active (running)) и не ушёл в reloading.
  2. Откройте stats CSV из-под того же пользователя, что агент, и проверьте, что первая строка — заголовок # pxname,svname,..., а далее идут строки фронтендов и бэкендов.
  3. Откройте дашборд Flaree и убедитесь, что в списке источников появился HAProxy-хост с ненулевым числом активных сессий за последние 5 минут.
# Статус сервиса HAProxy
systemctl status haproxy --no-pager

# Первые строки CSV-экспорта stats (должен начинаться с "# pxname,...")
curl -s 'http://127.0.0.1:8404/stats;csv' | head -n 3

Troubleshooting

  • Если в дашборде нет метрик HAProxy или они обрываются, см. Нет данных.
  • Если агент не выходит на связь после systemctl restart haproxy, см. Agent offline.
tip

Никогда не экспонируйте stats-endpoint на публичный интерфейс и не используйте в stats auth продуктовые учётные данные. Заведите отдельную read-only пару <user:password> и храните её в секрет-хранилище под именем ${HAPROXY_STATS_AUTH}.