rsyslog tidak masuk

17

Ini adalah masalah aneh.

Saya sedang menguji layanan chrony / ntp pada RHEL7 VM dan sedang mengatur ulang waktu serta tuan rumah. Setelah saya puas dengan itu saya memeriksa /var/log/messagesdan menyadari itu tidak berubah dalam beberapa saat.

Sekarang, apa pun yang saya lakukan, tidak ada yang dicatat kecuali saat saya me-restart layanan rsyslog itu sendiri; ketika saya melakukannya saya mendapatkan ini:

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'

Mencoba hal-hal seperti logger testjangan login, tidak ada yang lain kecuali pesan rsyslog sendiri. Ketika saya menjalankan rsyslog secara manual dengan -n -N1sebagai argumen saya mendapatkan:

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

rsyslogd: End of config validation run. Bye

Sepertinya tidak ada yang bisa masuk melalui rsyslog untuk beberapa alasan. Dan VM identik kedua pada host yang sama (yang tidak melalui lingkaran yang sama berulang kali menonaktifkan ntp, memiliki tanggal berubah dan reboot beberapa kali) dengan file log rsyslog.conf yang sama baik-baik saja.

Pada titik ini tanggal / waktu sudah benar, chrony diaktifkan dan berjalan, dan saya telah reboot beberapa kali - setelah 30 detik pesan kernel tidak ada lagi yang dicatat.

Pikiran?

Arkandel
sumber
Saya belum pernah menggunakan RHEL7 sebelumnya tetapi saya akan memeriksa /etc/rsyslog.confdan /etc/rsyslog.ddirektori. Sepertinya Anda tidak memiliki apa pun yang dikonfigurasi untuk diarahkan ke file log tertentu. Anda juga dapat mencoba menentukan pesan syslog dengan EMERGprioritas untuk melihat apakah itu berhasil. Contoh:logger -p EMERG not really an emergency
Bratchley
1
/etc/rsyslog.conf berisi ini: * .info; mail.none; authpriv.none; cron.none; local0.none / var / log / messages Adapun file di /etc/rsyslog.d, dengarkan.conf, ini : $ SystemLogSocketName / run / systemd / journal / syslog dan rate-unlimit.conf ini: $ SystemLogRateLimitInterval 0 $ SystemLogRateLimitBurst 0 Adapun prioritas EMERG, ia tidak bisa login.
Arkandel
Anda mungkin harus memperbarui jawaban atau pastebin bahwa karena kami kehilangan jeda baris di sana.
Bratchley
Maaf soal itu. Untuk beberapa alasan itu tidak akan melewatkan umpan baris dalam komentar. Ketika saya mengomentari ini di rsyslog.conf logging diaktifkan lagi: $ OmitLocalLogging aktif. Namun pada VM identik saya yang lain pada host yang sama itu tidak berkomentar dan logging berfungsi dengan baik.
Arkandel
Melihat ke dalamnya, ternyata itu adalah opsi untuk systemd(yang bermigrasi ke RHEL7, IIRC) Dapatkah Anda memeriksa journalctl -buntuk melihat apakah log Anda akan ke jurnal systemd?
Bratchley

Jawaban:

19

Bukan solusi langsung tetapi saya akan memungkinkan beberapa debugging untuk melihat apa yang terjadi di balik layar.

Ide # 1 - Debugging logger

Sebagai permulaan ketika Anda menjalankan loggerperintah, Anda dapat melakukannya seperti itu, menggemakan pesan ke STDERR.

$ logger -s "hi"
saml: hi

Ide # 2 - memvalidasi file konfigurasi Anda

Anda juga dapat mencoba memvalidasi file konfigurasi rsyslog Anda:

$ 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

Ide # 3 - Aktifkan debugging rsyslogd

Saya juga akan mencoba mengaktifkan debugging rsyslogddaemon untuk wawasan lebih lanjut.

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

Mengkonfirmasi info versi

$ 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 yang dikonfirmasi dan solusinya

OP mengirimkan ini sebagai bug ke Red Hat.

Bug ditandai sebagai berikut:

Benar saja ketika saya mengatur waktu tuan rumah sendiri VM memiliki waktu yang salah sama dengan tuan rumah. Saat itulah saya perhatikan / var / log / pesan tidak lagi diperbarui.

Ternyata tidak lain dari me-restart layanan rsyslog itu sendiri log ke file pada saat itu. Jika saya melakukannya ini akan dicatat:

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

Kalau tidak, tidak ada yang dicatat ke file, termasuk logger.

Jika saya berkomentar $ OmitLocalLogging di dalam rsyslog.conf maka file logging resume (perhatikan bahwa sampai saat itu saya belum mengubah rsyslog.conf).

Masuk melalui jurnal tidak terpengaruh oleh semua ini. journalctl -b menunjukkan logging, termasuk apa pun yang dikirim oleh logger.

Di mana salah satu pengembang merespons:

Ketika masalah ini terjadi, Anda dapat menghapus /var/lib/rsyslog/imjournal.statedan memulai ulang daemon sebagai solusinya.

rsyslog tidak menangani tanggal secara langsung tetapi hanya melalui API systemd. Saya telah memeriksa kode di imjournal beberapa waktu lalu dan ini terlihat seperti masalah di systemd.

Untuk referensi, lihat: https://github.com/rsyslog/rsyslog/issues/43

slm
sumber
Saya membawa ini sebagai laporan bug dan mendapat tanggapan dari RedHat. Detail dapat dilihat di bugzilla.redhat.com/show_bug.cgi?id=1088021 . Ini ditutup untuk sekarang, terima kasih semuanya atas bantuan Anda. :)
Arkandel
1
@Arkandel - terima kasih telah menutup loop tentang ini. Saya telah memasukkan temuan Anda dan solusinya ke dalam A ini sehingga kami dapat menutup siklus Q&A sebagai terselesaikan (setidaknya dalam arti bahwa itu adalah bug yang dikonfirmasi dengan solusi). Harap tandai A ini sebagai diterima jika Anda setuju dengan sinopsis ini.
slm
4

Dalam kasus saya systemctl restart systemd-journaldmembantu, karena

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

Cobalah untuk memeriksa conf rsyslog dengan: rsyslogd -f /etc/rsyslog.conf -N 1
Jika semuanya baik-baik saja coba restart systemd-journald.socket dengan: systemctl restart systemd-journald.socket
Anda dapat menggunakan perintah "logger" untuk memeriksa apakah rsyslog berfungsi atau tidak: logger "hello"

S.Bao
sumber