rsyslog nie rejestruje się


17

To dziwny problem.

Testowałem usługi chrony / ntp na maszynie wirtualnej RHEL7 i resetowałem czas, jak również hosta. Kiedy byłem z tego zadowolony, sprawdziłem /var/log/messagesi zdałem sobie sprawę, że od jakiegoś czasu nie uległo to zmianie.

Teraz bez względu na to, co robię, nic nie jest rejestrowane, z wyjątkiem sytuacji, gdy ponownie uruchamiam samą usługę rsyslog; kiedy to dostaję to:

Apr 15 13:59:43 mymachine1 rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="2847" x-info="http://www.rsyslog.com"] exiting on signal 2.

Apr 15 13:59:59 mymachine1 rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="2853" x-info="http://www.rsyslog.com"] start

Apr 15 14:00:11 mymachine1 rsyslogd-3000: sd_journal_get_cursor() failed: 'Cannot assign requested address'

Próbowanie rzeczy takich jak „ logger testnie loguj”, wydaje się, że nic więcej poza własnymi wiadomościami rsyslog. Kiedy uruchamiam rsyslog ręcznie z -n -N1argumentami, otrzymuję:

rsyslogd: version 7.4.2, config validation run (level 1), master config /etc/rsyslog.conf

rsyslogd: End of config validation run. Bye

Wydaje się, że z jakiegoś powodu nic nie może zalogować się przez rsyslog. Druga identyczna maszyna wirtualna na tym samym hoście (która nie przechodziła przez ten sam cykl wielokrotnego wyłączania ntp, zmieniając datę i wielokrotnie uruchamiając ponownie) z tymi samymi logami plików rsyslog.conf.

W tym momencie data / godzina są poprawne, chrony są włączone i działają, i zrestartowałem kilka razy - po 30 sekundach wiadomości jądra nic więcej się nie loguje.

Myśli?


Nie korzystałem wcześniej z RHEL7, ale sprawdziłem /etc/rsyslog.confi /etc/rsyslog.dkatalogi. Wygląda na to, że nie masz nic skonfigurowanego do przekierowania do określonego pliku dziennika. Możesz także spróbować określić EMERGpriorytetowo wiadomość syslog, aby sprawdzić, czy to się uda. Przykład:logger -p EMERG not really an emergency
Bratchley,

1
/etc/rsyslog.conf zawiera: * .info; mail.none; authpriv.none; cron.none; local0.none / var / log / messages Jeśli chodzi o pliki w /etc/rsyslog.d, listen.conf, to : $ SystemLogSocketName / run / systemd / journal / syslog and rate-unlimit.conf this: $ SystemLogRateLimitInterval 0 $ SystemLogRateLimitBurst 0 Podobnie jak w przypadku priorytetu EMERG, nie jest rejestrowany.
Arkandel

Prawdopodobnie powinieneś albo zaktualizować swoją odpowiedź, albo wkleić kod, ponieważ skoro straciliśmy tam przerwanie linii.
Bratchley,

Przepraszam za to. Z jakiegoś powodu nie będzie analizować linii w komentarzach. Kiedy komentuję to w rsyslog.conf, rejestrowanie jest ponownie włączone: $ OmitLocalLogging on. Jednak na mojej drugiej identycznej maszynie wirtualnej na tym samym hoście nie jest to komentowane, a logowanie działa poprawnie.
Arkandel

Patrząc na to, najwyraźniej jest to opcja dla systemd(do którego migrował RHEL7, IIRC) Czy możesz sprawdzić, journalctl -bczy twoje dzienniki idą do dziennika systemowego?
Bratchley,

Odpowiedzi:


19

Nie jest to bezpośrednie rozwiązanie, ale pozwoliłbym na debugowanie, aby zobaczyć, co dzieje się za kulisami.

Pomysł nr 1 - Rejestrator debugowania

Na początek, kiedy uruchamiasz swoje loggerpolecenia, możesz to zrobić w ten sposób, wysyłając komunikaty do STDERR.

$ logger -s "hi"
saml: hi

Pomysł nr 2 - sprawdź poprawność pliku konfiguracyjnego

Możesz także spróbować sprawdzić poprawność pliku konfiguracyjnego rsyslog:

$ sudo rsyslogd -N6 | head -10
rsyslogd: version 7.2.6, config validation run (level 6), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye.

6921.173842409:7f8b11df2780: rsyslogd 7.2.6 startup, module path '', cwd:/root
6921.175241008:7f8b11df2780: caller requested object 'net', not found (iRet -3003)
6921.175261977:7f8b11df2780: Requested to load module 'lmnet'
6921.175272711:7f8b11df2780: loading module '/lib64/rsyslog/lmnet.so'
6921.175505384:7f8b11df2780: module lmnet of type 2 being loaded (keepType=0).
6921.175520208:7f8b11df2780: entry point 'isCompatibleWithFeature' not present in module
6921.175528413:7f8b11df2780: entry point 'setModCnf' not present in module
6921.175535294:7f8b11df2780: entry point 'getModCnfName' not present in module
6921.175541502:7f8b11df2780: entry point 'beginCnfLoad' not present in module

Pomysł nr 3 - Włącz debugowanie rsyslogd

Również spróbuję włączyć debugowanie rsyslogddemona, aby uzyskać więcej informacji.

