Home » Настройка логирования HAProxy с Rsyslog на CentOS 8
Настройка логирования HAProxy с Rsyslog на CentOS 8

Настройка логирования HAProxy с Rsyslog на CentOS 8

Сегодня разберёмся, как настроить логирование HAProxy через Rsyslog на CentOS 8. Почему это важно? Потому что без нормальных логов вы не поймёте, что происходит с вашим балансировщиком: кто ломится, кто падает, кто тормозит. А если вы ещё и автоматизируете мониторинг или алерты — без логов вообще никуда. В этой статье — не только пошаговая инструкция, но и разбор, как всё это работает, какие грабли встречаются, и как их обойти. Всё максимально практично, с примерами и советами, чтобы не тратить время на гугление и эксперименты.

Как это работает?

HAProxy — это не только про балансировку, но и про прозрачность. Он умеет писать логи о каждом запросе, ошибке, попытке подключения. Но вот беда: по умолчанию на CentOS 8 логи HAProxy не появляются в привычных местах, потому что syslog (rsyslog) не ловит их UDP-пакеты, а systemd-journald не всегда дружит с классическим syslog. Поэтому приходится немного шаманить.

  • HAProxy пишет логи в syslog (обычно UDP 514 порт, но можно и локальный сокет).
  • Rsyslog ловит эти сообщения и пишет их в нужные файлы.
  • Дальше вы можете анализировать логи, строить графики, настраивать алерты, или просто смотреть, кто вас DDoS-ит.

Всё это работает быстро, надёжно и не требует лишних ресурсов. Но есть нюансы — например, SELinux, systemd, и разные версии rsyslog могут вставлять палки в колёса.

Быстрая и простая настройка: пошаговая инструкция

Давайте без лишней воды — сразу к делу. Вот что нужно сделать, чтобы HAProxy начал писать логи, а вы их видели там, где удобно.

  1. Установить HAProxy и Rsyslog (если ещё не стоят)


sudo dnf install haproxy rsyslog -y

  1. Включить и запустить rsyslog


sudo systemctl enable rsyslog --now

  1. Настроить HAProxy на логирование в syslog

В /etc/haproxy/haproxy.cfg найдите секцию global и добавьте (или раскомментируйте) строку:


global
log 127.0.0.1:514 local2
# остальная конфигурация

Здесь local2 — это facility, который мы будем ловить в rsyslog. Можно выбрать другой, если хочется.

  1. Настроить rsyslog на приём логов от HAProxy

Откройте /etc/rsyslog.conf или создайте отдельный файл, например, /etc/rsyslog.d/haproxy.conf:


# Приём UDP-сообщений на 514 порт
module(load="imudp")
input(type="imudp" port="514")

# Логи HAProxy в отдельный файл
local2.* /var/log/haproxy.log

Сохраните и перезапустите rsyslog:


sudo systemctl restart rsyslog

  1. Перезапустить HAProxy


sudo systemctl restart haproxy

  1. Проверить, что логи идут


tail -f /var/log/haproxy.log

Если видите строки — всё ок. Если нет — читайте дальше, разберёмся с граблями.

Практические советы и схемы

  • SELinux: Если включён, может блокировать отправку логов. Проверьте audit.log и, если надо, добавьте политику или временно отключите SELinux для теста: setenforce 0.
  • Firewall: Если HAProxy и rsyslog на разных серверах, откройте UDP 514 порт.
  • systemd: Иногда HAProxy запускается через systemd и не видит syslog. Добавьте в /etc/systemd/system/haproxy.service.d/override.conf:

    [Service]
    StandardOutput=syslog
    StandardError=syslog
    SyslogFacility=local2

    Но чаще всего достаточно настроить всё, как выше.

  • Ротация логов: Добавьте /etc/logrotate.d/haproxy:

    /var/log/haproxy.log {
    daily
    missingok
    rotate 14
    compress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
    /bin/kill -HUP $(pidof rsyslogd)
    endscript
    }

Положительные и отрицательные кейсы

