rsyslog không đăng nhập


17

Đây là một vấn đề kỳ lạ.

Tôi đã thử nghiệm các dịch vụ chrony / ntp trên máy ảo RHEL7 và đang đặt lại thời gian cũng như của máy chủ lưu trữ. Khi tôi đã hài lòng với nó, tôi đã kiểm tra /var/log/messagesvà nhận ra rằng nó đã không được thay đổi trong một thời gian.

Bây giờ, bất kể tôi làm gì, không có gì được ghi lại ngoại trừ khi tôi tự khởi động lại dịch vụ rsyslog; Khi tôi làm tôi nhận được điều này:

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'

Thử những thứ như logger testkhông đăng nhập, không có gì khác ngoại trừ tin nhắn của rsyslog dường như. Khi tôi chạy rsyslog bằng tay với các -n -N1đối số tôi nhận được:

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

rsyslogd: End of config validation run. Bye

Có vẻ như không có gì có thể đăng nhập thông qua rsyslog vì một số lý do. Và một VM giống hệt thứ hai trên cùng một máy chủ (không trải qua cùng một vòng lặp vô hiệu hóa ntp, có ngày thay đổi và khởi động lại nhiều lần) với cùng một tệp nhật ký rsyslog.conf.

Tại thời điểm này, ngày / giờ là chính xác, chrony được bật và chạy và tôi đã khởi động lại nhiều lần - sau 30 giây tin nhắn kernel, không có gì khác được ghi lại.

Suy nghĩ?


Tôi chưa sử dụng RHEL7 trước đây nhưng tôi sẽ kiểm tra /etc/rsyslog.confvà các /etc/rsyslog.dthư 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ống EMERGưu tiên để xem nếu điều đó được thông qua. Ví dụ:logger -p EMERG not really an emergency
Bratchley

1
/etc/rsyslog.conf chứa nội dung này: * .info; mail.none; authpriv.none; cron.none; local0.none / var / log / message Đối với các tệp trong /etc/rsyslog.d, lắng nghe. : $ SystemLogSocketName / run / systemd / tạp chí / syslog và Rate-unlimit.conf này: $ SystemLogRateLimitInterval 0 $ SystemLogRateLimitBurst 0 Đối với ưu tiên EMERG, nó cũng không được ghi lại.
Arkandel

Bạn có thể nên cập nhật câu trả lời hoặc pastebin của mình vì chúng tôi đã mất dòng ngắt ở đó.
Bratchley

Xin lỗi vì điều đó. Vì một số lý do, nó sẽ không phân tích các nguồn cấp dữ liệu trong các bình luận. Khi tôi nhận xét điều này trong đăng nhập rsyslog.conf được bật lại: $ OmitLocalLogging. Tuy nhiên, trên máy ảo giống hệt khác của tôi trên cùng một máy chủ, nó không được nhận xét và ghi nhật ký hoạt động tốt.
Arkandel

Nhìn vào đó, rõ ràng đó là một lựa chọn cho systemd(mà RHEL7 đã di chuyển sang, IIRC) Bạn có thể kiểm tra journalctl -bxem liệu nhật ký của bạn có đi đến tạp chí systemd không?
Bratchley

Câu trả lời:


19

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 loggerlệ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 rsyslogdtrì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.statevà 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


Tôi đã đưa nó lên như một báo cáo lỗi và nhận được phản hồi từ RedHat. Thông tin chi tiết có thể được xem tại bugzilla.redhat.com/show_orms.cgi?id=1088021 . Điều này hiện đang đóng cửa, cảm ơn sự giúp đỡ của mọi người. :)
Arkandel

1
@Arkandel - cảm ơn vì đã đóng vòng lặp này. Tôi đã kết hợp các phát hiện của bạn và cách giải quyết vào A này để chúng tôi có thể đóng chu trình Hỏi & Đáp như đã giải quyết (ít nhất là theo nghĩa đó là một lỗi đã được xác nhận với một cách giải quyết). Vui lòng đánh dấu A này là chấp nhận nếu bạn đồng ý với bản tóm tắt này.
slm

4

Trong trường hợp của tôi systemctl restart systemd-journaldđã giúp, bởi vì

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

Hãy thử kiểm tra rsyslog conf với: rsyslogd -f /etc/rsyslog.conf -N 1
Nếu mọi thứ đều ổn, hãy thử khởi động lại systemd-journald.socket bằng: systemctl restart systemd-journald.socket
bạn có thể sử dụng lệnh "logger" để kiểm tra nếu rsyslog có hoạt động hay không: logger "xin chào"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.