Không phải là một giải pháp trực tiếp nhưng tôi sẽ cho phép một số gỡ lỗi để xem những gì xảy ra đằng sau hậu trường.
Ý tưởng số 1 - Trình gỡ lỗi logger
Để bắt đầu khi bạn chạy các logger
lệnh của mình, bạn có thể thực hiện chúng như vậy, lặp lại các thông báo tới STDERR.
$ logger -s "hi"
saml: hi
Ý tưởng số 2 - xác thực tệp cấu hình của bạn
Bạn cũng có thể thử xác nhận tệp cấu hình rsyslog của mình:
$ 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
Ý tưởng số 3 - Bật gỡ lỗi rsyslogd
Ngoài ra, tôi sẽ thử bật gỡ lỗi rsyslogd
trình nền để hiểu rõ hơn.
$ 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'
Xác nhận thông tin phiên bản
$ 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.
Xác nhận lỗi và một cách giải quyết
OP đã gửi điều này như một lỗi cho Red Hat.
Các lỗi được đặc trưng như sau:
Chắc chắn khi tôi đặt thời gian riêng của máy chủ, VM có cùng thời gian với máy chủ. Đó là khi tôi nhận thấy / var / log / message không còn được cập nhật.
Hóa ra không có gì khác ngoài việc khởi động lại dịch vụ rsyslog tự ghi nhật ký vào các tệp tại thời điểm đó. Nếu tôi làm như vậy thì điều này được ghi lại:
---
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
---
Nếu không, không có gì được ghi vào tập tin, bao gồm cả logger.
Nếu tôi nhận xét $ OmitLocalLogging trong rsyslog.conf thì hồ sơ đăng nhập lại (lưu ý rằng cho đến thời điểm đó tôi đã không thay đổi rsyslog.conf).
Đăng nhập thông qua tạp chí không bị ảnh hưởng bởi tất cả điều này. Tạp chí -b hiển thị ghi nhật ký, bao gồm mọi thứ được gửi bởi logger.
Một trong những nhà phát triển đã trả lời:
Khi sự cố này xảy ra, bạn có thể xóa /var/lib/rsyslog/imjournal.state
và khởi động lại daemon như một cách giải quyết.
rsyslog không xử lý ngày trực tiếp mà chỉ thông qua API systemd. Tôi đã kiểm tra mã trong báo cáo trước đây và điều này có vẻ như là một vấn đề trong systemd.
Để tham khảo, xem: https://github.com/rsyslog/rsyslog/issues/43
/etc/rsyslog.conf
và các/etc/rsyslog.d
thư mục. Có vẻ như bạn không có bất kỳ cấu hình nào được định tuyến đến một tệp nhật ký cụ thể. Bạn cũng có thể thử chỉ định một thông báo nhật ký hệ thốngEMERG
ưu tiên để xem nếu điều đó được thông qua. Ví dụ:logger -p EMERG not really an emergency