rsyslog non registra


17

Questo è un problema strano.

Stavo testando i servizi chrony / ntp su una VM RHEL7 e stavo ripristinando il suo tempo e quello dell'host. Una volta soddisfatto, ho verificato /var/log/messagese realizzato che non era cambiato da un po 'di tempo.

Ora, indipendentemente da ciò che non faccio, viene registrato tranne quando riavvio il servizio rsyslog stesso; quando lo faccio ottengo questo:

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'

Provare cose come logger testnon registrare, nient'altro tranne i messaggi di rsyslog sembra farlo. Quando eseguo rsyslog manualmente con -n -N1come argomenti ottengo:

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

rsyslogd: End of config validation run. Bye

Sembra che nulla possa accedere a rsyslog per qualche motivo. E una seconda macchina virtuale identica sullo stesso host (che non ha attraversato quasi la stessa cerchia di disabilitare ripetutamente ntp, avendo la data modificata e riavviata più volte) con lo stesso file rsyslog.conf registra bene.

A questo punto la data / ora è corretta, chrony è abilitato e in esecuzione, e ho riavviato più volte - dopo 30 secondi di messaggi del kernel nient'altro viene registrato di nuovo.

Pensieri?


Non ho mai usato RHEL7 prima, ma vorrei controllare /etc/rsyslog.confe le /etc/rsyslog.ddirectory. Sembra che tu non abbia nulla di configurato per essere indirizzato a un determinato file di registro. Potresti anche provare a specificare un messaggio syslog con EMERGpriorità per vedere se questo riesce. Esempio:logger -p EMERG not really an emergency
Bratchley,

1
/etc/rsyslog.conf contiene questo: * .info; mail.none; authpriv.none; cron.none; local0.none / var / log / messages Come per i file in /etc/rsyslog.d, hear.conf, questo : $ SystemLogSocketName / run / systemd / journal / syslog e rate-unlimit.conf this: $ SystemLogRateLimitInterval 0 $ SystemLogRateLimitBurst 0 Per quanto riguarda la priorità EMERG, non viene registrato neanche.
Arkandel,

Probabilmente dovresti aggiornare la tua risposta o incollare questo dato che da quando abbiamo perso le interruzioni di riga lì.
Bratchley,

Mi dispiace per quello. Per qualche motivo non analizzerà gli avanzamenti di riga nei commenti. Quando lo commento in rsyslog.conf, la registrazione viene nuovamente abilitata: $ OmitLocalLogging. Tuttavia, sull'altra mia macchina virtuale identica sullo stesso host non viene commentato e la registrazione funziona correttamente.
Arkandel,

Esaminandolo, a quanto pare è un'opzione per systemd(verso la quale RHEL7 è migrato, IIRC) Puoi verificare journalctl -bse i tuoi registri stanno andando nel journal di systemd?
Bratchley,

Risposte:


19

Non è una soluzione diretta, ma consentirei un po 'di debug per vedere cosa sta succedendo dietro le quinte.

Idea n. 1 - Debug logger

Per i principianti quando esegui i tuoi loggercomandi puoi farlo in questo modo, facendo eco ai messaggi su STDERR.

$ logger -s "hi"
saml: hi

Idea n. 2: convalida il file di configurazione

Puoi anche provare a convalidare il tuo file di configurazione 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

Idea n. 3: attiva il debug di rsyslogd

Inoltre proverei ad abilitare il debug del rsyslogddemone per ulteriori approfondimenti.

$ 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'

Conferma delle informazioni sulla versione

$ 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.

Bug confermato e soluzione alternativa

L'OP ha inviato questo come bug a Red Hat.

Il bug era caratterizzato come segue:

Abbastanza sicuro quando ho impostato l'ora dell'host, la VM ha avuto lo stesso orario sbagliato dell'host. Fu allora che notai / var / log / messages non veniva più aggiornato.

Si scopre nient'altro che riavviare il servizio rsyslog stesso registra in file a quel punto. Se lo faccio, questo viene registrato:

  ---
   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
  ---

Altrimenti non viene registrato nulla nel file, incluso il logger.

Se commento $ OmitLocalLogging su rsyslog.conf, la registrazione dei file riprende (si noti che fino a quel momento non avevo cambiato rsyslog.conf).

La registrazione attraverso il diario non è interessata da tutto ciò. journalctl -b mostra la registrazione, incluso tutto ciò che viene inviato dal logger.

A cui ha risposto quello degli sviluppatori:

Quando si verifica questo problema, è possibile eliminare /var/lib/rsyslog/imjournal.statee riavviare il daemon come soluzione alternativa.

rsyslog non gestisce la data direttamente ma solo attraverso l'API systemd. Ho controllato il codice in imjournal qualche tempo fa e questo sembra un problema in systemd.

Per riferimento, consultare: https://github.com/rsyslog/rsyslog/issues/43


L'ho presentato come una segnalazione di bug e ho ricevuto una risposta da RedHat. I dettagli sono disponibili su bugzilla.redhat.com/show_bug.cgi?id=1088021 . Questo è chiuso per ora, grazie a tutti per il vostro aiuto. :)
Arkandel,

1
@Arkandel - grazie per aver chiuso il loop su questo. Ho incorporato le tue scoperte e la soluzione alternativa in questa A in modo da poter chiudere il ciclo di domande e risposte come risolto (almeno nel senso che è un bug confermato con una soluzione alternativa). Si prega di contrassegnare questo A come accettato se si è d'accordo con questa sinossi.
slm

4

Nel mio caso systemctl restart systemd-journaldaiutato, perché

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

Prova a controllare rsyslog conf con: rsyslogd -f /etc/rsyslog.conf -N 1
Se tutto è ok prova a riavviare systemd-journald.socket con: systemctl restart systemd-journald.socket
puoi usare il comando "logger" per controllare se rsyslog funziona o no: logger "ciao"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.