Jak skonfigurować rejestrowanie i rotację logów w Nginx na serwerze VPS Ubuntu

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ępu
  • main: 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ów
  • error: 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ów
  • rotate 7: przechowywanie 7 rotacji
  • compress: kompresja rotowanych plików
  • delaycompress: opóźnienie kompresji o 24 godziny
  • missingok: brak błędu w przypadku braku logu
  • notifempty: 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';