Кейс Что происходит Рекомендация
Логи не появляются HAProxy пишет, rsyslog не ловит (или наоборот) Проверьте, что imudp модуль включён, порт 514 слушается, firewall не блокирует, SELinux не мешает
Логи дублируются в /var/log/messages Rsyslog не фильтрует facility Добавьте & stop после правила для local2.* или настройте фильтрацию
Логи слишком подробные (шум) Много мусора, тяжело анализировать Настройте log-format в HAProxy, фильтруйте ненужные уровни в rsyslog
Логи не ротаются, занимают много места Файл растёт до гигабайтов Настройте logrotate, как выше

Похожие решения и альтернативы

  • systemd-journald: Можно писать логи напрямую в journal, но анализировать их сложнее, и интеграция с внешними тулзами не всегда удобна.
  • syslog-ng: Альтернатива rsyslog, чуть сложнее в настройке, но гибче для сложных сценариев (например, отправка логов на удалённый сервер).
  • Graylog, ELK (Elasticsearch + Logstash + Kibana): Для больших инфраструктур — собирайте логи с десятков HAProxy на один сервер, анализируйте, стройте дашборды.

Для большинства задач rsyslog — оптимальный выбор: прост, стабилен, поддерживается в CentOS 8 и не требует лишних зависимостей.

Статистика и сравнение

Решение Производительность Гибкость Удобство Поддержка
rsyslog Высокая Средняя Очень простое CentOS, RHEL, Fedora
syslog-ng Высокая Очень высокая Среднее Многие дистрибутивы
systemd-journald Средняя Средняя Для systemd-любителей Современные Linux
ELK/Graylog Зависит от железа Максимальная Для больших проектов Любой Linux

Интересные факты и нестандартные способы

  • Можно отправлять логи HAProxy сразу на удалённый сервер для централизованного мониторинга. Просто укажите IP лог-сервера в haproxy.cfg:

    log 192.168.1.100:514 local2
  • Rsyslog умеет писать логи не только в файлы, но и в базы данных (MySQL, PostgreSQL), pipe-скрипты, даже в Slack через webhook (с помощью модулей).
  • Можно фильтровать логи по содержимому прямо в rsyslog, например, писать только ошибки или только определённые backend’ы.
  • Для автоматизации удобно использовать fail2ban: он может читать логи HAProxy и банить злоумышленников на лету.
  • HAProxy поддерживает разные форматы логов — можно сделать совместимость с Apache/Nginx для парсинга привычными тулзами.

Новые возможности для автоматизации и скриптов

  • С логами в отдельном файле легко строить графики трафика, ошибок, задержек — например, через Grafana + Prometheus (с парсингом логов).
  • Можно писать свои скрипты на Python/Bash для анализа логов и отправки алертов в Telegram, Slack, email.
  • Интеграция с fail2ban — автоматическая защита от брутфорса и DDoS.
  • Быстрая диагностика проблем: по логам видно, где узкое место, кто тормозит, кто злоупотребляет сервисом.
  • Логи можно отправлять в облако или на резервный сервер — удобно для отказоустойчивости и аудита.

Выводы и рекомендации

Настройка логирования HAProxy через rsyslog на CentOS 8 — это must-have для любого, кто хочет держать руку на пульсе своего сервера. Это просто, быстро и надёжно. Вы получаете прозрачность, удобство анализа, возможность автоматизации и интеграции с любыми тулзами. Не забывайте про ротацию логов и безопасность (SELinux, firewall). Если у вас несколько серверов — собирайте логи централизованно, это упростит жизнь и ускорит реакцию на инциденты.

Для тех, кто хочет быстро поднять VPS для экспериментов или продакшена — заказать VPS. Для серьёзных задач и больших нагрузок — выделенный сервер. Всё просто, быстро и без лишней бюрократии.

Официальная документация:

Пробуйте, автоматизируйте, не бойтесь экспериментировать — и пусть ваши логи всегда будут под контролем!


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

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked