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ục
Miê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.


Facility
Miêu tả
auth
Các hoạt động liên quan đến yêu cầu tên và mật khẩu (getty, su, login)
authpriv
Tươ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.
console
Sử 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.
cron
Các thông báo từ người lập hệ thống cron.
daemon
Hệ thống daemon nhận tất cả.
ftp
Các thông báo liên quan đến hệ thống ftp deamon.
kern
Các thông báo kernel.
local0.local7
Các phương tiện nội bộ được xác định cho mỗi site.
lpr
Các thông báo từ dòng hệ thống in.
mail
Các thông báo liên quan tới hệ thống mail.
mark
Các sự kiện giả được sử dụng để tạo timestamp trong các file hệ thống.
news
Các thông báo liên quan tới mạng lưới giao thức tin tức (network news protocol)
ntp
Các thông báo liên quan đến giao thức thời gian mạng.
user
Các tiến trình người dùng thông thường.
uucp
Hệ 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ên
Miêu tả
emerg
Tì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.
alert
Tì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.
crit
Tình trạng nghiêm trọng, như lỗi phần cứng.
err
Các lỗi thông thường.
warning
Cảnh báo.
notice
Tì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.
info
Thông báo mang tính thông tin.
debug
Các thông báo mà được sử dụng khi chỉnh lỗi các chương trình.
none
Cá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ăng
Miêu tả
-f filename
Sử dụng nội dung của tên file như thông báo để log.
-i
log ID tiến trình của tiến trình logger với mỗi dòng.
-p priority
Nhậ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.
message
Cá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ụng
Thư mục
httpd
/var/log/httpd
samba
/var/log/samba
cron
/var/log/
mail
/var/log/
mysql
/var/log/

Bình luận