Log là gì?
Tác dụng của file Log
Log ghi lại các thông báo về hoạt động của cả hệ thống hoặc của các dịch vụ được triển khai trên hệ thống và file tương ứng. Các file log này sẽ chứa các thông báo về máy chủ, bao gồm kernel, dịch vụ và ứng dụng đang chạy. File log cung cấp thời gian của các sự kiện cho hệ điều hành, ứng dụng và hệ thống giúp chúng ta kiểm tra và khắc phục sự cố.
Mỗi ứng dụng được cài đặt trên hệ thống có cơ chế tạo log file riêng của nó. Trên Linux thì nơi lưu trữ Log được tập trung tại các file log trong thư mục /var/log/, nó chứa hầu hết các file log như access log, error log, app log, service log, system log,…
Một số file log thông dụng
Ở đây mình có tổng hợp tất cả những vị trí log phổ biến và tóm tắt ý nghĩa của nó trên Linux:
- /var/log/messages: hoạt động hệ thống, các thông báo từ mail, cron, kern, auth và các ứng dụng hệ thống
- /var/log/syslog: thông báo từ hệ thống, các ứng dụng và cấu hình hệ thống
- /var/log/cron: thông báo về cron deamon, bắt đầu và dừng cron cũng như cronjob thất bại
- /var/log/secure: thông tin về xác thực trên hệ thống, bảo mật hệ thống, mật khẩu thất bại, người dùng không tồn tại
- /var/log/dmesg: thông tin về phần cứng và quá trình khởi động của hệ thống
- /var/log/wtmp: thông tin các lịch sử đăng nhập và đăng xuất
- /var/log/btmp: thông tin đăng nhập không thành công
- /var/run/utmp: thông tin trạng thái đăng nhập hiện tại của mỗi người dùng
- /var/log/auth.log: các hoạt động liên quan đến xác thực và quản trị người dùng, hoạt động sudo
- /var/log/kern.log: tin nhắn về hoạt động kernel, lỗi kernel, cảnh báo, và các sự kiện hệ thống
- /var/log/boot.log: các dịch vụ đã được khởi động, các lỗi khởi động, và thời gian hoạt động của hệ thống
- /var/log/nginx/access.log: thông tin về các request đến máy chủ nginx
- /var/log/nginx/error.log: ghi lại các lỗi và cảnh báo từ máy chủ nginx
- /var/log/apache2/access.log: thông tin về các request đến máy chủ apache2
- /var/log/apache2/error.log: ghi lại các lỗi và cảnh báo từ máy chủ apache2
- /var/log/httpd/access.log: thông tin về các request đến máy chủ httpd
- /var/log/httpd/error.log: ghi lại các lỗi và cảnh báo từ máy chủ httpd
- /var/log/mysql/error.log: ghi lại các lỗi và cảnh báo từ MySQL/MariaDB
- /var/lib/mysql/mysql.err: thông báo gỡ lỗi, kết nối máy khách và khởi chạy dịch vụ mysqld
- /var/log/mail.log: thông tin về hoạt động máy chủ mail, postfix, smtpd, MailScanner, SpamAssassain
Cách đọc file log
Để xem file log các bạn có thể sử dụng một số phương pháp phổ biến như:
- vi, vim, nano: Các bạn có thể sử dụng trình soạn thảo văn bản để kiểm tra file log
- tail: Nếu chúng ta muốn xem cuối nội dung của file log theo thời gian thực, hãy sử dụng tail -f
- grep: Nếu chúng ta muốn tìm kiếm trong file log hãy sử dụng lệnh grep từ khóa
- cat, less, more: Hiển thị toàn bộ nội dung file log
Rsyslog là gì?
Giới thiệu về Syslog
Syslog là viết tắt của System Logging Protocol, là một giao thức client/server dùng để chuyển log và thông điệp đến máy chủ log. Máy chủ log thường được gọi là syslogd, syslog daemon hoặc syslog server. Syslog có thể gửi qua UDP/514 hoặc TCP/10514 và có thể mã hóa qua TLS/SSL.
Trong chuẩn syslog, mỗi thông báo đều được dán nhãn và gán các mức độ nghiêm trọng khác nhau. Các loại phần mềm sau có thể sinh log: auth, authPriv, daemon, cron, ftp, dhcp, kern, mail, syslog, user,… Với các mức độ nghiêm trọng từ cao đến thấp: Emergency, Alert, Critical, Error, Warning, Notice, Info, Debug.
Rsyslog trên Linux
Rsyslog (The rocket-fast system for log processing) là một phần mềm mã nguồn mở dùng để chuyển tiếp các log message đến một log receiver/log server. Nó thực hiện giao thức syslog dựa trên TCP để truyền tải log từ client tới server.
Hiện nay rsyslog là máy chủ syslog mặc định trên hầu hết hệ thống Unix/Linux như: Ubuntu, CentOS, RHEL, Fedora, openSUSE,…
Xem file cấu hình Rsyslog:
cat /etc/rsyslog.conf
Ví dụ cấu hình mặc định trên Ubuntu:
Bạn cũng có thể thấy các rule được quản lý trong thư mục /etc/rsyslog.d/*.conf
Ví dụ cấu hình mặc định trên CentOS:
Cấu hình Rsyslog rule
cat /etc/rsyslog.d/50-default.conf
Lưu ý: tên file có thể khác với phiên bản Linux của bạn
Cơ bản trên rule mặc định của rsyslog lưu trữ các log tiến trình của hệ thống, format như sau:
<source>.<severity> <location>
- source là nguồn tạo log (syslog source)
- severity là mức độ cảnh báo thấp nhất trở lên (7 level syslog)
- location là nơi lưu log (local file hoặc ip log server)
- kí tự * đại diện cho tất cả phù hợp
- những rule bị # là comment (không hoạt động)
Ví dụ:
rsyslog sẽ log lại mail với mức cảnh báo từ err trở lên (err, crit, alert, emerg)
mail.err /var/log/mail.err
nếu bạn muốn nó chỉ log với level cụ thể, sử dụng dấu bằng
mail.=info /var/log/mail-info.log
rsyslog sẽ lưu hết các level của mail nếu sử dụng dấu sao
mail.* /var/log/mail.log
trường hợp này lưu tất các info log từ mọi nguồn trừ mail, authpriv, cron
*.info;mail.none;authpriv.none;cron.none /var/log/messages