Cùng tìm hiểu chi tiết Log là gì? Syslog là gì? Rsyslog là gì? cũng như các đặc điểm về module và phân tích file cấu hình trong bài viết ngay sau đây nhé.
Nếu các bạn là một người quản trị hệ thống hay có đam mê và có ý định tìm hiểu nó thì mình tin chắc rằng ít nhiều bạn đã từng nghe đến từ Log, Syslog và Rsyslog . Vậy Log, Syslog và
1. Tìm hiểu về Log, Syslog, Rsyslog trên Linux
1.1 Log là gì?
Log là một bộ sưu tập các ghi chép ghi lại thông tin quan trọng về các hoạt động, sự kiện, lỗi, hoặc trạng thái của một hệ thống, ứng dụng, hoặc quá trình cụ thể. Các bản ghi log liên tục theo dõi thông báo về hoạt động của cả hệ thống hoặc các dịch vụ đang chạy trên nó.
File log có khả năng cung cấp thông tin chi tiết, giúp bạn giải quyết vấn đề mà bạn đang gặp phải, miễn là bạn biết ứng dụng hoặc tiến trình nào đang được ghi vào log cụ thể. Trong hệ thống Linux, thường thì /var/log là nơi lưu trữ tất cả các bản ghi log.
1.2 Syslog là gì?
Syslog là một giao thức tiêu chuẩn và một hệ thống logging (ghi nhật ký) được sử dụng trong hệ thống Unix và các hệ điều hành tương tự. Giao thức syslog giúp các thiết bị và ứng dụng gửi các thông điệp log đến một máy chủ log (syslog server) hoặc lưu trữ nó nơi mà người quản trị có thể theo dõi và phân tích.
Syslog được phát triển năm 1980 bởi Eric Allman. Ban đầu nó chỉ được sử dụng cho Sendmail nhưng sau khi thấy được lợi ích to lớn của nó thì nó đã được áp dụng cho hầu hết các hệ thống trên Unix-Linux. Các bạn có thể hiểu rằng Syslog sẽ lọc ra các thông điệp cần ghi lại và chỉ ra xem các thông điệp đó sẽ được lưu trữ ở đâu.
1.3 Rsyslog là gì ?
Rsyslog được tạo ra như một dự án mở rộng và cải tiến từ syslog-ng, một phiên bản khác của syslog. Hiện nay Rsyslog là phần mềm được cài đặt sẵn trên hầu hết hệ thống Unix và các bản phân phối của Linux như : Fedora, openSUSE, Debian, Ubuntu, Red Hat Enterprise Linux, FreeBSD…
Tương tự như Syslog thì Rsyslog có thể gửi dữ liệu bằng giao thức UDP và thêm TCP so với Syslog. Port mặc định của Rsyslog cũng là 514. Do Syslog đã cũ và ít được sử dụng hơn so với Rsyslog nên các bạn hãy cùng mình tìm hiểu về Rsyslog nhé.
2. Mô hình hoạt động của các file rsyslog là gì?
Mô hình Rsyslog bao gồm 4 thành phần chính:
- Các file chứa các tệp cấu hình của Rsyslog
- /etc/rsyslog.conf: Là file cấu hình
- /etc/rsyslog.d: Dùng để chứa các tệp cấu hình bổ xung
- Các file chứa các thư viện, module hỗ trợ cho Rsyslog. Các file cấu hình sẽ sử dụng các module này
- /usr/lib64/rsyslog/
- /usr/share/doc/rsyslog
- Các file lưu giữ nội dung log được rsyslog chuyển đến
- /var/log
- Một vài file khác
3. Các module trong Rsyslog là gì ?
Có thể nói là các module trong Rsyslog là một trong những phần cực kỳ quan trong. Nó quyết định xem
Các module trong rsyslog thường được đặt trong thư mục /usr/lib64/rsyslog hoặc /lib64/rsyslog trên hệ thống Linux.
Để xem được các module ta có thể sử dụng lệnh locate.
- Cài đặt locate nếu máy bạn chưa có
yum install mlocate -y updatedb |
- Xem vị trí các file liên quan đến rsyslog
locate rsyslog |
Rsyslog có thiết kế kiểu module cho phép chức năng được tải động. Trong Rsyslog có rất nhiều module nhưng các bạn có thể nhớ những module sau:
- Input Modules: Xử lý việc thu thập log từ các nguồn khác nhau.
- imuxsock.so: Thu thập log từ Unix socket.
- imklog.so: Thu thập log từ Kernel.
- imfile: Đọc log từ các tệp tin cụ thể.
- imtcp, imudp: Thu thập log qua giao thức TCP hoặc UDP.
- imrelp: Sử dụng RELP (Reliable Event Logging Protocol) để thu thập log.
- Output Modules: Xử lý việc xuất log đến các đích khác nhau.
- omfile.so: Xuất log ra file.
- omstdout.so: Xuất log ra stdout.
- omprog.so: Xuất log đến một chương trình khác.
- omrelp.so: Xuất log qua RELP (Reliable Event Logging Protocol).
- omudpspoof.so: Gửi log UDP với địa chỉ nguồn giả mạo.
- Parser Modules: Giúp rsyslog hiểu các định dạng log cụ thể.
- impstats.so: Thu thập thống kê về hoạt động của rsyslog.
- imudp.so: Thu thập log qua giao thức UDP.
- Queue Modules: Quản lý hàng đợi cho log, giúp đảm bảo log không bị mất khi máy chủ log không sẵn sàng.
- omfile.so: Xuất log ra file với hỗ trợ hàng đợi.
- Libraries: Các thư viện chung được sử dụng bởi các modules khác.
- librelp.so: Thư viện RELP.
- libgcry.so: Thư viện mã hóa.
- libgpg-error.so: Thư viện xử lý lỗi mã hóa GPG.
4. Các nguồn sinh ra log và mức độ cảnh báo
Trong syslog, mỗi thông báo đều được dán nhãn và được gán các mức độ nghiêm trọng khác nhau.
Bảng dưới đây là thông tin chi tiết về chúng:
Nguồn sinh ra log:
Facility Number |
Nguồn tạo log |
Ý nghĩa |
0 |
kernel |
Những log mà do kernel sinh ra |
1 |
user |
Log ghi lại cấp độ người dùng |
2 |
|
Log của hệ thống mail |
3 |
daemon |
Log của các tiến trình trên hệ thống |
4 |
auth |
Log từ quá trình đăng nhập hệ hoặc xác thực hệ thống |
5 |
syslog |
Log từ chương trình syslogd |
6 |
lpr |
Log từ quá trình in ấn |
7 |
news |
Thông tin từ hệ thống |
8 |
uucp |
Log UUCP subsystem |
9 |
solaris-cron |
Clock deamon |
10 |
authpriv |
Quá trình đăng nhập hoặc xác thực hệ thống |
11 |
ftp |
Log của FTP deamon |
12 |
ntp |
Log từ dịch vụ NTP của các subserver |
13 |
security |
Kiểm tra đăng nhập |
14 |
console |
Log cảnh báo hệ thống |
15 |
cron |
Log từ clock daemon |
16-23 |
local 0 -local 7 |
Log dự trữ cho sử dụng nội bộ |
Mức độ cảnh báo:
Code |
Mức cảnh báo |
Ý nghĩa |
0 |
emerg |
Thông báo tình trạng khẩn cấp |
1 |
alert |
Hệ thống cần can thiệp ngay |
2 |
crit |
Tình trạng nguy kịch |
3 |
error |
Thông báo lỗi đối với hệ thống |
4 |
warn |
Mức cảnh báo đối với hệ thống |
5 |
notice |
Chú ý đối với hệ thống |
6 |
info |
Thông tin của hệ thống |
7 |
debug |
Quá trình kiểm tra hệ thống |
Định dạng hoàn chỉnh của một thông báo syslog gồm có 3 phần chính như sau và độ dài một thông báo không được vượt quá 1024 bytes:
<PRI> HEADER MSG |
- Số PRI được xác định bằng: PRI = [Facility Number] x 8 + Code
- Header: Chứa thời gian sinh ra log và hostname hoặc IP của máy
- MSG: chứa một số thông tin về quá trình tạo ra thông điệp đó
5. Phân tích file cấu hình của Rsyslog
File cấu hình của Rsyslog nằm ở thư mục /etc/rsyslog.conf
Để xem file cấu hình ta sử dụng lệnh
cat /etc/rsyslog.conf |
Giải thích:
- $ModLoad imuxsock:Sử dụng module imuxsock để thu thập các thông điệp từ các ứng dụng
- $ModLoad imjournal: Sử dụng module imjournal để thu thập nhật ký hệ thống từ systemd
- $RepeatedMsgReduction on: Chỉ lấy thông điệp mới và không lấy các thông điệp trùng
- $WorkDirectory /var/lib/rsyslog: Xác định thư mục làm việc cho Rsyslog
- $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat: Định dạng cho các thông điệp in ra log.(ta có thể chỉnh sửa ở chỗ này để thay đổi cấu trúc in ra thông điệp)
- $IncludeConfig /etc/rsyslog.d/*.conf: Những file cấu hình thêm đươc phép tham gia (bắt buộc phải có đuôi .conf)
- $OmitLocalLogging on: Tắt việc ghi log cục bộ
- $IMJournalStateFile imjournal.state: Xác định tên tệp trạng thái cho imjournal
- Những dòng còn lại sẽ xác định xem các thông điệp nào được ghi lại và được ghi ở đâu
6. Một số lưu ý cần nhớ
- File cấu hình /etc/rsyslog.conf là file chứa cấu hình chính của Rsyslog. Khi các bạn muốn thêm file cấu hình hãy thêm file vào thư mục /etc/rsyslog.d/ và yêu cầu bắt buộc là là phải có đuôi ".conf". Bạn chỉ nên sửa khi thực sự phải thay đổi chứ không phải thêm cấu hình.
- Trong Rsyslog có rất nhiều module hỗ trợ, không bắt buộc ta phải dùng hết các module ấy nhưng mỗi khi dùng đến các tính năng ấy thì module đó bắt buộc phải cài đặt.
- Thông thường các file log thường được lưu ở thư mục "/var/log". Để xem các file log ta có thể sử dụng các lệnh xem file thông thường như: cat ,head ,tail ,tail -f …
- Mặc định file ghi log ban đầu có thể sử dụng 1 format chung để in ra log ta có thể thay đổi format in ra log bằng cách thay đổi biến $ActionFileDefaultTemplate trong file cấu hình /etc/rsyslog.conf.
Tổng kết
Hy vọng bài viết đã cung cấp cho các bạn cái nhìn tổng quan về Log, Syslog và
>>> Có thể bạn quan tâm: