Mối quan hệ của rsyslog và tạp chí trên Ubuntu 16.04


18

Tôi đang chạy máy chủ Ubuntu 16.04 vanilla là gì và tôi đang cố gắng che giấu cách đăng nhập được thiết lập theo mặc định. Tôi có thể thấy rằng cả hai journaldrsyslogđược cài đặt và chạy, nhưng tôi không rõ ràng về cách xử lý thông điệp tường trình.

Hầu hết các tin nhắn dường như hiển thị cả trong /var/log/syslogvà qua journalctl, nhưng tôi không thể thấy bất kỳ cấu hình rõ ràng nào để chuyển tiếp giữa hai trong hai /etc/systemd/journald.conf(về cơ bản là tất cả được nhận xét theo mặc định), /etc/rsyslog.confhoặc /etc/rsyslog.d/50-default.conf. Tôi đã cố gắng tìm tài liệu chính thức, hoặc thậm chí một bài đăng trên blog giải thích cách hai người được thiết lập trong Ubuntu, nhưng không thể tìm thấy bất cứ điều gì.

Để thêm vào sự nhầm lẫn của tôi, tôi đã thực hiện logger -p local1.info Testtrên máy chủ và thấy rằng không có gì được viết /var/log/syslog, trong khi thông báo đã hiển thị bên dưới journalctl.

Câu hỏi của tôi là:

  1. Chính xác thì journald và rsyslog hoạt động như thế nào trên Ubuntu 16.04 (theo mặc định)?
  2. Làm thế nào đến tin nhắn được gửi từ loggerdường như kết thúc trong tạp chí, nhưng không phải trong syslog?

Cập nhật: Hóa ra loggerviệc không hoạt động như mong đợi là một lỗi của tôi, vì vậy nó không liên quan đến câu hỏi chính.

Câu trả lời:


12

Theo mặc định rsysloglà sử dụng mô-đun "imuxsock", mô-đun cung cấp:

khả năng chấp nhận các thông báo nhật ký hệ thống thông qua các ổ cắm Unix cục bộ. Quan trọng nhất, đây là cơ chế mà cuộc gọi syslog (3) chuyển các thông báo nhật ký hệ thống tới rsyslogd [1] .

Có thể rsyslognhập thông điệp tường trình có cấu trúc từ nhật ký hệ thống bằng cách sử dụng mô-đun có tên "imjournal" [2] .

Nó có thể được tải như:

module(load="imjournal") 

trong:

/etc/rsyslog.conf

Mặt khác, "systemd-journald" nắm bắt tất cả dữ liệu:

man systemd-journald

systemd-journald là một dịch vụ hệ thống thu thập và lưu trữ dữ liệu đăng nhập. Nó tạo và duy trì các tạp chí có cấu trúc, được lập chỉ mục dựa trên thông tin đăng nhập nhận được từ nhiều nguồn khác nhau:

   ·   Kernel log messages, via kmsg
   ·   Simple system log messages, via the libc syslog(3) call
   ·   Structured system log messages via the native Journal API, 
       see sd_journal_print(4)
   ·   Standard output and standard error of system services
   ·   Audit records, via the audit subsystem

Bạn có thể vô hiệu hóa rsyslogdtrong khi bạn vẫn có quyền truy cập vào nhật ký hệ thống bằng cách sử dụng journalctl.

$ sudo systemctl mask rsyslogd
$ sudo systemctl stop syslog.socket
$ sudo systemctl stop rsyslog.service
$ systemctl is-active rsyslog.service 
inactive
$ logger -p mail.info Helllooo
$ journalctl

Ví dụ, centos đang sử dụng mô-đun "imuxsock" để thu thập tất cả dữ liệu "systemd-journald" rsyslogtrong khi openuse hoàn toàn không có "syslog".


Để tìm hiểu lý do tại sao tin nhắn của bạn không kết thúc /var/log/syslog, bạn nên kiểm tra tệp này:

less /etc/rsyslog.d/50-default.conf

tìm kiếm *.info, xem nơi chúng sẽ được lưu trữ, nó có thể là một tập tin khác như thế nào messages.

Đối với tôi nó xuất hiện trong cả hai journalctlsyslog.


logger -p .info hellokhông hợp lệ Bạn đã không đưa ra bất kỳ tên cơ sở.
luv.preet

Cập nhật câu trả lời ....
Ravexina

