rsyslog günlüğe kaydetmiyor


17

Bu garip bir mesele.

Bir RHEL7 VM üzerinde chrony / ntp hizmetlerini test ediyordum ve zamanının yanı sıra ana bilgisayarın ayarlarını da sıfırlıyordum. Memnun /var/log/messageskaldım bir süre kontrol ettim ve bir süre değiştirilmediğini fark ettim.

Şimdi ne yaparsam yapayım rsyslog hizmetinin kendisini yeniden başlattığım zaman dışında tutuluyor; ne zaman bunu elde:

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'

logger testGünlüğe kaydetme gibi şeyler denemek , rsyslog'un kendi mesajları dışında başka bir şey görünmüyor. Ben -n -N1argüman olarak rsyslog elle çalıştırdığımda :

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

rsyslogd: End of config validation run. Bye

Görünüşe göre hiçbir şey rsyslog üzerinden bir sebepten dolayı giriş yapamaz. Ve aynı rsyslog.conf dosyası ile aynı ana bilgisayarda (aynı ntp'yi tekrar tekrar devre dışı bırakma, tarihin değişmesi ve birden çok kez yeniden başlatılmasıyla aynı daireden geçmemiş) ikinci bir özdeş VM gayet iyi çalışıyor.

Bu noktada tarih / saat doğru, kronik etkin ve çalışıyor ve birkaç kez yeniden başlattım - 30 saniyelik çekirdek mesajlarından sonra tekrar hiçbir şey kaydedilmez.

Düşünceler?


Daha önce RHEL7 kullanmadım ama kontrol /etc/rsyslog.confve /etc/rsyslog.ddizinleri. Belirli bir günlük dosyasına yönlendirilmek üzere yapılandırılmış hiçbir şeyiniz yok gibi görünüyor. Ayrıca EMERGbunun gerçekleşip gerçekleşmediğini görmek için öncelikli bir sistem günlüğü mesajı belirlemeyi de deneyebilirsiniz . Örnek:logger -p EMERG not really an emergency
Bratchley

1
/etc/rsyslog.conf şunu içerir: * .info; mail.none; authpriv.none; cron.none; local0.none / var / log / messages /etc/rsyslog.d, listen.conf dosyasındaki gibi : $ SystemLogSocketName / run / systemd / journal / syslog ve rate-unlimit.conf bu: $ SystemLogRateLimitInterval 0 $ SystemLogRateLimitBurst 0 EMERG önceliği için de günlüğe kaydedilmez.
Arkandel

Muhtemelen cevabınızı güncellemelisiniz ya da satır sonlarını kaybettiğimizden bu yana macunu kullanmalısınız.
Bratchley

Bunun için üzgünüm. Nedense yorumlarda satır beslemelerini ayrıştırmaz. Ne zaman bu yorum rsyslog.conf günlüğe kaydetme yeniden etkinleştirilir: $ OmitLocalLogging açık. Ancak aynı ana bilgisayardaki diğer özdeş VM'de yorum yapılmamış ve günlük kaydı iyi çalışıyor.
Arkandel

Görünüşe göre, görünüşe göre bu bir seçenek systemd(hangi RHEL7'ye taşındı, IIRC) journalctl -bGünlüklerinizin sistem günlüğüne gidip gitmediğini kontrol edebilir misiniz ?
Bratchley

Yanıtlar:


19

Doğrudan bir çözüm değil ama sahne arkasında neler olduğunu görmek için bazı hata ayıklama sağlar.

Fikir # 1 - Hata ayıklayıcı günlüğü

loggerKomutlarınızı çalıştırdığınızda yeni başlayanlar için bunları STDERR'a tekrarlayarak bu şekilde yapabilirsiniz.

$ logger -s "hi"
saml: hi

Fikir # 2 - Yapılandırma dosyanızı doğrulayın

Ayrıca rsyslog yapılandırma dosyanızı doğrulamayı da deneyebilirsiniz:

$ 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

Fikir # 3 - rsyslogd hata ayıklamasını aç

Ayrıca rsyslogddaha fazla bilgi için arka plan programının hata ayıklamasını etkinleştirmeyi denerdim .

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

Sürüm bilgisini onaylama

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

Onaylanan hata ve bir geçici çözüm

OP bunu Red Hat'a bir hata olarak gönderdi.

Böcek aşağıdaki gibi karakterize edildi:

Ana bilgisayarın kendi saatini ayarladığımda, VM'nin ana bilgisayarla aynı yanlış zamana sahip olduğundan emin olabilirsiniz. İşte o zaman / var / log / mesajlarının güncellenmediğini fark ettim.

Bu noktada rsyslog hizmetinin kendisini günlüklere yeniden başlatmaktan başka bir şey çıkmaz. Bunu yaparsam bu günlüğe kaydedilir:

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

Aksi takdirde, kaydedici dahil hiçbir şey günlüğe kaydedilmez.

Ben rsyslog.conf $ OmitLocalLogging açık yorum sonra dosya günlüğü devam eder (o noktaya kadar rsyslog.conf değişmemişti dikkat edin).

Dergide oturum açmak bunlardan etkilenmez. journalctl -b günlükçünün gönderdiği her şeyi içeren günlük kaydını gösterir.

Geliştiricilerden birinin yanıt verdiği:

Bu sorun oluştuğunda, /var/lib/rsyslog/imjournal.stategeçici bir çözüm olarak arka plan programını silebilir ve yeniden başlatabilirsiniz.

rsyslog tarihi doğrudan işlemez, yalnızca systemd API'sı aracılığıyla işler. Bir süre önce haksız yere kodu kontrol ettik ve bu systemd bir sorun gibi görünüyor.

Referans için bakınız: https://github.com/rsyslog/rsyslog/issues/43


Bunu bir hata raporu olarak gündeme getirdim ve RedHat'tan bir yanıt aldım. Ayrıntılar bugzilla.redhat.com/show_bug.cgi?id=1088021 adresinde görülebilir . Bu şimdilik kapalı, yardımlarınız için herkese teşekkürler. :)
Arkandel

1
@Arkada - bu konuyu kapattığınız için teşekkürler. Bulgularınızı ve geçici çözümü bu A'ya dahil ettim, böylece Soru-Cevap döngüsünü çözümlenmiş olarak kapatabiliriz (en azından bir çözümün w / onaylanmış bir hata olduğu anlamında). Bu özeti kabul ediyorsanız lütfen A'yı kabul edilmiş olarak işaretleyin.
slm

4

Benim durumumda systemctl restart systemd-journaldyardımcı oldu, çünkü

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

Rsyslog conf ile kontrol etmeye çalışın: rsyslogd -f /etc/rsyslog.conf -N 1
Herşey yolundaysa, systemd-journalald.socket komutunu yeniden başlatmayı deneyin: systemctl restart systemd-journalald.socket
Kontrol etmek için "logger" komutunu kullanabilirsiniz. rsyslog çalışırsa ya da çalışmazsa: logger "merhaba"

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.