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.