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.