$ sudo -i
$ export RSYSLOG_DEBUGLOG="/tmp/debuglog"
$ export RSYSLOG_DEBUG="Debug"

$ service rsyslog stop
$ rsyslogd -d | head -10    
7160.005597645:7fae096a3780: rsyslogd 7.2.6 startup, module path '', cwd:/root
7160.005872662:7fae096a3780: caller requested object 'net', not found (iRet -3003)
7160.005895004:7fae096a3780: Requested to load module 'lmnet'
7160.005906331:7fae096a3780: loading module '/lib64/rsyslog/lmnet.so'
7160.006023505:7fae096a3780: module lmnet of type 2 being loaded (keepType=0).
7160.006030872:7fae096a3780: entry point 'isCompatibleWithFeature' not present in module
7160.006033780:7fae096a3780: entry point 'setModCnf' not present in module
7160.006036209:7fae096a3780: entry point 'getModCnfName' not present in module
7160.006038359:7fae096a3780: entry point 'beginCnfLoad' not present in module
...
...
7160.006063913:7fae096a3780: rsyslog runtime initialized, version 7.2.6, current users 1
7160.006102179:7fae096a3780: source file syslogd.c requested reference for module 'lmnet', reference count now 2
7160.006113657:7fae096a3780: GenerateLocalHostName uses 'greeneggs'

Potwierdzanie informacji o wersji

$ rsyslogd -version
rsyslogd 7.2.6, compiled with:
    FEATURE_REGEXP:             Yes
    FEATURE_LARGEFILE:          No
    GSSAPI Kerberos 5 support:      Yes
    FEATURE_DEBUG (debug build, slow code): No
    32bit Atomic operations supported:  Yes
    64bit Atomic operations supported:  Yes
    Runtime Instrumentation (slow code):    No
    uuid support:               Yes

See http://www.rsyslog.com for more information.

Potwierdzony błąd i obejście

OP zgłosił to jako błąd do Red Hata.

Błąd został scharakteryzowany następująco:

Rzeczywiście, kiedy ustawiam własny czas hosta, maszyna wirtualna miała ten sam zły czas co host. Wtedy zauważyłem, że / var / log / messages nie jest już aktualizowany.

Okazuje się, że w tym momencie zrestartowanie samej usługi rsyslog loguje się do plików. Jeśli to zrobię, zostanie to zarejestrowane:

  ---
   Apr 15 16:39:39 rhel7time-dev rsyslogd-3000: sd_journal_get_cursor() failed: 'Cannot assign requested address'

  Apr 15 16:39:39 rhel7time-dev rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="574" x-info="http://www.rsyslog.com"] exiting on signal 15.
  Apr 15 16:39:39 rhel7time-dev rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="2117" x-info="http://www.rsyslog.com"] start
  ---

W przeciwnym razie nic nie jest rejestrowane w pliku, w tym rejestrator.

Jeśli skomentuję $ OmitLocalLogging w pliku rsyslog.conf, rejestrowanie plików zostanie wznowione (zauważ, że do tego momentu nie zmieniłem pliku rsyslog.conf).

To wszystko nie wpływa na logowanie do dziennika. journalctl -b pokazuje rejestrowanie, w tym wszystko wysyłane przez rejestrator.

Na który odpowiedział jeden z programistów:

Gdy wystąpi ten problem, możesz usunąć /var/lib/rsyslog/imjournal.statei ponownie uruchomić demona jako obejście problemu.

rsyslog nie obsługuje daty bezpośrednio, ale tylko poprzez systemowy interfejs API. Jakiś czas temu sprawdziłem kod w imjournal i wygląda to na problem w systemd.

W celach informacyjnych patrz: https://github.com/rsyslog/rsyslog/issues/43


Podniosłem to jako raport o błędzie i otrzymałem odpowiedź od RedHata. Szczegóły można znaleźć na stronie bugzilla.redhat.com/show_bug.cgi?id=1088021 . Na razie jest to zamknięte, dziękuję wszystkim za pomoc. :)
Arkandel

1
@Arkandel - dzięki za zamknięcie pętli na ten temat. Włączyłem twoje ustalenia i obejście do tego A, abyśmy mogli zamknąć cykl pytań i odpowiedzi jako rozwiązany (przynajmniej w tym sensie, że jest to potwierdzony błąd z obejściem). Oznacz to A jako zaakceptowane, jeśli zgadzasz się z tym streszczeniem.
slm

4

W moim przypadku systemctl restart systemd-journaldpomogło, ponieważ

File /run/log/journal/29c32d60f93c42489aabb4ebeb593f5b/system.journal corrupted or uncleanly shut down, renaming and replacing.
[12274404.541271] systemd-journald[15492]: Deleted empty journal /run/log/journal/29c32d60f93c42489aabb4ebeb593f5b/system@0005317804680d96-e103c48634d16856.journal~ (4096 bytes).

1

Spróbuj sprawdzić rsyslog conf za pomocą: rsyslogd -f /etc/rsyslog.conf -N 1
Jeśli wszystko jest w porządku, spróbuj zrestartować systemd-journald.socket za pomocą: systemctl restart systemd-journald.socket
, możesz użyć polecenia „logger”, aby sprawdzić jeśli rsyslog działa, czy nie: logger „hello”

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.