- Home »

Настройка логирования 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 начал писать логи, а вы их видели там, где удобно.
- Установить HAProxy и Rsyslog (если ещё не стоят)
sudo dnf install haproxy rsyslog -y
- Включить и запустить rsyslog
sudo systemctl enable rsyslog --now
- Настроить HAProxy на логирование в syslog
В /etc/haproxy/haproxy.cfg
найдите секцию global
и добавьте (или раскомментируйте) строку:
global
log 127.0.0.1:514 local2
# остальная конфигурация
Здесь local2
— это facility, который мы будем ловить в rsyslog. Можно выбрать другой, если хочется.
- Настроить 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
- Перезапустить HAProxy
sudo systemctl restart haproxy
- Проверить, что логи идут
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. Для серьёзных задач и больших нагрузок — выделенный сервер. Всё просто, быстро и без лишней бюрократии.
Официальная документация:
Пробуйте, автоматизируйте, не бойтесь экспериментировать — и пусть ваши логи всегда будут под контролем!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.