Là systemd-journald là một triển khai nhật ký hệ thống?


22

Tôi tự hỏi nếu systemd-journald là một triển khai mới của giao thức syslog, hay đúng hơn, nó sử dụng các triển khai syslog, chẳng hạn như rsyslog, syslog-ng

Tôi đã googled một chút, nhưng tôi không thấy có gì thuyết phục về nó.


Bạn có thể muốn làm rõ nếu bằng "giao thức syslog", bạn có nghĩa là nhận syslog trên tcp | udp 514 hoặc gửi hoặc cả hai.
Alex Stragies

cũng có thể xem bản dupe có thể: unix.stackexchange.com/questions/83173/NH
Alex

Câu trả lời:


33

Theo như các giao thức có liên quan, systemd-journald...

  • Sọ là người nghe trên một ổ cắm luồng có tên /run/systemd/journal/stdout. systemd kết nối các đầu ra tiêu chuẩn thô và lỗi của các dịch vụ (đã được mặc định hoặc rõ ràng có StandardOutput=journal/ StandardError=journal) với ổ cắm này. Do đó, nó nhận được giao thức của các bản ghi định dạng tự do có độ dài thay đổi được kết thúc bằng nguồn cấp dữ liệu.
  • Có thể là người nghe trên các socket datagram có tên /run/systemd/journal/dev-log, được liên kết tượng trưng từ /dev/log. Điều này nhận được giao thức mà syslog()chức năng thư viện trong thư viện GNU C, được liên kết thành các ứng dụng, nói.
  • Cỗ máy cố gắng trở thành khách hàng của một dịch vụ khác lắng nghe trên một ổ cắm datagram có tên /run/systemd/journal/syslog. Điều này cũng nhận được giao thức mà syslog()chức năng thư viện trong thư viện GNU C nói (mặc dù systemd-journaldthực tế sử dụng một thư viện khác và một chức năng khác để nói nó).
  • Khoan là một độc giả từ một thiết bị nhân vật có tên /dev/kmsg. Điều này nhận được giao thức mà nhân Linux nói, là giao thức có độ dài thay đổi, phần lớn là định dạng tự do, các bản ghi được kết thúc bằng các nguồn cấp dữ liệu.
  • Có thể là người nghe trên một ổ cắm datagram có tên /run/systemd/journal/socket. Điều này tương tự với trường hợp thư viện GNU C trong đó các ứng dụng liên kết với một thư viện nói một giao thức nhất định với ổ cắm này; ngoại trừ chức năng sd_journal_sendv(), nó nằm trong thư viện C hệ thống mà các ứng dụng liên kết đến và giao thức không được chuẩn hóa mà là giao thức chỉ có hệ thống bao gồm một mảng các cặp key = value và tùy chọn mô tả tệp có thể đọc được, trong mỗi datagram .

Giao thức được nói bởi syslog()chức năng trong thư viện GNU C không phải là RFC 5424 hay RFC 3164, và thực sự là tiêu chuẩn thực tế của chính nó. Đó không phải là RFC 5424 vì nó không có khoảng trắng chính xác và dấu gạch ngang chỉ định các trường tùy chọn có giá trị NIL. Nó không phải là RFC 3164 vì nó có một PROCIDtrường thay vì a HOSTNAME.

Một vài năm trước, hệ điều hành systemd của bạn sẽ có:

  • systemd-journaldthực hiện tất cả các điều trên (và một số điều không liên quan khi nói đến giao thức ) và là máy chủ mà thư viện GNU C và thư viện systemd C nói về việc sử dụng các giao thức tương ứng của chúng
  • một chương trình syslog hoặc rsyslog hoặc syslog-ng tùy chọn được gọi, hoặc xinetd/ inetd-style khi có thứ gì đó gửi tin nhắn đến /run/systemd/journal/syslogvà nhận ổ cắm dưới dạng mô tả tệp mở hoặc như một dịch vụ trực tiếp được định cấu hình để mở và nghe trên /run/systemd/journal/syslog(tương đương với imuxsockmô-đun rsyslog) ; và nói giao thức thư viện GNU C
  • một dịch vụ syslog hoặc rsyslog hoặc syslog-ng hoặc udp-syslog-đọc tùy chọn cho lưu lượng RFC 5426

Ngày nay, hệ điều hành systemd của bạn có:

  • systemd-journald một lần nữa làm tất cả những điều trên và là máy chủ mà thư viện GNU C và thư viện systemd C nói chuyện với
  • một chương trình rsyslog tùy chọn được gọi như một dịch vụ trực tiếp chứ không phải thông qua một ổ cắm, nó đọc trực tiếp mọi thứ từ các tệp nhật ký systemd bằng imjournalmô-đun của nó
  • một dịch vụ syslog hoặc rsyslog hoặc syslog-ng hoặc udp-syslog-đọc tùy chọn cho lưu lượng RFC 5426

đọc thêm

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.