Hệ thống ghi log trong Unix/Linux




Các hệ thống Unix có hệ thống ghi log rất mạnh và linh động, mà cho bạn khả năng để ghi lại hầu hết mọi thứ bạn có thể tưởng tượng và sau đó thao tác sự ghi log này để truy xét thông tin bạn yêu cầu.

Rất nhiều phiên bản của Unix cung cấp một phương tiện dễ dàng ghi log với mục đích chung gọi là syslog. Mỗi chương trình cần thông tin ghi log được gửi tới syslog.

syslog trong Unix là một host có thể định hình, là phương tiện ghi log hệ thống đồng dạng. Hệ thống sử dụng một tiến trình ghi log hệ thống trung tâm mà chạy chương trình /etc/syslogd hoặc /etc/syslog.

Hoạt động của hệ thống ghi log là không phức tạp. Các chương trình gửi cửa vào ghi log tới syslogd, mà tham vấn từ file định cấu hình /etc/syslogd.conf hoặc /etc/syslog và khi một kết nối được tìm thấy, nó ghi thông tin ghi log tới file ghi log đã yêu cầu.

Bảng dưới liệt kê 4 mục syslog cơ bản mà bạn nên hiểu:

MụcMiêu tả
Facility (phương tiện)Dấu hiệu nhận diện được sử dụng để miêu tả ứng dụng hoặc tiến trình mà đệ trình tới thông báo log. Các ví dụ là mail, kernel, và ftp.
Priority (quyền ưu tiên)Một chỉ dẫn quan trọng của thông báo. Các mức được xác định trong syslog như một guideline, từ việc chỉnh lỗi thông tin tới các sự kiện quan trọng.
Selector (bộ chọn)Một sự kết nối của một hoặc nhiều phương tiện và mức độ. Khi một sự kiện mới đến kết nối với một bộ chọn, một hành động được thực hiện.
Action (hành động)Điều gì xảy ra khi một thông tin mới đến kết nối với một bộ chọn. Các hành động có thể ghi thông tin tới file ghi log, phản xạ thông tin tới một bàn điều khiển hoặc thiết bị khác, ghi thông báo tới hệ thống ghi log của người sử dụng hoặc gửi thông báo cùng với máy chủ syslog khác.

Các phương tiện syslog trong Unix/Linux

Dưới đây là các phương tiện có sẵn cho bộ chọn. Không phải tất cả các phương tiện có mặt trên tất cả các phiên bản của Unix.

FacilityMiêu tả
authCác hoạt động liên quan đến yêu cầu tên và mật khẩu (getty, su, login)
authprivTương tự như auth nhưng ghi log tới một file mà chỉ có thể được đọc bởi những người dùng được chọn.
consoleSử dụng để bắt các thông báo mà thường trực tiếp gửi tới bàn điều khiển hệ thống.
cronCác thông báo từ người lập hệ thống cron.
daemonHệ thống daemon nhận tất cả.
ftpCác thông báo liên quan đến hệ thống ftp deamon.
kernCác thông báo kernel.
local0.local7Các phương tiện nội bộ được xác định cho mỗi site.
lprCác thông báo từ dòng hệ thống in.
mailCác thông báo liên quan tới hệ thống mail.
markCác sự kiện giả được sử dụng để tạo timestamp trong các file hệ thống.
newsCác thông báo liên quan tới mạng lưới giao thức tin tức (network news protocol)
ntpCác thông báo liên quan đến giao thức thời gian mạng.
userCác tiến trình người dùng thông thường.
uucpHệ thống phụ UUCP.

Các quyền ưu tiên syslog trong Unix/Linux

Các quyền ưu tiên syslog được tổng hợp ở dưới bảng sau:

Quyền ưu tiênMiêu tả
emergTình trạng khẩn cấp, như một sự ngưng hoạt động hệ thống sắp xảy ra, thường được thông báo tới tất cả người dùng.
alertTình trạng mà nên được chỉnh lại cho đúng ngay lập tức, như một dữ liệu hệ thống bị hư hỏng.
critTình trạng nghiêm trọng, như lỗi phần cứng.
errCác lỗi thông thường.
warningCảnh báo.
noticeTình trạng mà không là lỗi, nhưng có lẽ nên được thực hiện theo một cách đặc biệt.
infoThông báo mang tính thông tin.
debugCác thông báo mà được sử dụng khi chỉnh lỗi các chương trình.
noneCác mức giả tạo được sử dụng để xác định không log các thông báo.

Sự kết nối của các phương tiện và các mức cho bạn khả năng để thấy rõ về những gì được ghi log và nơi mà các thông tin bắt nguồn.

Khi mỗi chương trình gửi các thông báo của nó một cách nghiêm túc tới hệ thống ghi log, trình ghi log tạo các quyết định về những gì để theo dõi nó và những gì để loại bỏ nó ở các mức được xác định trong bộ chọn.

Khi bạn xác định một mức, hệ thống sẽ theo dõi mọi thứ tại mức đó và cao hơn.

Tệp /etc/syslog.conf trong Unix/Linux

Tệp này điều khiển nơi các thông báo được log. Một tệp syslog.conf đặc trưng có thể trông giống như thế này:

*.err;kern.debug;auth.notice /dev/console
daemon,auth.notice           /var/log/messages
lpr.info                     /var/log/lpr.log
mail.*                       /var/log/mail.log
ftp.*                        /var/log/ftp.log
auth.*                       @prep.ai.mit.edu
auth.*                       root,amrood
netinfo.err                  /var/log/netinfo.log
install.*                    /var/log/install.log
*.emerg                      *
*.alert                      |program_name
mark.*                       /dev/console

Mỗi dòng của file chứa hai phần:

  • Một bộ chọn thông báo mà xác định loại thông báo để log. Ví dụ, tất cả các thông báo lỗi hoặc tất cả các thông báo chỉnh lỗi từ kernel.

  • Một trường hành động mà nói những gì nên được làm với thông báo đó. Ví dụ, đặt nó trong một file hoặc gửi thông báo tới terminal của một người dùng.

Dưới đây là các điểm đáng chú ý cho sự định cấu hình trên:

  • Các bộ chọn thông báo gồm hai phần: một phương thức và một quyền ưu tiên. Ví dụ, kern.debug chọn tất cả các thông báo debug (có Priority) được tạo bởi kernel (có Facility).

  • Bộ chọn thông báo kern.debug chọn tất cả các quyền ưu tiên mà ưu tiên hơn chỉnh lỗi.

  • Một dấu sao * trong vị trí hoặc của phương thức hoặc quyền ưu tiên ám chỉ rằng "tất cả". Ví dụ, *.debug nghĩa là tất cả các thông báo chỉnh lỗi, trong khi kern.* nghĩa là tất cả các thông báo được tạo ra bởi kernel.

  • Bạn cũng có thể sự dụng các dấu phảy để xác định nhiều phương thức. Hai hoặc nhiều bộ chọn có thể được nhóm lại với nhau bằng cách sử dụng một dấu chấm phảy (;).

Các hành động ghi log trong Unix/Linux

Trường hành động xác định một trong 5 hành động sau:

  1. Thông tin ghi log tới một file hoặc một thiết bị. Ví dụ, /var/log/lpr.log hoặc /dev/console.

  2. Gửi một thông báo tới một người sử dụng. Bạn có thể xác định nhiều tên sử dụng bằng việc ngăn cách chúng bởi dấu phảy (ví dụ root, amrood).

  3. Gửi một thông báo tới tất cả người dùng. Trong trường hợp này, trường hành động bao gồm một dấu *.

  4. Gửi một thông báo thông qua pipe tới một chương trình. Trong trường hợp này, chương trình được xác định sau ký hiệu pipe (|).

  5. Gửi thông báo tới syslog trên một host khác. Trong trường hợp này, trường hành động bao gồm một tên host, được đặt trước bởi một dấu hiệu (ví dụ: @tutorialspoint.com)

Lệnh logger trong Unix/Linux

Unix cung cấp lệnh logger, mà là một lệnh thực sự hữu ích để giải quyết hệ thống ghi log. Lệnh logger gửi các thông báo ghi log tới syslogd deamon, và do đó kích thích hệ thống ghi log.

Điều này có nghĩa là chúng ta có thể kiểm tra từ dòng lệnh tại bất cứ thời gian nào. Lệnh logger cung cấp một phương thức để thêm cổng vào một dòng tới hệ thống ghi log file từ dòng lệnh.

Định dạng của lệnh là:

logger [-i] [-f file] [-p priority] [-t tag] [message]...

Dưới đây là chi tiết về các tham số.

Chức năngMiêu tả
-f filenameSử dụng nội dung của tên file như thông báo để log.
-ilog ID tiến trình của tiến trình logger với mỗi dòng.
-p priorityNhập thông báo với quyền ưu tiên được xác định (lối vào bộ chọn được xác định); quyền ưu tiên thông báo có thể được xác định ở dạng số hoặc như là cặp phương thức.quyền ưu tiên. Quyền ưu tiên mặc định là user.notice.
-t tagĐánh dấu mỗi dòng được thêm tới hệ thống log với thẻ đã xác định.
messageCác tham số chuỗi mà nội dung được kết nối cùng nhau theo thứ tự xác định, riêng rẽ bởi khoảng trống.

Bạn có thể sử dụng trang Trang trợ giúp (Manpage Help) để kiểm tra cú pháp của các lệnh này.

Sự luân phiên log trong Unix/Linux

Các log file có thiên hướng tăng lên rất nhanh và chiếm một khoảng lớn của không gian đĩa. Để cho phép khả năng luân phiên log, hầu hết phiên bản sử dụng các công cụ như newsyslog hoặc logrotate.

Những công cụ này nên được gọi trên một khoảng không gian thường xuyên bằng cách sử dụng cron deamon. Bạn truy cập vào chương Trang trợ giúp (Manpage Help) để biết thêm chi tiết về newsyslog hoặc logrotate.

Các vị trí log quan trọng trong Unix/Linux

Tất cả ứng dụng hệ thống tạo các tệp log trong /var/log và các thưc mục phụ của nó. Dưới đây là một số ứng dụng quan trọng và các thư mục log tương ứng của chúng.

Ứng dụngThư mục
httpd/var/log/httpd
samba/var/log/samba
cron/var/log/
mail/var/log/
mysql/var/log/

Loạt bài hướng dẫn học UNIX cơ bản và nâng cao của chúng tôi dựa trên nguồn tài liệu của: Tutorialspoint.com

Follow https://www.facebook.com/vietjackteam/ để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Các bài học UNIX phổ biến khác tại VietJack: