Я настроил ведение журнала haproxy через rsyslogd, используя советы от Эта статья, и вроде все работает нормально. Файлы журнала получают сообщения журнала.
Однако каждое сообщение журнала от haproxy также появляется в /var/log/syslog
. Это означает, что после запуска сервера системный журнал будет совершенно бесполезен, так как он будет переполнен сообщениями журнала haproxy.
Я хотел бы отфильтровать эти сообщения из /var/log/syslog
. После просмотра документации rsyslogd я попытался изменить файл /etc/rsyslog.d/50-default.conf
таким образом:
*.*;auth,authpriv.none;haproxy.none -/var/log/syslog
Я просто добавил ;haproxy.none
часть. После перезапуска rsyslogd он полностью перестал работать, пока я не отменил свои изменения.
Что я делаю не так?
Вы также можете сделать следующее, чтобы они не попадали в другие журналы:
local0.* -/var/log/haproxy.log
& ~
В & ~
означает не помещать то, что соответствует в приведенной выше строке, в других правилах.
Использование & ~
устарела в версии 7 rsyslogd, и вам рекомендуется использовать & stop
вместо. Подробнее об этом вы можете прочитать в этом разделе страница совместимости с v7.
Действия omruleset и discard (~) устарели
Оба продолжают работать, но были заменены лучшими альтернативами.
Действие сброса (символ тильды) было заменено директивой RainerScript «стоп». Он считается более интуитивно понятным и предлагает немного лучшую производительность.
Модуль omruleset заменен директивой «call» RainerScript. Вызов позволяет выполнять набор правил, как подпрограмму, и делает это с гораздо более высокой производительностью, чем при использовании набора правил. Обратите внимание, что набор правил может быть запущен из асинхронной очереди. Это был скорее побочный эффект, чем желаемый, и он не подтверждается оператором вызова. Если этот эффект был необходим, его можно просто смоделировать, выполняя действия вызываемых наборов правил асинхронно (что в любом случае является правильным способом справиться с этим).
Обратите внимание, что устаревшие модули при использовании выдают предупреждающие сообщения. Они сообщают, что конструкция устарела и какой оператор следует использовать в качестве замены. Это не влияет на работу: оба модуля по-прежнему полностью работоспособны и не будут удалены в сроки v7.
Итак, для HAProxy вместо этого что-то вроде этого:
$ more /etc/rsyslog.d/haproxy.conf
local2.* /var/log/haproxy.log
& stop
Что касается того, как это работает, & stop
сообщает rsyslogd отбрасывать любые дополнительные сообщения, которые до этого момента соответствовали ранее согласованным правилам. Чтобы гарантировать, что это правило будет выполнено на ранней стадии, вы можете изменить имя файла с /etc/rsyslog.d/haproxy.conf
к /etc/rsyslog.d/00-haproxy.conf
.
Хорошо, я разобрался. Это то, что у меня /etc/rsyslog.d/20-haproxy.conf
выглядит как:
$ModLoad imudp
$UDPServerRun 514
local0.* -/var/log/haproxy_0.log
local1.* -/var/log/haproxy_1.log
Я изменил строку в 50-default.conf
кому:
*.*;auth,authpriv,local0,local1.none -/var/log/syslog
А теперь вроде делает то, что хочу.
Есть лучшее решение для ведения журнала haproxy.
/dev/log
Согласно официальному руководству rsyslog необходимо настроить для прослушивания сетевого сокета:
# to have these messages end up in /var/log/haproxy.log you will
# need to:
#
# 1) configure syslog to accept network log events. This is done
# by adding the '-r' option to the SYSLOGD_OPTIONS in
# /etc/sysconfig/syslog
#
# 2) configure local2 events to go to the /var/log/haproxy.log
# file. A line like the following can be added to
# /etc/sysconfig/syslog
Но для этого можно использовать только сокеты rsyslog:
rsyslog.d / haproxy.conf:
# HAproxy local socket
$AddUnixListenSocket /var/lib/haproxy/dev/log
:programname, contains, "haproxy" /var/log/haproxy.log
& stop
haproxy.cfg:
global
log /dev/log daemon
chroot /var/lib/haproxy
.......
Я предпочитаю не вмешиваться в порядок файлов, поэтому вместо этого добавляю local0.none в . запись строки. Конфиг выглядит так:
*.info;mail.none;authpriv.none;cron.none;local2.none /var/log/messages
local2.* /var/log/haproxy.log
(Проверено на CentOS 7)
Надеюсь, это поможет!