Logging (thu thập và lưu lại dữ liệu của phần mềm trong một khoảng thời gian) là một khía cạnh quan trọng của quản lý máy chủ Linux. Log messages (thông báo nhật ký) rất hữu ích cho việc phân tích nguyên nhân gốc rễ và tránh các lỗi tiềm ẩn xảy ra trong tương lai. Phân tích và gỡ lỗi máy chủ là kỹ năng cốt lõi cần có đối với cả kỹ sư CNTT và quản trị viên hệ thống.
Bài viết này sẽ hướng dẫn bạn cách thiết lập máy chủ logging từ xa, còn được gọi là log host (máy chủ lưu trữ nhật ký), trên Linux. Máy chủ này cho phép bạn tổng hợp các log Linux cục bộ vào một máy chủ tập trung từ xa để dễ dàng truy cập và phân tích.
Tại sao nên có một máy chủ logging chuyên dụng?
Hệ điều hành Linux ghi lại hầu hết các hoạt động trên máy chủ của bạn để kiểm tra và gỡ lỗi bằng cách sử dụng daemon nhật ký hệ thống (giao thức logging hệ thống). Vì vậy, tại sao bạn lại cần một máy chủ logging chuyên dụng? Dưới đây là một số lợi ích khi có một máy chủ logging chuyên dụng:
- Bảo mật tốt hơn vì máy chủ logging từ xa chỉ có một vài cổng mở ra bên ngoài.
- Cải thiện hiệu suất máy chủ vì máy chủ logging từ xa không chạy nhiều dịch vụ, ngoại trừ những dịch vụ được sử dụng để logging.
- Dễ dàng lưu trữ và quản lý các thông báo nhật ký.
Log messages rất quan trọng để kiểm tra máy chủ của bạn và là một phần cốt lõi của quy trình bảo trì phòng ngừa trên cơ sở hạ tầng máy chủ.
Bước 1: Cài đặt rsyslog trên Linux
Hướng dẫn này tập trung vào Ubuntu 20.04, nhưng quy trình sẽ khá giống nếu bạn đang sử dụng các bản phân phối Linux khác.
rsyslog là một dịch vụ logging từ xa dành cho Linux và được cài đặt sẵn theo mặc định trên hầu hết các bản phân phối Linux hiện đại, chẳng hạn như Ubuntu và các hệ thống dựa trên Debian khác.
Dịch vụ rsyslog là một daemon hiện đại và được cải tiến của syslog, vốn chỉ cho phép bạn quản lý log cục bộ. Với daemon rsyslog, bạn có thể gửi log cục bộ của mình tới một số máy chủ Linux từ xa đã được định cấu hình.
Nếu bạn chưa cài đặt rsyslog trên PC, bạn có thể dễ dàng thực hiện việc này bằng cách sử dụng lệnh sau, trên các bản phân phối dựa trên Debian:
sudo apt install rsyslog
Trên Red Hat Linux, bạn có thể cài đặt nó bằng cách gõ:
yum install rsyslog
Trên Fedora và các dẫn xuất của nó, hãy chạy:
dnf install rsyslog
Để cài đặt rsyslog trên Arch Linux:
yay -S rsyslog
Để kiểm tra trạng thái của rsyslog, hãy chạy lệnh sau:
systemctl status rsyslog
Đầu ra:
Bước 2: Định cấu hình Máy chủ Log Host
Máy chủ log host là máy chủ được cấu hình để nhận log messages từ các máy chủ hoặc PC khác. Cấu hình nhật ký rsyslog nằm trong tệp /etc/rsyslog.conf.
Bạn có thể mở tệp /etc/rsyslog.conf bằng bất kỳ trình soạn thảo văn bản nào. Trong hướng dẫn này, chúng ta sẽ sử dụng Vim.
Bạn sẽ cần các đặc quyền nâng cao để thực hiện các thay đổi đối với tệp cấu hình.
Trước khi bắt đầu chỉnh sửa tệp cấu hình, bạn nên sao lưu tệp. Để làm như vậy, hãy chạy lệnh:
sudo cp /etc/rsyslog.conf /etc/rsyslog_original.config
Tiếp theo, mở tệp /etc/rsyslog.conf bằng trình soạn thảo văn bản.
sudo vim /etc/rsyslog.conf
Có hai giao thức bạn có thể sử dụng để gửi/nhận tệp nhật ký với rsyslog: TCP và UDP. Hướng dẫn này chỉ cho bạn cách định cấu hình cả hai.
Bạn không cần phải cấu hình cả UDP và TCP để logging từ xa hoạt động. Chỉ chọn một trong hai.
Nếu bạn thích sử dụng UDP, hãy tìm và bỏ ghi chú các dòng sau bằng cách bỏ ký hiệu # đứng đầu trước các dòng. Bạn có thể tìm thấy những dòng này trong phần mô-đun của tệp cấu hình.
module(load="imudp")
input(type="imudp" port="514")
Nếu bạn thích sử dụng TCP, hãy bỏ ghi chú các dòng sau bằng cách xóa ký hiệu # nằm ở đầu các dòng:
module(load="imtcp")
input(type="imtcp" port="514")
Hình sau cho thấy tệp cấu hình rsyslog được định cấu hình để sử dụng giao tiếp UDP:
Tiếp theo, định cấu hình vị trí nơi rsyslog sẽ lưu trữ log của bạn. Để tổ chức tốt hơn, bạn nên phân loại log đến theo nguồn gốc của chúng. Xác định một mẫu trong tệp cấu hình rsyslog của bạn bằng cách thêm các dòng sau:
$template remote-incoming-logs, "/var/log/remote/%HOSTNAME%".log
*.* ?remote-incoming-logs
Các dòng trên lệnh rsyslog để lưu trữ log trong thư mục /var/log/remote/hostname, trong đó hostname là tên của ứng dụng khách từ xa đang gửi thông báo nhật ký đến log host.
Bây giờ, hãy lưu các thay đổi bạn đã thực hiện. Nếu bạn đang sử dụng Vim, đây là cách lưu và thoát tệp.
Cuối cùng, khởi động lại các dịch vụ rsyslog để những thay đổi đã thực hiện có hiệu lực.
sudo systemctl restart rsyslog
Bước 3: Định cấu hình tường lửa
Nếu tường lửa của bạn được bật, hãy đảm bảo rằng cổng bạn đã định cấu hình ở trên có thể giao tiếp với thế giới bên ngoài. Bạn sẽ cần chỉnh sửa các quy tắc tường lửa của mình để cho phép các log đến.
Đối với các bản phân phối dựa trên Debian, chỉ cần sử dụng công cụ UFW, để kích hoạt giao thức truyền UDP hoặc TCP.
Nếu bạn đang sử dụng UDP, hãy chạy lệnh sau, trong đó 514 là số cổng đã định cấu hình:
sudo ufw 514/udp
Nếu bạn đang sử dụng TCP trên cổng 514, chỉ cần chạy:
sudo ufw 514/tcp
Trên Fedora, bạn có thể sử dụng firewall-cmd để đạt được kết quả tương tự.
firewall-cmd --zone=zone --add-port=514/udp
Đối với Red Hat Linux, hãy mở tệp iptables tại /etc/sysconfig/iptables bằng cách sử dụng trình soạn thảo văn bản mà bạn chọn và thêm quy tắc sau:
-A INPUT -m state --state NEW -m udp -p udp --dport 514 -j ACCEPT
Khởi động lại dịch vụ iptables để các thay đổi có hiệu lực.
service iptables restart
Bước 4: Định cấu hình ứng dụng khách logging
Máy khách là máy gửi log của nó đến máy chủ log host từ xa hoặc tập trung. Mở tệp cấu hình rsyslog có tại /etc/rsyslog.conf:
sudo vim /etc/rsyslog.conf
Thêm dòng sau nếu bạn đang sử dụng UDP, trong đó 192.168.12.123 là địa chỉ IP của máy chủ từ xa, bạn sẽ log của mình vào:
*.* @192.168.12.123:514
Nếu bạn đang sử dụng TCP, hãy thêm dòng sau để thay thế. Lưu ý rằng dòng có hai ký hiệu @ .
*.* @@192.168.12.123:514
Lưu các thay đổi của bạn và khởi động lại dịch vụ rsyslog trên máy khách bằng lệnh:
sudo systemctl restart rsyslog
Bước 5: Xem log messages trên máy chủ
Bạn có thể sử dụng SSH để đăng nhập vào máy chủ từ xa của mình và xem log được gửi từ máy chủ khách. Trong trường hợp này, rsyslog được cấu hình để nó lưu trữ các bản ghi của máy khách trong thư mục /var/log/remote của máy chủ từ xa.
cd /var/logs/remote
Sau đó liệt kê nội dung của thư mục bằng lệnh ls:
ls -l
Như bạn có thể thấy trong đầu ra, thư mục chứa log messages cho các máy chủ từ xa có tên andiwa và rukuru. Các tệp log của chúng được đặt tên lần lượt là andiwa.log và rukuru.log.
Sau đó, bạn có thể xem các tệp nhật ký bằng trình soạn thảo văn bản hoặc bằng các công cụ xem tệp Linux như cat.
Logging từ xa cho phép bạn kiểm soát nhiều hơn
Bài viết này đã hướng dẫn cách thiết lập máy chủ ghi nhật ký từ xa (log host) trên Linux.
Log host cung cấp cho bạn khả năng tổ chức và kiểm soát tốt hơn khi ghi nhật ký. Ngay cả trong các tình huống mà hệ thống bị hỏng hoặc không thể truy cập được, bạn vẫn có thể xem nhật ký của hệ thống từ log host và tìm ra sự cố.
Vân Nguyễn
Dịch từ: https://www.makeuseof.com/set-up-linux-remote-logging-using-rsyslog/
Bình luận (0
)