Интеграция с HAProxy
Перевод в процессе / 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}
Проверка работы
- Убедитесь, что сервис HAProxy активен (
active (running)) и не ушёл вreloading. - Откройте stats CSV из-под того же пользователя, что агент, и проверьте, что первая строка — заголовок
# pxname,svname,..., а далее идут строки фронтендов и бэкендов. - Откройте дашборд 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.
Никогда не экспонируйте stats-endpoint на публичный интерфейс и не используйте в stats auth продуктовые учётные данные. Заведите отдельную read-only пару <user:password> и храните её в секрет-хранилище под именем ${HAPROXY_STATS_AUTH}.