Jak trzymać wiadomości dziennika haproxy poza katalogiem / var / log / syslog


29

Skonfigurowałem rejestrowanie haproxy przez rsyslogd, korzystając ze wskazówek z tego artykułu i wszystko wydaje się działać dobrze. Pliki dziennika pobierają komunikaty dziennika.

Jednak każdy komunikat dziennika od haproxy pojawia się również o godzinie /var/log/syslog. Oznacza to, że po uruchomieniu serwera syslog będzie zupełnie bezużyteczny, ponieważ zostanie uruchomiony z komunikatami dziennika haproxy.

Chciałbym odfiltrować te wiadomości /var/log/syslog. Po przejrzeniu dokumentacji rsyslogd próbowałem zmienić plik w /etc/rsyslog.d/50-default.conften sposób:

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

Po prostu dodałem ;haproxy.noneczęść. Po ponownym uruchomieniu rsyslogd przestał działać całkowicie, dopóki nie cofnąłem moich zmian.

Co ja robię źle?

Odpowiedzi:


26

Możesz także wykonać następujące czynności, dzięki czemu nie będą one zapisywane w innych dziennikach:

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

Te & ~środki, aby nie stawiać co dopasowane w powyższej linii nigdzie indziej na resztę zasad.


Dzięki. Wydaje się to mieć większy sens niż konieczność edytowania głównej konfiguracji.
itsadok

13
Warto zauważyć, że jeśli to zrobisz, twoja linia local0. * Musi zostać przetworzona przed linią „ . ” W pliku /etc/rsyslog.d/50-default.conf. Utworzyłem plik o nazwie /etc/rsyslog.d/haproxy.conf, aby zawierał moją konfigurację rejestrowania specyficzną dla haproxy, ale logował się do syslog, mimo że na końcu było „& ~”. Jest tak, ponieważ (oczywiście) 50-default.conf jest ładowany przed haproxy.conf, więc catchall „ . ” Został dopasowany przed moją linią „local0. *”. Rozwiązaniem było zmienić nazwę mojego pliku haproxy na /etc/rsyslog.d/49-haproxy.conf
Giles Thomas

1
FYI mała aktualizacjarsyslogd-2307: warning: ~ action is deprecated, consider using the 'stop' statement instead [try http://www.rsyslog.com/e/2307 ]
KCD

Omówiono użycie & stopzamiast & ~: rsyslog.com/doc/v8-stable/compatibility/v7compatibility.html .
slm

14

Użycie & ~przestarzałej wersji vs rsyslogd i zachęca się do korzystania z & stopniego. Możesz przeczytać więcej na ten temat w tej sekcji strony kompatybilności v7 .

Omruleset i discard (~) action są nieaktualne

Oba nadal działają, ale zostały zastąpione lepszymi alternatywami.

Odrzuć akcję (znak tyldy) zastąpiono dyrektywą RainerScript „stop”. Jest uważany za bardziej intuicyjny i oferuje nieco lepszą wydajność.

Moduł omruleset został zastąpiony dyrektywą RainerScript „call”. Wywołanie pozwala na wykonanie zestawu reguł takiego jak podprogram i robi to z dużo większą wydajnością niż zestaw omrule. Pamiętaj, że zestaw omruleset można uruchomić z kolejki asynchronicznej. Było to bardziej efekt uboczny niż pożądany i nie jest obsługiwane przez instrukcję call. Jeśli ten efekt był potrzebny, można go po prostu zasymulować, uruchamiając asynchronicznie wywołane akcje zestawów reguł (co w każdym razie jest właściwym sposobem na poradzenie sobie z tym).

Zauważ, że przestarzałe moduły emitują komunikaty ostrzegawcze, gdy są używane. Mówią, że konstrukcja jest przestarzała i która instrukcja ma zostać użyta jako zamiennik. Nie wpływa to na operacje: oba moduły są nadal w pełni operacyjne i nie zostaną usunięte w ramach czasowych v7.

Więc dla HAProxy coś takiego:

$ more /etc/rsyslog.d/haproxy.conf
local2.*    /var/log/haproxy.log
& stop

Co do tego, jak to działa, & stopmówi rsyslogd, aby odrzucił wszelkie dodatkowe wiadomości, które pasowały do ​​wcześniej dopasowanych reguł do tego momentu. Aby zagwarantować wczesne pobranie tej reguły, możesz zmienić nazwę pliku z /etc/rsyslog.d/haproxy.confna /etc/rsyslog.d/00-haproxy.conf.


3

Ok, rozgryzłem to. Tak /etc/rsyslog.d/20-haproxy.confwygląda moje :

$ModLoad imudp
$UDPServerRun 514

local0.* -/var/log/haproxy_0.log
local1.* -/var/log/haproxy_1.log

Zmieniłem linię 50-default.confna:

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

A teraz wydaje się, że robi to, co chcę.


Zasadniczo lepiej NIE modyfikować plików konfiguracyjnych utworzonych przez inne pakiety, ponieważ powoduje to problemy z aktualizacją / własnością. Jeśli jest to jednorazowy serwer z płatkami śniegu, wszystko w porządku, ale w przypadku automatycznych wdrożeń modyfikowanie 50-default.conf jest na ogół „złą rzeczą”.
Bruce Edge,

2

Istnieje lepsze rozwiązanie do rejestrowania haproxy.

  • HAproxy działa w chroot, więc nie ma dostępu /dev/log
  • Zgodnie z oficjalną instrukcją rsyslog musi być skonfigurowany do nasłuchiwania gniazda sieciowego:

    # 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
    

Ale do tego możesz użyć tylko gniazd 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
          .......

1

Wolę nie zadzierać z kolejnością plików, więc zamiast tego dodaję plik local0.none do pliku . wpis linii. Konfiguracja wygląda następująco:

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

local2.*                                                 /var/log/haproxy.log

(Testowane na CentOS 7)

Mam nadzieję, że to pomaga!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.