Jak skonfigurować niestandardowy dostęp i formaty dziennika błędów w Nginx

Jak skonfigurować niestandardowy dostęp i formaty dziennika błędów w Nginx

serwer HTTP Nginx ma fenomenalną funkcję rejestrowania, która jest wysoce konfigurowalna. W tym artykule wyjaśnimy, jak skonfigurować własne formaty dostępu i dzienniki błędów dla Nginx w Linuksie.

celem tego przewodnika jest pomoc w zrozumieniu sposobu generowania logów, aby skonfigurować niestandardowe formaty logów do celów debugowania, rozwiązywania problemów lub analizy tego, co dzieje się na serwerze WWW, a także w aplikacjach internetowych (takich jak żądania śledzenia).,

Czytaj także: 4 dobre narzędzia do monitorowania i zarządzania logami Open Source dla Linuksa

Ten artykuł składa się z trzech sekcji, które oświecą Cię o konfigurowaniu logów dostępu/błędów i o tym, jak włączyć logowanie warunkowe w Nginx.

Konfigurowanie dzienników dostępu w Nginx

pod nginx wszystkie żądania klienta do serwera są rejestrowane w dzienniku dostępu w określonym formacie przy użyciu modułu ngx_http_log_module.

domyślnym plikiem dziennika jest log / access.,log (Zwykle / var / log / nginx / access_log w systemach Linux), a domyślnym formatem logowania jest zwykle format łączony lub główny(może się to różnić w zależności od dystrybucji).

dyrektywa access_log (ma zastosowanie w http, server, location, jeśli w location i limit oprócz kontekstu) jest używana do Ustawienia pliku dziennika, a dyrektywa log_format (ma zastosowanie tylko w kontekście http) jest używana do Ustawienia formatu dziennika. Format dziennika jest opisany przez zmienne wspólne i zmienne, które generowane są tylko w czasie, gdy dziennik jest zapisywany.,

składnia konfiguracji formatu dziennika to:

log_format format_name 'set_of_variables_to_define_format';

a składnia konfiguracji dziennika dostępu to:

poniższy fragment z domyślnego pliku konfiguracyjnego Nginx/etc/nginx / nginx.conf na CentOS 7.

/etc/nginx/nginx.conf

ten format dziennika daje następujący wpis dziennika.

poniżej znajduje się kolejny przydatny format logowania, którego używamy do śledzenia żądań do naszych aplikacji internetowych przy użyciu niektórych zmiennych domyślnych, co najważniejsze ma identyfikator żądania i rejestruje szczegóły lokalizacji klienta (kraj, kod kraju, region i miasto).,

/etc/nginx/nginx.conf

możesz go użyć w następujący sposób:

access_log /var/log/nginx/access.log custom;

spowoduje to utworzenie wpisu dziennika, który pojawi się w ten sposób.

możesz określić kilka dzienników używając dyrektyw access_log na tym samym poziomie, tutaj używamy więcej niż jednego pliku dziennika w kontekście http.

/etc/nginx/nginx.,conf

poniżej znajdują się bardziej zaawansowane przykłady konfiguracji logowania, które są przydatne dla formatów logów, które zawierają zmienne związane z kompresją oraz do tworzenia skompresowanych plików logów:

access_log /var/log/nginx/custom_log custom buffer 32k;access_log /path/to/log.gz compression gzip flush=5m;

Konfigurowanie dzienników błędów w Nginx

W przypadku wystąpienia usterek nginx zapisuje informacje dotyczące ich w dzienniku błędów. Problemy te mają różne poziomy nasilenia: debug, info, notice, warn, error (jest to domyślny poziom i działa globalnie), crit, alert lub emerg.

domyślnym plikiem dziennika jest log / error.,log, ale zwykle znajduje się w /var/log/nginx/ na dystrybucjach Linuksa. Dyrektywa error_log jest używana do określenia pliku dziennika i może być używana w kontekście głównym, http, poczty, strumienia, serwera, lokalizacji (w tej kolejności).

należy również zauważyć, że:

  • konfiguracje w kontekście głównym są zawsze dziedziczone przez niższe poziomy w powyższej kolejności.
  • i konfiguracje na niższych poziomach zastępują konfiguracje odziedziczone z wyższych poziomów.,

możesz skonfigurować rejestrowanie błędów przy użyciu następującej składni:

error_log /path/to/log_file log_level;

na przykład:

error_log /var/log/nginx/error_log warn; 

spowoduje to poinstruowanie Nginx, aby logował wszystkie wiadomości typu warn i poważniejsze komunikaty poziomu dziennika crit, alert i emerg.

w następnym przykładzie zostaną zarejestrowane komunikaty o poziomach crit, alert i emerg.

error_log /var/www/example1.com/log/error_log crit;

rozważmy konfigurację poniżej, tutaj zdefiniowaliśmy rejestrowanie błędów na różnych poziomach (w kontekście http i serwera)., W przypadku błędu wiadomość jest zapisywana tylko do jednego dziennika błędów, najbliższego poziomowi, na którym wystąpił błąd.

/etc/nginx/nginx.conf

Jeśli używasz więcej niż jednej dyrektywy error_log jak w poniższej konfiguracji (ten sam poziom), wiadomości są zapisywane do wszystkich podanych dzienników.

/etc/nginx/nginx.conf

Konfigurowanie warunkowego logowania w Nginx

w niektórych przypadkach możemy chcieć, aby nginx wykonywał warunkowe logowanie wiadomości., Nie każda wiadomość musi być rejestrowana przez Nginx, dlatego możemy zignorować nieistotne lub mniej ważne wpisy z naszych dzienników dostępu dla poszczególnych instancji.

możemy użyć modułu ngx_http_map_module, który tworzy zmienne, których wartości zależą od wartości innych zmiennych. Parametry wewnątrz bloku mapy (które powinny istnieć tylko w treści http) określają mapowanie pomiędzy wartościami źródłowymi i wynikowymi.

dla tego rodzaju ustawień żądanie nie będzie rejestrowane, jeśli warunek zostanie obliczony na "0” lub pusty ciąg znaków., Ten przykład wyklucza żądania z kodami statusu HTTP 2XX i 3XX.

/etc/nginx/nginx.conf
http{map $status $condition {~^ 0; default 1;}server{access_log /path/to/access.log custom if=$condition;}}

oto kolejny przydatny przykład debugowania aplikacji webowej w fazie rozwoju. Spowoduje to zignorowanie wszystkich wiadomości i tylko logowania informacji debugowania.

/etc/nginx/nginx.conf

Więcej informacji, w tym logowanie do syslogu znajdziesz tutaj.

To wszystko na razie! W tym przewodniku wyjaśniliśmy, jak skonfigurować niestandardowy format rejestrowania dostępu i dzienników błędów w Nginx., Skorzystaj z poniższego formularza opinii, aby zadać pytania lub podzielić się swoimi przemyśleniami na temat tego artykułu.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *