rsyslog ไม่ได้เข้าสู่ระบบ


17

นี่เป็นปัญหาแปลก ๆ

ฉันกำลังทดสอบบริการ chrony / ntp บน RHEL7 VM และกำลังรีเซ็ตเวลาเช่นเดียวกับโฮสต์ เมื่อฉันพอใจกับมันฉันตรวจสอบ/var/log/messagesและรู้ว่ามันไม่ได้เปลี่ยนไปในขณะที่

ตอนนี้ไม่ว่าสิ่งที่ฉันทำอะไรจะถูกบันทึกยกเว้นเมื่อฉันเริ่มบริการ rsyslog เอง; เมื่อฉันฉันจะได้รับสิ่งนี้:

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 testทำสิ่งต่าง ๆ เช่นไม่บันทึกไม่มีอะไรนอกจากข้อความของ rsyslog ดูเหมือนว่าจะ เมื่อฉันเรียกใช้ rsyslog ด้วยตนเอง-n -N1เป็นข้อโต้แย้งที่ฉันได้รับ:

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

rsyslogd: End of config validation run. Bye

ดูเหมือนว่าไม่มีอะไรสามารถเข้าสู่ rsyslog ด้วยเหตุผลบางอย่าง และ VM ที่เหมือนกันอันที่สองบนโฮสต์เดียวกัน (ซึ่งไม่ได้ผ่านวงกลมเดียวกันของการปิดใช้งาน ntp ซ้ำหลายครั้งโดยมีการเปลี่ยนวันที่และรีบูทหลายครั้ง) ด้วยไฟล์ rsyslog.conf เดียวกันก็ใช้ได้

ณ จุดนี้วันที่ / เวลาถูกต้องมีการเปิดใช้งานและทำงานเป็นเวลานานและฉันได้รีบูตหลายครั้ง - หลังจาก 30 วินาทีของข้อความเคอร์เนลไม่มีสิ่งใดได้รับการบันทึกอีกเลย

คิด?


ฉันไม่เคยใช้ RHEL7 มาก่อน แต่ฉันจะตรวจสอบ/etc/rsyslog.confและ/etc/rsyslog.dไดเรกทอรี ดูเหมือนว่าคุณไม่ได้กำหนดค่าอะไรให้ส่งไปยังไฟล์บันทึกเฉพาะ คุณอาจลองระบุข้อความ syslog โดยEMERGให้ความสำคัญเพื่อดูว่าข้อความนั้นผ่านหรือไม่ ตัวอย่าง:logger -p EMERG not really an emergency
Bratchley

1
/etc/rsyslog.conf มี: * .info; mail.none; authpriv.none; cron.none; local0.none / var / log / ข้อความสำหรับไฟล์ใน /etc/rsyslog.d, Listen.conf สิ่งนี้ : $ SystemLogSocketName / run / systemd / journal / syslog และ rate-unlimit.conf สิ่งนี้: $ SystemLogRateLimitInterval 0 $ SystemLogRateLimitBurst 0 สำหรับลำดับความสำคัญ EMERG มันไม่ได้ถูกบันทึกไว้อย่างใดอย่างหนึ่ง
Arkandel

คุณน่าจะอัปเดตคำตอบหรือ pastebin ของคุณเนื่องจากเราทำตัวแบ่งบรรทัดขาด
Bratchley

ขอโทษสำหรับเรื่องนั้น. ด้วยเหตุผลบางอย่างมันจะไม่แยกวิเคราะห์ linefeeds ในความคิดเห็น เมื่อฉันแสดงความคิดเห็นในการบันทึก rsyslog.conf เปิดใช้งานอีกครั้ง: $ OmitLocalLogging อย่างไรก็ตามใน VM ที่เหมือนกันอื่น ๆ ของฉันบนโฮสต์เดียวกันมันไม่ได้ถูกคอมเม้นต์และการบันทึกจะทำงานได้ดี
Arkandel

เมื่อมองเข้าไปแล้วเห็นได้ชัดว่าเป็นตัวเลือกสำหรับsystemd(ซึ่ง RHEL7 ย้ายไปยัง IIRC) คุณสามารถตรวจสอบjournalctl -bเพื่อดูว่าบันทึกของคุณกำลังจะไปที่เจอร์นัลของระบบหรือไม่?
Bratchley

คำตอบ:


19

ไม่ใช่วิธีแก้ปัญหาโดยตรง แต่ฉันจะเปิดใช้งานการดีบักเพื่อดูว่าเกิดอะไรขึ้นหลังฉาก

แนวคิด # 1 - การดีบักตัวบันทึก

สำหรับ starters เมื่อคุณเรียกใช้loggerคำสั่งของคุณคุณสามารถทำได้เช่นนั้นสะท้อนข้อความไปยัง STDERR

$ logger -s "hi"
saml: hi

แนวคิด # 2 - ตรวจสอบไฟล์กำหนดค่าของคุณ

คุณสามารถลองตรวจสอบไฟล์กำหนดค่า 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

ความคิด # 3 - เปิดใช้งานการดีบัก rsyslogd

ฉันจะลองเปิดใช้งานการดีบั๊กของrsyslogdดีมอนเพื่อทำความเข้าใจเพิ่มเติม

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

ยืนยันข้อมูลรุ่น

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

ยืนยันข้อบกพร่องและวิธีแก้ไขปัญหา

OP ส่งสิ่งนี้เป็นข้อผิดพลาดกับ Red Hat

ข้อผิดพลาดมีลักษณะดังนี้:

แน่นอนเมื่อฉันตั้งค่าเวลาของโฮสต์ VM มีเวลาผิดปกติเหมือนกับโฮสต์ นั่นคือเมื่อฉันสังเกตเห็น / var / log / ข้อความไม่มีการปรับปรุงอีกต่อไป

มันกลับกลายเป็นว่าไม่มีอะไรอื่นนอกจากการรีสตาร์ทเซอร์วิส rsyslog เองนั้นจะบันทึกลงไฟล์ที่จุดนั้น ถ้าฉันทำเช่นนี้จะได้รับการบันทึก:

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

มิฉะนั้นจะไม่มีการบันทึกสิ่งใดในไฟล์รวมถึงตัวบันทึก

หากฉันแสดงความคิดเห็น $ OmitLocalLogging เปิดใน rsyslog.conf การบันทึกไฟล์จะดำเนินการต่อ (สังเกตว่าจนกว่าจะถึงจุดนั้นฉันก็ไม่ได้เปลี่ยน rsyslog.conf)

การบันทึกผ่านเจอร์นัลไม่ได้รับผลกระทบทั้งหมดนี้ journalctl -b แสดงการบันทึกรวมถึงสิ่งที่ส่งโดยคนตัดไม้

ผู้พัฒนารายใดตอบกลับ:

เมื่อปัญหานี้เกิดขึ้นคุณสามารถลบ/var/lib/rsyslog/imjournal.stateและรีสตาร์ท daemon เป็นวิธีแก้ปัญหา

rsyslog ไม่จัดการวันที่โดยตรง แต่ผ่าน systemd API เท่านั้น ฉันได้ตรวจสอบรหัสใน imjournal เมื่อไม่นานมานี้และดูเหมือนว่าปัญหาใน systemd

สำหรับการอ้างอิงโปรดดู: https://github.com/rsyslog/rsyslog/issues/43


ฉันนำสิ่งนี้ขึ้นเป็นรายงานข้อผิดพลาดและได้รับการตอบสนองจาก RedHat รายละเอียดสามารถมองเห็นที่bugzilla.redhat.com/show_bug.cgi?id=1088021 ตอนนี้ปิดแล้วขอบคุณทุกคนสำหรับความช่วยเหลือของคุณ :)
Arkandel

1
@Akkandel - ขอบคุณที่ปิดลูปในส่วนนี้ ฉันได้รวมสิ่งที่คุณค้นพบและวิธีแก้ปัญหาลงใน A นี้เพื่อให้เราสามารถปิดรอบคำถามและคำตอบตามที่ได้รับการแก้ไข (อย่างน้อยก็ในแง่ที่ว่ามันเป็นข้อผิดพลาดที่ยืนยันแล้วด้วย โปรดทำเครื่องหมาย A นี้ว่ายอมรับถ้าคุณเห็นพ้องกับบทสรุปนี้
slm

4

ในกรณีของฉันsystemctl restart systemd-journaldช่วยเพราะ

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 กับ: rsyslogd -f /etc/rsyslog.conf -N 1
หากทุกอย่างโอเคลองรีสตาร์ท systemd-journald.socket ด้วย: systemctl รีสตาร์ท systemd-journald.socket
คุณสามารถใช้คำสั่ง "คนตัดไม้" เพื่อตรวจสอบ ถ้า rsyslog ทำงานหรือไม่: logger "hello"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.