Как убрать сообщения журнала haproxy из /var/log/syslog

Как убрать сообщения журнала haproxy из /var/log/syslog

Я настроил ведение журнала haproxy через rsyslogd, следуя советамЭта статья, и все, кажется, работает нормально. Файлы журнала получают сообщения журнала.

Однако каждое сообщение журнала от haproxy также отображается в /var/log/syslog. Это означает, что как только сервер будет запущен, syslog станет совершенно бесполезным, так как он будет переполнен сообщениями журнала haproxy.

Я хотел бы отфильтровать эти сообщения от /var/log/syslog. После изучения документации rsyslogd я попытался изменить файл /etc/rsyslog.d/50-default.confследующим образом:

*.*;auth,authpriv.none;haproxy.none     -/var/log/syslog

Я просто добавил ;haproxy.noneчасть. После перезапуска rsyslogd он полностью перестал работать, пока я не отменил свои изменения.

Что я делаю не так?

решение1

Вы также можете сделать следующее, чтобы они не попали ни в какие другие журналы:

local0.*                        -/var/log/haproxy.log
& ~

Это & ~означает, что то, что совпало в строке выше, не следует помещать где-либо еще для остальных правил.

решение2

Использование & ~было устарело в v7 rsyslogd, и вам рекомендуется использовать & stopвместо этого. Вы можете прочитать больше об этом в этом разделестраница совместимости v7.

Действия omruleset и discard (~) устарели

Оба варианта продолжают работать, но на смену им пришли более эффективные альтернативы.

Действие discard (символ тильды) было заменено директивой RainerScript «stop». Оно считается более интуитивным и обеспечивает немного лучшую производительность.

Модуль omruleset был заменен директивой RainerScript «call». Call позволяет выполнять набор правил как подпрограмму и делает это с гораздо большей производительностью, чем omruleset. Обратите внимание, что omruleset может быть запущен из асинхронной очереди. Это был скорее побочный, чем желаемый эффект, и не поддерживается оператором call. Если бы этот эффект был необходим, его можно было бы просто смоделировать, запустив действия вызываемых наборов правил асинхронно (что в любом случае является правильным способом справиться с этим).

Обратите внимание, что устаревшие модули выдают предупреждающие сообщения при использовании. Они сообщают, что конструкция устарела и какой оператор следует использовать в качестве замены. Это не влияет на операции: оба модуля по-прежнему полностью работоспособны и не будут удалены в период 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.

решение3

Ладно, я разобрался. Вот как /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

И теперь, кажется, он делает то, что я хочу.

решение4

Я предпочитаю не возиться с порядком файлов, поэтому вместо этого добавляю local0.none в.строка записи. Конфигурация выглядит так:

*.info;mail.none;authpriv.none;cron.none;local2.none     /var/log/messages

local2.*                                                 /var/log/haproxy.log

(Проверено на CentOS 7)

Надеюсь, это поможет!

Связанный контент