Kif tikkonfigura l-Aċċess Custom u l-Formats tal-Logg tal-iżbalji f'Nginx
Is-server HTTP Nginx għandu faċilità ta 'logging fenomenali li hija personalizzabbli ħafna. F'dan l-artikolu, se nispjegaw kif tikkonfigura l-formati tiegħek stess għall-aċċess u r-reġistri tal-iżbalji għal Nginx fil-Linux.
L-għan ta' din il-gwida huwa li jgħinek tifhem kif jiġu ġġenerati zkuk, sabiex jiġu kkonfigurati formati ta' log personalizzati għal skopijiet ta' debugging, issolvi l-problemi jew analiżi ta' dak li jseħħ fis-server tal-web tiegħek kif ukoll applikazzjonijiet tal-web (bħal talbiet ta' traċċar).
Dan l-artikolu huwa magħmul minn tliet taqsimiet li jdawwalkom dwar il-konfigurazzjoni ta 'logs ta' aċċess/żbalji u kif tippermetti l-illoggjar kondizzjonali f'Nginx.
Konfigurazzjoni ta 'Logs ta' Aċċess f'Nginx
Taħt Nginx, it-talbiet kollha tal-klijenti lis-server jiġu rreġistrati fir-reġistru tal-aċċess f'format speċifikat bl-użu tal-modulu ngx_http_log_module.
Il-fajl tal-log default huwa log/access.log (ġeneralment /var/log/nginx/access_log fuq sistemi Linux) u l-format default għall-illoggjar huwa normalment il-format magħqud jew prinċipali (dan jista’ jvarja minn distro għal ieħor).
Id-direttiva access_log (applikabbli fil-http, server, post, jekk fil-lokalità u l-limitu ħlief il-kuntest) tintuża biex tissettja l-fajl log u d-direttiva log_format (applikabbli taħt il-kuntest http biss) tintuża biex tissettja l-format tal-log. Il-format tal-ġurnal huwa deskritt minn varjabbli komuni, u varjabbli li ġġeneraw biss fiż-żmien meta jinkiteb log.
Is-sintassi għall-konfigurazzjoni ta' format ta' log hija:
log_format format_name 'set_of_variables_to_define_format';
u s-sintassi għall-konfigurazzjoni tar-reġistru tal-aċċess hija:
access_log /path/to/log_file format_name; #simplest form OR access_log /path/to/log_file [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
Din li ġejja hija silta mill-fajl tal-konfigurazzjoni Nginx default /etc/nginx/nginx.conf fuq CentOS 7.
http { #main log format log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log; }
Dan il-format tal-ġurnal jagħti l-entrata tal-ġurnal li ġejja.
127.0.0.1 - dbmanager [20/Nov/2017:18:52:17 +0000] "GET / HTTP/1.1" 401 188 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"
Dan li ġej huwa format ieħor ta 'logging utli li nużaw għat-traċċar ta' talbiet għall-applikazzjonijiet tal-web tagħna billi tuża xi wħud mill-varjabbli default, l-aktar importanti għandu l-ID tat-talba u jirreġistra d-dettalji tal-post tal-klijent (pajjiż, kodiċi tal-pajjiż, reġjun u belt).
log_format custom '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" ' '"$http_x_forwarded_for" $request_id ' '$geoip_country_name $geoip_country_code ' '$geoip_region_name $geoip_city ';
Tista' tużah bħal dan:
access_log /var/log/nginx/access.log custom;
Dan jipproduċi dħul ta' log li jidher bħal dan.
153.78.107.192 - - [21/Nov/2017:08:45:45 +0000] "POST /ngx_pagespeed_beacon?url=https%3A%2F%2Fwww.example.com%2Fads%2Ffresh-oranges-1509260795 HTTP/2.0" 204 0 "https://www.suasell.com/ads/fresh-oranges-1509260795" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0" "-" a02b2dea9cf06344a25611c1d7ad72db Uganda UG Kampala Kampala
Tista 'tispeċifika diversi zkuk billi tuża d-direttivi access_log fuq l-istess livell, hawnhekk qed nużaw aktar minn fajl ta' log wieħed fil-kuntest http.
http{ ##default log format log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; ##request tracing using custom format log_format custom '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" ' '"$http_x_forwarded_for" $request_id ' '$geoip_country_name $geoip_country_code ' '$geoip_region_name $geoip_city '; ##this uses the default log format access_log /var/log/nginx/access.log; ##this uses the our custom log format access_log /var/log/nginx/custom_log custom; }
Dawn li ġejjin huma eżempji ta' konfigurazzjonijiet ta' logging aktar avvanzati, li huma utli għal formati ta' log li fihom varjabbli relatati mal-kompressjoni u għall-ħolqien ta' fajls ta' log kompressati:
access_log /var/log/nginx/custom_log custom buffer 32k; access_log /path/to/log.gz compression gzip flush=5m;
Konfigurazzjoni ta' Żbalji f'Nginx
Fil-każ li Nginx jesperjenza xi glitches, jirreġistra informazzjoni dwarhom fir-reġistru tal-iżbalji. Dawn il-kwistjonijiet jaqgħu taħt livelli ta 'severità differenti: debug, info, avviż, twissi, żball (dan huwa l-livell default u jaħdem globalment), crit, allert, jew emerg.
Il-fajl log default huwa log/error.log, iżda normalment jinsab f'/var/log/nginx/ fuq distribuzzjonijiet tal-Linux. Id-direttiva error_log tintuża biex tispeċifika l-fajl tal-log, u tista 'tintuża fil-kuntest prinċipali, http, mail, stream, server, post (f'dik l-ordni).
Għandek tinnota wkoll li:
- Il-konfigurazzjonijiet fil-kuntest ewlieni dejjem jintirtu minn livelli aktar baxxi fl-ordni ta' hawn fuq.
- u l-konfigurazzjonijiet fil-livelli aktar baxxi jegħlbu l-konfigurazzjonijiet li ntirtu mil-livelli ogħla.
Tista' tikkonfigura l-illoggjar tal-iżbalji billi tuża s-sintassi li ġejja:
error_log /path/to/log_file log_level;
Pereżempju:
error_log /var/log/nginx/error_log warn;
Dan se jagħti struzzjonijiet lil Nginx biex jirreġistra l-messaġġi kollha tat-tip twissija u messaġġi ta 'livell ta' log crit, twissija u emerġ aktar severi.
Fl-eżempju li jmiss, messaġġi ta 'crit, twissija, u livelli emerg se jiġu illoggjati.
error_log /var/www/example1.com/log/error_log crit;
Ikkunsidra l-konfigurazzjoni hawn taħt, hawn, iddefinijna l-illoggjar tal-iżbalji fuq livelli differenti (fil-kuntest http u server). F'każ ta' żball, il-messaġġ jinkiteb fuq log ta' żball wieħed biss, dak l-eqreb għal-livell fejn deher l-iżball.
http { log_format compression '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" "$gzip_ratio"'; error_log /var/log/nginx/error_log crit; server { listen 80; server_name example1.com; #this logs errors messages for example1.com only error_log /var/log/nginx/example1.error_log warn; …... } server { listen 80; server_name example2.com; #this logs errors messages for example2.com only error_log /var/log/nginx/example1.error_log; ……. } }
Jekk tuża aktar minn direttiva waħda error_log bħal fil-konfigurazzjoni hawn taħt (l-istess livell), il-messaġġi jinkitbu fir-reġistri speċifikati kollha.
server { listen 80; server_name example1.com; error_log /var/www/example1.com/log/error_log warn; error_log /var/log/nginx/example1.error_log crit; …... }
Konfigurazzjoni ta 'Logging Kundizzjonali f'Nginx
F'xi każijiet, nistgħu rridu li Nginx iwettaq illoggjar kondizzjonali tal-messaġġi. Mhux kull messaġġ irid jiġi illoggjat minn Nginx, għalhekk nistgħu ninjoraw l-entrati tal-log insinifikanti jew inqas importanti mir-reġistri tal-aċċess tagħna għal każijiet partikolari.
Nistgħu nużaw il-modulu ngx_http_map_module li joħloq varjabbli li l-valuri tagħhom jiddependu fuq valuri ta 'varjabbli oħra. Il-parametri ġewwa blokka tal-mappa (li għandhom jeżistu fil-kontenut http biss) jispeċifikaw mapping bejn is-sors u l-valuri li jirriżultaw.
Għal dan it-tip ta' setting, talba ma tiġix irreġistrata jekk il-kundizzjoni tevalwa għal \0”
jew string vojta. Dan l-eżempju jeskludi talbiet b'kodiċi ta' status HTTP 2xx u 3xx.
http{ map $status $condition { ~^[23] 0; default 1; } server{ access_log /path/to/access.log custom if=$condition; } }
Hawnhekk huwa eżempju utli ieħor għad-debugging ta 'applikazzjoni tal-web f'fażi ta' żvilupp. Dan jinjora l-messaġġi kollha u jirreġistra biss l-informazzjoni tad-debug.
http{ map $info $debuggable { default 0; debug 1; } server{ …….. access_log /var/log/nginx/testapp_debug_access_log debug if=$debuggable; #logs other requests access_log /var/log/nginx/testapp_access.log main; ……. } }
Tista' ssib aktar informazzjoni, inkluż il-logging għal syslog hawn.
Dak kollu għalissa! F'din il-gwida, spjegajna kif tikkonfigura l-format tal-illoggjar tad-dwana għall-aċċess u l-zkuk tal-iżbalji f'Nginx. Uża l-formola ta' feedback hawn taħt biex tistaqsi mistoqsijiet jew taqsam il-ħsibijiet tiegħek dwar dan l-artikolu.