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