Przesyłanie logów Apache/Nginx do syslog-a za pomocą modułu imfile

By | 4 października 2018

Logi są często jedynym źródłem wiedzy na temat awarii, czy problemów z funkcjonowaniem urządzeń lub WWW. Gromadzenie logów w jednym centralnym miejscu ma parę zalet, między innymi lepsze zarządzanie, czy monitorowanie, a co najważniejsze często jest ostatnią szansą wytropienia złośliwego użytkownika lub włamywacza. Dlatego dobrą praktyką jest odsyłanie logów przez rsyslog na zewnętrzny serwer. Aplikacje takie jak Nginx, czy Apache, zapisują domyślnie logi do plików. Nginx potrafi zapisywać do sysloga, ale Apache już nie do końca, bo tylko logi błędów. Można to jednak w dosyć prosty sposób zrobić inaczej, wykorzystując moduł „imfile” rsysloga.

vim /etc/rsyslog.conf

Edytujemy główny plik konfiguracyjny i dodajemy „$ModLoad imfile”.

vim /etc/rsyslog.d/httpd.conf

Następnie tworzymy plik z konfiguracją „eksportu” logów access i error do sysloga. Przykładowa zawartość poniżej:
# error log
$InputFileName /var/log/httpd/error.log
$InputFileTag httpd:
$InputFileStateFile stat-httpd-error
$InputFileSeverity error
$InputFileFaility local6
$InputFilePollInterval 1
$InputRunFileMonitor

# access log
$InputFileName /var/log/httpd/access.log
$InputFileTag httpd:
$InputFileStateFile stat-httpd-access
$InputFileSeverity notice
$InputFileFaility local6
$InputFilePollInterval 1
$InputRunFileMonitor

Na koniec restartujemy rsyslog-a.

systemctl restart rsyslog

Od teraz logi serwera WWW powinny być dostępne między innymi w „/var/log/messages”.

Category: WWW