5. Ý nghĩa khoa học và thực tiễn
1.4.6. Các loại nhật ký máy chủ web
Nhật ký lỗi (Error Log)
Các error log máy chủ, tên và vị trí đƣợc thiết lập bởi ErrorLog, là log file rất quan trọng. Đây là nơi mà Apache httpd sẽ gửi thông tin chẩn đoán và ghi lại bất kỳ lỗi nào mà nó gặp trong các yêu cầu xử lý. Đây là nơi đầu tiên để xem xét khi một vấn đề xảy ra với khởi chạy máy chủ hoặc với những hoạt động của máy chủ, vì nó sẽ thƣờng chứa các thông tin chi tiết về những gì đã xảy ra và làm thế nào để sửa chữa nó.
Error log thƣờng đƣợc ghi vào một tập tin (thƣờng là error_log trên các hệ thống Unix và error.log trên Windows). Trên các hệ thống unix nó cũng có thể có các máy chủ gửi lỗi tới syslog.
Định dạng của các error log là tƣơng đối dạng tự do. Nhƣng có một số thông tin đƣợc chứa trong hầu hết các mục error log. Ví dụ, đây là một thông điệp điển hình.
Mục đầu tiên trong mục ghi là ngày và thời gian của tin nhắn. Các mục thứ hai liệt kê mức độ nghiêm trọng của lỗi đƣợc báo cáo. Các LogLevel chỉ đƣợc sử dụng để kiểm soát các loại lỗi đƣợc gửi đến các error log bằng cách hạn chế mức độ nghiêm trọng. Các mục thứ ba cung cấp cho các địa chỉ IP của client đã tạo ra lỗi. Ngoài ra là thông điệp chính nó, mà trong trƣờng hợp này chỉ ra rằng các máy chủ đã đƣợc cấu hình để từ chối truy cập từclient.
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
Các máy chủ báo cáo các đƣờng dẫn tập tin hệ thống (nhƣ trái ngƣợc với con đƣờng web) của tài liệu đƣợc yêu cầu.
Một loạt rất nhiều thông điệp khác nhau có thể xuất hiện trong error log. Hầu hết nhìn tƣơng tự nhƣ ví dụ trên. Các error log cũng sẽ chứa kết quả sử lỗi từ các kịch bản CGI. Bất kỳ thông tin bằng văn bản cho stderr bởi một CGI script sẽ đƣợc sao chép trực tiếp vào error log.
Nó không phải là có thể tùy chỉnh các error log bằng cách thêm hoặc loại bỏ thông tin. Tuy nhiên, các mục error log đối phó với các yêu cầu đặc biệt có các mục tƣơng ứng trong access log.
Trong thời gian thử nghiệm, nó thƣờng hữu ích để liên tục theo dõi các error log cho bất kỳ vấn đề. Trên các hệ thống Unix, bạn có thể thực hiện điều này bằng cách sử dụng:
Nhật ký truy cập (Access Log)
Các access log máy chủ ghi lại tất cả các yêu cầu xử lý bởi máy chủ. Các vị trí và nội dung của access log đƣợc kiểm soát bởi CustomLog. Các LogFormat chỉ có thể đƣợc sử dụng để đơn giản hóa việc lựa chọn các nội dung của các bản ghi. Phần này mô tả làm thế nào để cấu hình các máy chủ để ghi lại thông tin trong access log.
Tất nhiên, lƣu trữ các thông tin trong access log chỉ là sự bắt đầu của quản lý log file. Bƣớc tiếp theo là phân tích các thông tin này để đƣa ra các thống kê hữu ích.
Các phiên bản khác nhau của Apache httpd đã sử dụng module và các chỉ thị khác để kiểm soát truy cập việc ghi log, kể cả mod_log_referer, mod_log_agent, và TransferLog
Một định dạng phổ biến của access log có dạng:
LogFormat "%h %l %u %t \"%r\" %>s %b" common
Trong định dạng này, ta có:
%h - Địa chỉ IP của máy khách.
%l - Danh tính của khách hàng đƣợc xác định identd trên máy của khách hàng. Sẽ trả về dấu gạch ngang ( -) nếu thông tin này không có sẵn.
%u - Userid của máy khách nếu yêu cầu đã đƣợc xác thực.
%t - Thời gian nhận đƣợc yêu cầu.
\"%r\" - Dòng yêu cầu bao gồm phƣơng thức HTTP đƣợc sử dụng, đƣờng dẫn tài nguyên đƣợc yêu cầu và giao thức HTTP mà máy khách đã sử dụng.
%>s - Mã trạng thái mà máy chủ gửi lại cho máy khách.
%b - Kích thƣớc của đối tƣợng đƣợc yêu cầu.