Wstęp
Rejestracja zdarzeń w dziennikach jest kluczowym elementem utrzymania każdego systemu, w tym serwera internetowego. Dzienniki zapisują informacje o działaniach w systemie, dostarczając cennych danych na temat jego funkcjonowania i pomagając w rozwiązywaniu napotkanych problemów.
Nginx, będący popularnym serwerem internetowym o otwartym kodzie źródłowym, wyróżnia się swoją efektywnością i elastycznością. Zrozumienie zasad konfigurowania rejestrowania i rotacji logów w Nginx jest niezbędne dla zachowania wysokiej wydajności i bezpieczeństwa serwera.
Ten poradnik krok po kroku poprowadzi Cię przez proces konfiguracji rejestrowania i rotacji dzienników w Nginx, działającym na serwerze VPS z systemem Ubuntu.
Ustawienia Rejestrowania
1. Otwarcie Pliku Konfiguracyjnego Nginx
Użyj edytora tekstu, aby otworzyć plik konfiguracyjny Nginx:
sudo nano /etc/nginx/nginx.conf
2. Dodanie Sekcji http
Jeśli w pliku konfiguracyjnym nie występuje sekcja http
, dodaj ją w odpowiednim miejscu:
http {
}
3. Konfiguracja Dyrektywy access_log
Dyrektywa access_log
definiuje miejsce i sposób zapisu informacji o żądaniach kierowanych do serwera. Wewnątrz sekcji http
umieść następującą linię:
access_log /var/log/nginx/access.log;
/var/log/nginx/access.log
: lokalizacja pliku z logami dostępumain
: domyślny format zapisu
4. Konfiguracja Dyrektywy error_log
Dyrektywa error_log
określa, jak i gdzie zapisywać logi błędów serwera. W sekcji http
dodaj kolejną linię:
error_log /var/log/nginx/error.log;
/var/log/nginx/error.log
: ścieżka do pliku z logami błędówerror
: standardowy format zapisu
5. Zastosowanie Zmian
Po wprowadzeniu zmian, zapisz plik i zrestartuj usługę Nginx, aby zmiany zaczęły obowiązywać:
sudo systemctl restart nginx
Ustawienia Rotacji Dzienników
1. Tworzenie Skryptu Cron
Utwórz nowy skrypt w crontab, który będzie automatycznie obracał logi każdego dnia o północy:
sudo nano /etc/cron.d/nginx-logrotate
2. Wprowadzenie Kodu do Skryptu
W otwartym pliku umieść następujący kod:
0 0 * * * root /usr/sbin/logrotate /etc/logrotate.d/nginx
3. Zapisanie i Zamknięcie Pliku
Po wklejeniu kodu zapisz i zamknij skrypt.
4. Utworzenie Pliku Konfiguracji logrotate.d/nginx
Utwórz plik konfiguracyjny dla narzędzia logrotate, który będzie dotyczył Nginx:
sudo nano /etc/logrotate.d/nginx
5. Wprowadzenie Kodu do Pliku Konfiguracyjnego
Wklej poniższą konfigurację do pliku:
/var/log/nginx/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
}
daily
: dziennie rotowanie plikówrotate 7
: przechowywanie 7 rotacjicompress
: kompresja rotowanych plikówdelaycompress
: opóźnienie kompresji o 24 godzinymissingok
: brak błędu w przypadku braku logunotifempty
: rotacja tylko jeśli log nie jest pusty
Zaawansowane Opcje Konfiguracyjne
Personalizacja Formatowania Dzienników
Za pomocą dyrektywy log_format
można dostosować strukturę logów. Aby na przykład dołączyć czas żądania do logów dostępu, dodaj poniższą linię w sekcji http
:
log_format my_format '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes "$http_referer" "$http_user_agent" $request_time';
Następnie użyj tej dyrektywy w konfiguracji logu dostępu:
access_log /var/log/nginx/access.log my_format;
Obsługa Wielu Witryn
W przypadku hostowania kilku witryn na jednym serwerze Nginx, zaleca się stosowanie oddzielnych plików logowania dla każdej z nich. W tym celu w konfiguracji każdej witryny (sekcja server
) skonfiguruj osobne dyrektywy access_log
i error_log
.
Logowanie do Syslog
Nginx może zapisywać logi w syslog, centralnym systemie rejestracji zdarzeń. Aby włączyć tę funkcję, dodaj poniższe linijki do sekcji http
:
error_log syslog:server=localhost:514,facility=local1;
access_log syslog:server=localhost:514,facility=local2;
Podsumowanie
Prawidłowa konfiguracja rejestrowania i rotacji logów w Nginx na serwerze VPS Ubuntu jest istotna dla zachowania wydajności i bezpieczeństwa serwera. Przedstawiony przewodnik szczegółowo opisuje proces konfiguracji zarówno podstawowych, jak i zaawansowanych opcji rejestrowania, umożliwiając dostosowanie systemu logowania do konkretnych potrzeb.
Regularne monitorowanie dzienników pomaga szybko identyfikować problemy, usuwać błędy i utrzymywać optymalną wydajność serwera.
Najczęściej Zadawane Pytania
1. Czym jest rotacja logów?
Rotacja logów to mechanizm archiwizowania aktualnych plików dzienników i usuwania starszych, co zapobiega nadmiernemu zajmowaniu miejsca na dysku i ułatwia zarządzanie logami.
2. Dlaczego potrzebna jest rotacja logów?
Rotacja logów pozwala zwolnić przestrzeń dyskową, poprawia efektywność systemu oraz usprawnia przeglądanie i analizowanie danych.
3. Jak często rotować logi?
Częstotliwość rotacji zależy od ilości generowanych logów. Najczęściej stosuje się rotację dzienną lub tygodniową.
4. Gdzie domyślnie są zapisywane logi Nginx?
Domyślna lokalizacja logów Nginx to katalog /var/log/nginx/
.
5. Jak wyczyścić logi Nginx?
Aby usunąć wszystkie logi Nginx, użyj komendy:
sudo rm -rf /var/log/nginx/*
6. Jak włączyć tryb debugowania w Nginx?
Aby włączyć tryb debugowania, dodaj następującą linię do sekcji http
:
error_log /var/log/nginx/error.log debug;
7. Jak skonfigurować plik jawnie kolejkujący?
Aby skonfigurować jawne kolejkowanie plików, dodaj w sekcji http
następujące ustawienia:
open_file_cache max=10000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
8. Jak skonfigurować logowanie geoIP w Nginx?
Aby włączyć logowanie geoIP, dodaj te linie w sekcji http
:
geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $country_code {
default US;
}
log_format geoip '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes "$http_referer" "$http_user_agent" $country_code';