rsyslog ne se connecte pas

17

C'est un problème étrange.

Je testais les services chrony / ntp sur une VM RHEL7 et j'étais en train de réinitialiser son heure ainsi que celle de l'hôte. Une fois satisfait, j'ai vérifié /var/log/messageset j'ai réalisé qu'il n'avait pas été changé depuis un moment.

Maintenant, peu importe ce que je fais, rien n'est enregistré, sauf lorsque je redémarre le service rsyslog lui-même; quand j'obtiens ceci:

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'

Essayer des choses comme logger testne pas se connecter, rien d'autre que les propres messages de rsyslog ne semble le faire. Lorsque j'exécute rsyslog manuellement avec -n -N1comme arguments, j'obtiens:

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

rsyslogd: End of config validation run. Bye

Il semble que rien ne puisse se connecter via rsyslog pour une raison quelconque. Et une deuxième machine virtuelle identique sur le même hôte (qui n'a pas traversé tout à fait le même cercle de désactivation répétée de ntp, ayant la date modifiée et redémarrée plusieurs fois) avec les mêmes journaux de fichier rsyslog.conf très bien.

À ce stade, la date et l'heure sont correctes, chrony est activé et fonctionne, et j'ai redémarré plusieurs fois - après 30 secondes de messages du noyau, rien d'autre n'est à nouveau enregistré.

Pensées?

Arkandel
la source
Je n'ai jamais utilisé RHEL7 auparavant mais je vérifierais /etc/rsyslog.confles /etc/rsyslog.drépertoires. Il semble que vous n'ayez rien configuré pour être routé vers un fichier journal particulier. Vous pouvez également essayer de spécifier un message syslog avec EMERGpriorité pour voir si cela passe. Exemple:logger -p EMERG not really an emergency
Bratchley
1
/etc/rsyslog.conf contient ceci: * .info; mail.none; authpriv.none; cron.none; local0.none / var / log / messages Comme pour les fichiers dans /etc/rsyslog.d, listen.conf, ceci : $ SystemLogSocketName / run / systemd / journal / syslog et rate-unlimit.conf this: $ SystemLogRateLimitInterval 0 $ SystemLogRateLimitBurst 0 Quant à la priorité EMERG, elle n'est pas enregistrée non plus.
Arkandel
Vous devriez probablement mettre à jour votre réponse ou coller cela depuis que nous avons perdu les sauts de ligne.
Bratchley
Désolé pour ça. Pour une raison quelconque, il n'analysera pas les sauts de ligne dans les commentaires. Lorsque je commente cela dans rsyslog.conf, la journalisation est à nouveau activée: $ OmitLocalLogging on. Cependant, sur mon autre machine virtuelle identique sur le même hôte, il n'est pas commenté et la journalisation fonctionne correctement.
Arkandel
En y regardant, apparemment, c'est une option pour systemd(vers laquelle RHEL7 a migré, IIRC) Pouvez-vous vérifier journalctl -bsi vos journaux vont dans le journal systemd?
Bratchley

Réponses:

19

Ce n'est pas une solution directe mais j'autoriserais un débogage pour voir ce qui se passe dans les coulisses.

Idée n ° 1 - Journal de débogage

Pour commencer lorsque vous exécutez vos loggercommandes, vous pouvez les faire comme cela, en faisant écho aux messages à STDERR.

$ logger -s "hi"
saml: hi

Idée n ° 2 - valider votre fichier de configuration

Vous pouvez également essayer de valider votre fichier de configuration 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ée n ° 3 - Augmentez le débogage de rsyslogd

J'essaierais également d'activer le débogage du rsyslogddémon pour plus d'informations.

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

Confirmation des informations de version

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

Bogue confirmé et solution de contournement

L'OP a soumis cela comme un bug à Red Hat.

Le bug a été caractérisé comme suit:

Effectivement, lorsque j'ai défini l'heure de l'hôte, la machine virtuelle a eu le même mauvais moment que l'hôte. C'est alors que j'ai remarqué que / var / log / messages n'était plus mis à jour.

Il s'avère que le redémarrage du service rsyslog lui-même se connecte aux fichiers à ce stade. Si je le fais, cela est enregistré:

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

Sinon, rien n'est enregistré dans le fichier, y compris l'enregistreur.

Si je commente $ OmitLocalLogging dans rsyslog.conf, la journalisation des fichiers reprend (notez que jusqu'à ce moment-là, je n'avais pas changé rsyslog.conf).

La journalisation dans le journal n'est pas affectée par tout cela. journalctl -b affiche la journalisation, y compris tout ce qui est envoyé par l'enregistreur.

À quoi l'un des développeurs a répondu:

Lorsque ce problème se produit, vous pouvez supprimer /var/lib/rsyslog/imjournal.stateet redémarrer le démon comme solution de contournement.

rsyslog ne gère pas la date directement mais uniquement via l'API systemd. J'ai vérifié le code dans imjournal il y a un moment et cela ressemble à un problème dans systemd.

Pour référence, voir: https://github.com/rsyslog/rsyslog/issues/43

slm
la source
J'ai signalé cela comme un rapport de bogue et j'ai reçu une réponse de RedHat. Les détails peuvent être consultés sur bugzilla.redhat.com/show_bug.cgi?id=1088021 . Ceci est fermé pour l'instant, merci à tous pour votre aide. :)
Arkandel
1
@Arkandel - merci d'avoir fermé la boucle à ce sujet. J'ai incorporé vos résultats et la solution de contournement dans ce A afin que nous puissions fermer le cycle de questions / réponses comme résolu (au moins dans le sens où c'est un bogue confirmé avec une solution de contournement). Veuillez marquer ce A comme accepté si vous êtes d'accord avec ce synopsis.
slm
4

Dans mon cas, systemctl restart systemd-journaldaidé, car

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
la source
1

Essayez de vérifier rsyslog conf avec: rsyslogd -f /etc/rsyslog.conf -N 1
Si tout va bien essayez de redémarrer systemd-journald.socket avec: systemctl restart systemd-journald.socket
vous pouvez utiliser la commande "logger" pour vérifier si rsyslog fonctionne ou non: enregistreur "bonjour"

S.Bao
la source