Tiếp nối phần 1, ở phần 2 mình sẽ hướng dẫn 2 cách đẩy Log Apache về Server Log tập trung.

Mô hình:

IP Planning:

Trên Client1:

Mặc định bạn đã cấu hình đẩy Log về Server và đã cài dịch vụ Apache

Khi cài dịch vụ Apache lên, trên thư mục /var/log sẽ xuất hiện thư mục httpd cùng 2 file log access_logerror_log.

Kiểm tra dịch vụ Web

systemctl status httpd

Cấu hình đẩy Log Apache về Rsyslog Server

Cách 1: Sử dụng Rsyslog

Tạo và thêm cấu hính sau sau vào file apache.conf:

vi /etc/rsyslog.d/apache.conf

$ModLoad imfile #Dòng này chỉ thêm một lần

# Apache error file: 
$InputFileName /var/log/httpd/error_log #Đường dẫn file log muốn đẩy
$InputFileTag errorlog #Tên file 
$InputFileSeverity info #Các log từ mức info trở lên được ghi lại
$InputFileFacility local3 #Facility log
$InputRunFileMonitor

# Apache access file:
$InputFileName /var/log/httpd/access_log
$InputFileTag accesslog
$InputFileSeverity info
$InputFileFacility local4
$InputRunFileMonitor

$InputFilePollInterval 10 #Cứ sau 10 giây lại gửi tin nhắn

Restart Rsyslog

systemctl restart rsyslog

Sử dụng tcpdump để kiểm tra các gói tin đẩy về Rsyslog Server

Như các bạn thấy các gói tin local được đẩy về Rsyslog Server

Kiểm tra trên Rsyslog Server

Xuất hiện thêm 2 file local trên thư mục log của Client1. Như vậy là đã thành công.

Kiểm tra thử 2 file log đẩy về và đối chiếu với bên Client1

ErrorLog – local3

AccessLog – local4

Test 2 file log này bằng cách restart lại dịch vụ httpd và truy cập vào địa chỉ web client1 để kiểm chứng có log đẩy về Server

Cách 2: Sử dụng Logger

Unix/Linux cung cấp lệnh logger 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.

Thêm dòng sau vào cuối file cấu hình: vi /etc/httpd/conf/httpd.conf

ErrorLog "|/bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-error.log | /usr/bin/logger -thttpd -plocal1.info'"
CustomLog "| /bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-access.log | /usr/bin/logger -thttpd -plocal2.info'" combined
  • ErrorLog trả về Server file local1.log
  • AccessLog trả về file Server local2.log

Sau đó restart lại dịch vụ httpd

systemctl restart httpd

Dùng tcpdump để kiểm tra

Kiểm tra trên Rsyslog Server

2 file local1 và local2 cấu hình ở trên đã được đẩy về Server.

Chú ý: Với 2 định dạng cấu hình file log client đẩy về server xem ở Phần 1

  • Định dạng 1: %PROGRAMNAME%.log – tên theo các chương trình
    • Với cách sử dụng Logger định dạng này log apache được đẩy về server sẽ có tên httpd.log
    • Theo cách cấu hình Rsyslog tên file log đẩy về sẽ là: errorlog.log và accesslog.log như cấu hình ở trên
  • Định dạng 2: %SYSLOGFACILITY-TEXT%.log tên theo cơ sở sinh ra log
    • Log apache được đẩy về theo cách sử dụng Logger: tên file chứa log sẽ là local1.loglocal2.log
    • Theo cách dùng Rsyslog, tên file chứa log sẽ là local3.log ứng với errorloglocal4.log ứng với accesslog

CHÚC CÁC BẠN THÀNH CÔNG!!!