rsyslog não está registrando

17

Esta é uma questão estranha.

Eu estava testando os serviços chrony / ntp em uma VM RHEL7 e estava redefinindo seu tempo e o do host. Quando fiquei satisfeito, verifiquei /var/log/messagese percebi que não havia mudado há algum tempo.

Agora, não importa o que eu faça, nada está sendo registrado, exceto quando eu reinicio o serviço rsyslog; quando eu recebo isso:

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'

Tentando coisas como logger testnão registrar, nada mais, exceto as próprias mensagens do rsyslog, parece. Quando executo o rsyslog manualmente com -n -N1como argumentos, recebo:

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

rsyslogd: End of config validation run. Bye

Parece que nada pode acessar o rsyslog por algum motivo. E uma segunda VM idêntica no mesmo host (que não passou pelo mesmo círculo de ntp repetidamente desativado, com a data alterada e reinicializada várias vezes) com os mesmos logs de arquivo rsyslog.conf.

Neste ponto, a data / hora está correta, o chrony está ativado e em execução, e eu reiniciei várias vezes - após 30 segundos de mensagens do kernel, nada mais é registrado novamente.

Pensamentos?

Arkandel
fonte
Eu não usei o RHEL7 antes, mas verificaria /etc/rsyslog.confe os /etc/rsyslog.ddiretórios. Parece que você não tem nada configurado para ser roteado para um arquivo de log específico. Você também pode tentar especificar uma mensagem de syslog com EMERGprioridade para ver se isso é transmitido . Exemplo:logger -p EMERG not really an emergency
Bratchley 15/04
1
O /etc/rsyslog.conf contém: * .info; mail.none; authpriv.none; cron.none; local0.none / var / log / messages Quanto aos arquivos em /etc/rsyslog.d, listen.conf, este : $ SystemLogSocketName / run / systemd / journal / syslog e rate-unlimit.conf this: $ SystemLogRateLimitInterval 0 $ SystemLogRateLimitBurst 0 Quanto à prioridade EMERG, ela também não é registrada.
Arkandel
Você provavelmente deve atualizar sua resposta ou colar uma vez que perdemos as quebras de linha por lá.
Bratchley
Me desculpe por isso. Por alguma razão, ele não analisará os feeds de linha nos comentários. Quando eu comento isso no rsyslog.conf, o log é ativado novamente: $ OmitLocalLogging on. No entanto, na minha outra VM idêntica no mesmo host, isso não é comentado e o log funciona bem.
Arkandel
Examinando, aparentemente essa é uma opção systemd( para a qual o RHEL7 migrou para o IIRC). Você pode verificar journalctl -bse seus logs estão indo para o diário systemd?
Bratchley

Respostas:

19

Não é uma solução direta, mas eu permitiria alguma depuração para ver o que está acontecendo nos bastidores.

Idéia # 1 - Depurador de log

Para iniciantes, quando você executa seus loggercomandos, é possível fazê-los dessa maneira, ecoando mensagens para STDERR.

$ logger -s "hi"
saml: hi

Idéia # 2 - valide seu arquivo de configuração

Você também pode tentar validar seu arquivo de configuração do 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

Idéia # 3 - Aumente a depuração do rsyslogd

Também tentaria ativar a depuração do rsyslogddaemon para obter mais informações.

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

Confirmando informações da versão

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

Erro confirmado e uma solução alternativa

O OP enviou isso como um bug para a Red Hat.

O bug foi caracterizado da seguinte maneira:

Com certeza, quando defini o horário do host, a VM teve o mesmo horário errado que o host. Foi quando notei que / var / log / messages não estava mais sendo atualizado.

Acontece que nada além de reiniciar o próprio serviço rsyslog faz logon nos arquivos naquele momento. Se eu fizer isso, isso será registrado:

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

Caso contrário, nada será registrado no arquivo, incluindo o logger.

Se eu comentar sobre $ OmitLocalLogging no rsyslog.conf, o log de arquivos será retomado (observe que até aquele momento eu não havia alterado o rsyslog.conf).

O registro no diário não é afetado por tudo isso. journalctl -b mostra o log, incluindo qualquer coisa enviada pelo logger.

À qual o desenvolvedor respondeu:

Quando esse problema ocorre, você pode excluir /var/lib/rsyslog/imjournal.statee reiniciar o daemon como uma solução alternativa.

O rsyslog não lida com a data diretamente, mas apenas através da API systemd. Eu verifiquei o código no imjournal há um tempo atrás e isso parece um problema no systemd.

Para referência, consulte: https://github.com/rsyslog/rsyslog/issues/43

slm
fonte
Eu trouxe isso como um relatório de bug e recebi uma resposta do RedHat. Os detalhes podem ser vistos em bugzilla.redhat.com/show_bug.cgi?id=1088021 . Está fechado por enquanto, obrigado a todos por sua ajuda. :)
Arkandel
1
@ Arkandel - obrigado por fechar o loop sobre isso. Eu incorporei suas descobertas e a solução alternativa neste A para que possamos fechar o ciclo de perguntas e respostas conforme resolvido (pelo menos no sentido de que é um bug confirmado com uma solução alternativa). Marque A como aceito se você concordar com esta sinopse.
Slm
4

No meu caso systemctl restart systemd-journaldajudou, porque

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/[email protected]~ (4096 bytes).
Valentina
fonte
1

Tente verificar o rsyslog conf com: rsyslogd -f /etc/rsyslog.conf -N 1
Se estiver tudo bem, tente reiniciar o systemd-journald.socket com: systemctl restart systemd-journald.socket,
você pode usar o comando "logger" para verificar se o rsyslog funcionar ou não: logger "olá"

S.Bao
fonte