Như tôi đã lưu ý trong bản chỉnh sửa của mình, loggerkhông hoạt động là lỗi của tôi, vì vậy giờ đã được sửa (cảm ơn vì các mẹo dù sao). Đối với các bản ghi hiển thị ở hai nơi, ghi chú của bạn imuxsockdường như là chìa khóa: có vẻ như cả rsyslog và journald đều đang nghe tin nhắn nhật ký hệ thống cục bộ, do đó tại sao các mục đó lại đi vào hai bản ghi riêng biệt.

Tôi đã làm theo những điều trên trên Ubuntu và bây giờ tôi không nhận được bất kỳ nhật ký nào từ logger, hmm: root @ T: ~ # logger -p mail.info Helllooo root @ T: ~ # Tạp chí Không tìm thấy tệp nhật ký. - Không có mục - bất kỳ ý tưởng?
Hackeron

Câu trả lời chính xác. Tuy nhiên, điều tôi thiếu là một lưu ý về cách journald biết để mở ổ cắm syslog (hoặc nếu không, làm thế nào nó nhận được thông báo nhật ký hệ thống) khi rsyslog bị vô hiệu hóa? Hoặc là một số cấu hình thủ công của journald cần thiết?
Matthijs Kooijman

4

Systemd là một hệ thống init được sử dụng để khởi động các dịch vụ khi hệ thống khởi động. Journald chịu trách nhiệm tạo nhật ký cho các dịch vụ được khởi động bởi systemd. Bằng cách tích hợp journald với systemd, ngay cả các thông báo quá trình khởi động sớm nhất cũng có sẵn cho journald.

Rsyslog là một trình nền được tạo đặc biệt để xử lý nhật ký, không liên quan gì đến journald. Nó có thể lấy nhật ký bằng nhiều cách và xuất chúng theo nhiều cách. Nó không được kích hoạt theo mặc định mà nó cũng nhận thông điệp tường trình từ journald. Muốn vậy, bạn phải ghi vào tập tin /etc/rsyslog.conf,

$ModLoad imjournal # im -> input module
OR
load(type="imjournal")

Bây giờ, nó cũng sẽ chấp nhận nhật ký từ journald. Nhưng tôi khuyên bạn không nên thay đổi tập tin /etc/rsyslog.conf của mình.

Ở cuối tệp /etc/rsyslog.conf, có một dòng được viết,

$IncludeConfig /etc/rsyslog.d/*.conf

Điều đó có nghĩa là tất cả các tệp có .conf ở cuối thư mục /etc/rsyslog.d/ phải được đưa vào trong khi tải rsyslog. Vì vậy, tất cả các cấu hình tùy chỉnh của bạn sẽ có trong các tệp này

Tôi sẽ đề nghị bạn tạo một tập tin /etc/rsyslog.d/journald.conf và dán đoạn trích dưới đây vào đó.

Dưới đây là đoạn trích từ trang chính thức của rsyslog

module(load="imjournal" PersistStateInterval="100"
   StateFile="/path/to/file") #load imjournal module
module(load="mmjsonparse") #load mmjsonparse module for structured logs

template(name="CEETemplate" type="string" string="%TIMESTAMP% %HOSTNAME% %syslogtag% @cee: %$!all-json%\n" ) #template for messages

action(type="mmjsonparse")
action(type="omfile" file="/var/log/ceelog" template="CEETemplate")

Dòng 1 - nó tải mô-đun imjournal để chấp nhận nhật ký từ journald

2 - Mô-đun mmjsonparse được tải được sử dụng để phân tích cú pháp các bản ghi

3 - Chúng được cấu trúc thành định dạng được mô tả trong mẫu

4 - Nó phân tích các bản ghi đó bằng mô-đun mmjsonparse.

5 - Nó gửi các bản ghi đó đến một tệp cụ thể là / var / log / ceelog theo cấu trúc được cung cấp trong mẫu đã cho, sử dụng mô đun omfile (tệp mô-đun đầu ra - đầu ra thành tệp).

Thay đổi cấu hình theo nhu cầu của bạn.


Cảm ơn lời giải thích, nhưng tôi nghĩ rằng câu trả lời của @Ravexina gần hơn để giúp tôi hiểu những gì đang xảy ra với rsyslog và journald, theo mặc định (không có cấu hình bổ sung).
motns
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.