Tìm hiểu về ghi nhật ký / logrotation chung trên linux?


13

Giả sử, bên cạnh nhật ký máy chủ web Apache, tôi chưa bao giờ có bất kỳ liên hệ nào với bất kỳ loại nhật ký (chuyên nghiệp) nào trên bất kỳ hệ điều hành nào. Vì vậy, Logging, mặc dù tôi hiểu một số điều cơ bản, nhưng tất cả đều là một chủ đề khá mới. Hiện tại, khoản đầu tư để tìm hiểu đầy đủ về chủ đề này dường như khá lớn, nhưng tôi thậm chí còn chưa biết, nếu nó thậm chí còn đáng để biết nhiều hơn thì đó là những khái niệm trừu tượng nhất.

Những tài nguyên nào bạn muốn đề xuất nên ai đó trong tình huống đó tiêu thụ (hướng dẫn, trang người dùng, sách) để tìm hiểu về Ghi nhật ký?

Người dùng Linux bình thường nên đọc nhật ký nào hàng ngày / hàng tháng? Là giả định thậm chí đúng rằng chúng được viết cho khả năng đọc của con người hay chúng thường được đánh giá và sử dụng bởi các công cụ khác?

Người dùng và nhà phát triển phần mềm * nix bình thường nên biết gì về các bản ghi này?

Bạn cần biết gì về luân chuyển nhật ký, nếu bạn không muốn quản lý các máy chủ web chuyên nghiệp với vô số sự kiện lớn?


Bạn có phiền nếu tôi (hoặc bạn) chỉnh sửa tiêu đề để đọc "trên linux" thay vì "trên ubfox" vì đây thực chất là cùng một câu hỏi (xem câu trả lời của tôi) không? Bằng cách đó, chúng ta ít có khả năng kết thúc với các câu hỏi trùng lặp khép kín về "học ghi nhật ký trên vòm", "học ghi nhật ký trên centOS", v.v.
goldilocks

Tôi không
bận

Câu trả lời:


18

[Điều này đã được viết một vài năm trước khi áp dụng rộng rãi journald trên các hệ thống systemd và không chạm vào nó. Hiện tại (cuối năm 2018) cả nhật ký và (r) syslog, được mô tả bên dưới, được sử dụng trên các bản phát hành như Debian. Đối với những người khác, bạn có thể phải cài đặt rsyslog nếu bạn muốn sử dụng nó cùng với nó, nhưng việc tích hợp với journald rất đơn giản.]

Tôi sẽ không thảo luận về việc đăng nhập liên quan đến Ubuntu, vì chủ đề được chuẩn hóa cho linux nói chung (và tôi tin rằng hầu hết hoặc tất cả những gì tôi phải nói cũng đúng cho bất kỳ hương vị nào * nix, nhưng không lấy lời của tôi cho điều đó). Tôi cũng sẽ không nói nhiều về "cách đọc nhật ký" ngoài việc trả lời câu hỏi này:

Là giả định thậm chí đúng rằng chúng được viết cho khả năng đọc của con người hay chúng thường được đánh giá và sử dụng bởi các công cụ khác?

Tôi đoán điều đó phụ thuộc vào ứng dụng, nhưng nói chung, ít nhất là liên quan đến những gì đi vào syslog (xem bên dưới), chúng nên có thể đọc được. "Có ý nghĩa với tôi" là một vấn đề khác, lol. Tuy nhiên, chúng cũng có thể được cấu trúc theo cách làm cho việc phân tích cú pháp chúng bằng các công cụ tiêu chuẩn (grep, awk, v.v.) cho các mục đích cụ thể dễ dàng hơn.

Dù sao, trước tiên, có một sự khác biệt giữa các ứng dụng tự ghi nhật ký và các ứng dụng sử dụng bộ ghi hệ thống. Apache theo mặc định là trước đây, mặc dù nó có thể được cấu hình để thực hiện sau này (điều mà tôi nghĩ rằng hầu hết mọi người sẽ coi là không mong muốn). Các ứng dụng ghi nhật ký của riêng chúng có thể thực hiện theo bất kỳ cách nào bằng cách sử dụng bất kỳ vị trí nào cho (các) tệp, vì vậy không có nhiều điều để nói về điều đó. Trình ghi nhật ký hệ thống thường được gọi làsyslog .

nhật ký hệ thống

"Syslog" thực sự là một tiêu chuẩn được thực hiện với quy trình trình nền được gọi chung là syslogd (d dành cho daemon!). Trình nền syslog chiếm ưu thế hiện đang được sử dụng trên linux, bao gồm cả Ubuntu, là rsyslogd. Rsyslogd có thể làm được rất nhiều, nhưng khi được cấu hình ngoài hộp trên hầu hết các bản phân phối, nó mô phỏng một syslog truyền thống, sắp xếp các thứ vào các tệp văn bản đơn giản /var/log. Bạn có thể tìm thấy tài liệu cho nó trong /usr/share/doc/rsyslog-doc-[version](hãy cẩn thận, cũng có một /usr/share/doc/rsyslog-[version], nhưng đó chỉ là thông báo từ gói nguồn như NEWSChangeLog). Nếu có, đó là html, nhưng Stack Exchange không cho phép nhúng các liên kết tệp cục bộ:

file://usr/share/doc/rsyslog-doc/index.html

Vì vậy, bạn có thể thử sao chép dán đó. Nếu nó không ở đó, nó có thể là một phần của gói riêng biệt chưa được cài đặt. Truy vấn hệ thống đóng gói của bạn (ví dụ:apt-cache search rsyslog | grep doc ).

Cấu hình nằm trong /etc/rsyslog.conf, có một trang thủ công, man rsyslog.confmặc dù trong khi trang thủ công tạo ra một tài liệu tham khảo tốt, nó có thể ít bị xâm nhập như một lời giới thiệu. May mắn thay, các nguyên tắc cơ bản của cổ phiếu rsyslog.conf phù hợp với những gì của syslog.conf truyền thống, trong đó có nhiều giới thiệu và hướng dẫn xung quanh. Cái này chẳng hạn; những gì bạn muốn lấy từ đó, trong khi nhìn vào rsyslog.conf tại địa phương của bạn, là một sự hiểu biết về các cơ sởưu tiên ("ưu tiên" đôi khi được gọi là loglevel), vì đây là một phần của tiêu chuẩn syslog đã nói ở trên. Lý do tiêu chuẩn này rất quan trọng là vì rsyslog thực sự có được nội dung của nó thông qua kernel và những gì kernel thực hiện là tiêu chuẩn.

Liên quan đến các $chỉ thị trong rsyslog.conf, đây là các lệnh cụ thể của rsyslog và nếu bạn cài đặt gói tài liệu tùy chọn đó, bạn sẽ tìm thấy một hướng dẫn cho chúng rsyslog_conf_global.html.

Hãy vui vẻ ... nếu bạn tò mò về cách các ứng dụng sử dụng bộ ghi hệ thống, hãy xem man loggerman 3 syslog.

Nhật ký xoay

Các phương tiện quy tắc của các bản ghi quay là thông qua một công cụ được gọi là logrotate(và có một man logrotate). Phương pháp quy tắc sử dụng logrotate là thông qua cron daemon , mặc dù không phải thực hiện theo cách đó (ví dụ: nếu bạn có xu hướng tắt máy tính để bàn hàng ngày, bạn cũng có thể chỉ cần thực hiện một lần khi khởi động trước khi syslog bắt đầu nhưng, rõ ràng, sau khi hệ thống tập tin được gắn rw).

Có một giới thiệu tốt về logrotate ở đây . Lưu ý rằng logrotate không chỉ dành cho công cụ syslog , nó có thể được sử dụng với bất kỳ tệp nào. Tệp cấu hình cơ sở là /etc/logrotate.conf, nhưng vì cấu hình có lệnh "bao gồm", nên hầu hết mọi thứ đều đi vào các tệp riêng lẻ trong /etc/logrotate.dthư mục (ở đây d dành cho thư mục, không phải daemon; logrotate không phải là daemon).

Một điều quan trọng cần xem xét khi sử dụng logrotate là cách ứng dụng sẽ hoạt động lại khi tệp nhật ký của nó bị "xoay" - nói cách khác, được di chuyển - trong khi ứng dụng đang chạy. WRT (r) syslogd, nó sẽ chỉ dừng ghi vào nhật ký đó (tôi nghĩ có một biện minh bảo mật cho việc này). Cách thông thường để giải quyết vấn đề đó là yêu cầu syslog khởi động lại (và mở lại tất cả các tệp của nó), đó là lý do tại sao bạn sẽ thấy một lệnh postrotatetrong các tệp conf logrotate gửi SIGHUP đến daemon syslog.


2
Nếu bạn cũng đề cập đến syslog-ng, bạn sẽ viết tất cả những gì cần nói về đăng nhập linux. Câu trả lời tuyệt vời.
Nils

Tôi đã học được rất nhiều và có nhiều nguồn để đọc. Cảm ơn! Btw. Tại sao nó là xấu khi sử dụng hệ thống đăng nhập cho apache? Và những bản ghi nào tôi muốn đọc?
erikbwork

@ erikb85 1) Chủ yếu là vì apache tạo ra rất nhiều đầu ra. Tôi đã không phải cấu hình apache trong một thời gian dài, vì vậy tôi không thể nhớ WRT linh hoạt như thế nào khi gửi những thứ cụ thể đến syslog (nhưng tôi đoán rất linh hoạt) 2) Nhật ký WRT bạn muốn đọc, hãy xem tại logic trong của bạn /etc/rsyslog.conf. Ví dụ: thường những thứ ở trên mức ưu tiên nhất định sẽ được đưa vào /var/log/messagesvà những thứ bên dưới sẽ đi vào /var/log/notice. Tôi cũng muốn có một bản ghi chứa tất cả mọi thứ, làm cho sự trùng lặp gấp đôi và gấp ba, nhưng nếu bạn giữ chúng xoay thì đó không phải là vấn đề lớn.
goldilocks

Chỉ cần xác nhận, rsyslogkhông phải là một trình bao bọc daemon xung quanh logrotate, phải không? Tại sao vậy ?
Thomas

@Thomas Họ thực hiện các mục đích khác nhau, mặc dù (r) syslog có thể thực hiện xoay vòng để đáp ứng nhu cầu logrotate. Tuy nhiên, có chúng riêng biệt có nghĩa là bạn có thể sử dụng logrotate trên những thứ khác ngoài tệp syslog.
goldilocks
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.