Rumah > Artikel > Operasi dan penyelenggaraan > Bagaimana untuk menyesuaikan pembalakan dan mendayakan penimbal log dalam Nginx
Log Akses
nginx menulis maklumat tentang permintaan pelanggan dalam log akses serta-merta selepas memproses permintaan. Secara lalai, log akses terletak dalam log/access.log, dan maklumat ditulis pada log dalam format gabungan yang telah ditetapkan.
Untuk merekod maklumat akses dengan tepat, anda perlu menyesuaikan format log akses yang lebih lengkap, seperti yang ditunjukkan di bawah:
http { log_format geoproxy '[$time_local] $remote_addr ' '$realip_remote_addr $remote_user ' '$request_method $server_protocol ' '$scheme $server_name $uri $status ' '$request_time $body_bytes_sent ' '$geoip_city_country_code3 $geoip_region ' '"$geoip_city" $http_x_forwarded_for ' '$upstream_status $upstream_response_time ' '"$http_referer" "$http_user_agent"'; ... }
Konfigurasi log ini dinamakan geoproksi, yang menggunakan banyak pembolehubah nginx untuk Menunjukkan pengelogan nginx kefungsian. Terangkan secara terperinci maksud khusus setiap pembolehubah dalam pilihan konfigurasi:
Apabila pengguna memulakan permintaan, nilai masa pelayan $time_local dan $remote_user adalah nama pengguna yang telah lulus kebenaran asas; >
digunakan untuk nginx Proses alamat ip sambungan terbuka dan alamat ip klien bagi arahan geoip_proxy dan realip_header; rekod kaedah permintaan http $request_method, protokol $server_protocol dan kaedah http $scheme selepas : http atau https; Sudah tentu, terdapat juga nama pelayan $server_name, permintaan URI dan kod status respons Selain maklumat asas, terdapat juga beberapa data hasil statistik : termasuk masa tahap milisaat pemprosesan permintaan $request_time dan blok data respons pelayan Saiz $body_bytes_sent.Selain itu, negara pelanggan $geoip_city_country_code3, rantau $geoip_region dan maklumat bandar $geoip_city juga direkodkan; Pembolehubah $http_x_forwarded_for digunakan untuk merekod permintaan yang dimulakan oleh pelayan proksi lain Mesej pengepala permintaan yang dimajukan-x bagi Sesetengah data dalam modul huluan juga direkodkan dalam log : kod status respons pelayan proksi $upstream_status, penubuhan sambungan dan badan respons terakhir yang diterima daripada pelayan huluan Masa bait $upstream_response_time , masa untuk mewujudkan sambungan ke pelayan huluan $upstream_connect_time , masa untuk mewujudkan sambungan dan dapatkan bait pertama pengepala respons daripada huluan $upstream_header_time . Sumber permintaan $http_referer dan ejen pengguna $http_user_agent juga boleh direkodkan dalam log fungsi pengelogan nginx sangat berkuasa dan fleksibel tentukan format log Arahan log_format hanya berfungsi dalam arahan peringkat blok http, dan semua nilai masa adalah dalam milisaat dan diukur dengan resolusi milisaat. . Konfigurasi log dalam format ini akan menjana jenis log berikut:[25/feb/2019:16:20:42 +0000] 10.0.1.16 192.168.0.122 derek
dapatkan http/1.1 http / 200 0.001 370 usa mi"ann arbor" - 200 0.001 "-" "curl/7.47.0"access_log boleh digunakan dalam berbilang konteks, dan setiap konteks boleh. tentukan direktori log dan rekod lognya sendiri. Kesimpulan: Modul log dalam nginx membenarkan mengkonfigurasi format log untuk senario yang berbeza untuk melihat fail log yang berbeza. Dalam aplikasi praktikal, sangat berguna untuk mengkonfigurasi log yang berbeza untuk konteks yang berbeza Kandungan log yang direkodkan boleh menjadi maklumat mudah atau semua maklumat yang diperlukan boleh direkodkan secara terperinci. Bukan itu sahaja, selain teks sokongan , kandungan log juga boleh merekod data dalam format json dan format xml. Sebenarnya log nginx membantu anda memahami maklumat seperti trafik pelayan, penggunaan pelanggan dan asal pelanggan. Selain itu, log akses juga boleh membantu anda mencari respons dan isu yang berkaitan dengan pelayan huluan atau URI tertentu juga berguna untuk ujian, kerana ia boleh digunakan untuk menganalisis trafik dan mensimulasikan senario interaksi pengguna sebenar. Log amat diperlukan dalam penyelesaian masalah, penyahpepijatan, analisis aplikasi dan pelarasan perniagaan.
Jika anda perlukan untuk menggunakan Konfigurasi log ini, anda perlu menggunakan arahan access_log dalam kombinasi Arahan access_log menerima direktori log dan nama konfigurasi digunakan sebagai parameter:server { access_log /var/log/nginx/access.log geoproxy; ... }
Log ralat
Untuk mengesan log ralat nginx dengan tepat, gunakan arahan error_log terbina dalam untuk menentukan direktori log ralat dan tahap merekod log ralat. Konfigurasi adalah seperti berikut :
error_log /var/log/nginx/error.log warn;arahan log_error memerlukan direktori log yang diperlukan dan pilihan tahap ralat semasa mengkonfigurasi. Kecuali arahan if, arahan error_log boleh digunakan dalam semua konteks. Tahap log ralat termasuk: nyahpepijat, maklumat, notis, amaran, ralat, kritikan, amaran dan emerg. Susunan peringkat log yang diberikan ialah susunan peringkat log daripada rekod yang paling kecil kepada yang paling ketat. Perlu diingatkan bahawa log nyahpepijat perlu digunakan semasa menyusun pelayan nginx dengan bendera --with-debug. Apabila terdapat ralat dalam konfigurasi pelayan, anda perlu menyemak log ralat terlebih dahulu untuk mencari masalah. Log ralat juga merupakan alat yang berguna untuk mencari pelayan aplikasi (seperti perkhidmatan fastcgi). Melalui log ralat, kami boleh menyahpepijat ralat sambungan proses pekerja, peruntukan memori, IP klien, pelayan aplikasi dan isu-isu lain. Format log ralat tidak menyokong format log tersuai, walau bagaimanapun, ia juga merekodkan data seperti masa semasa, tahap log dan maklumat khusus.
注意:错误日志的默认设置适用于全局。要覆盖它,请将 error_log 指令放在 main (顶级)配置上下文中。 error_log 在开源 nginx 1.5.2 版中添加了在同一配置级别指定多个指令的功能。
通过 syslog 将日志发送到统一服务器
既然不再需要将日志写到磁盘的某个目录,而是发送到统一的日志服务器,则将原有的目录部分替换为服务器 ip 即可,配置如下:
error_log syslog:server=10.0.1.42 debug; access_log syslog:server=10.0.1.42,tag=nginx,severity=info geoproxy; #error_log server=unix:/var/log/nginx.sock debug; #access_log syslog:server=[2001:db8::1]:1234,facility=local7,tag=nginx,severity=info;
error_log 和 access_log 指令的 syslog 参数紧跟冒号 : 和一些参数选项。包括:必选的 server 标记表示需要连接的 ip、dns 名称或 unix 套接字;
可以使用如上注释的高端玩。
可选参数有 facility 、 severity 、 tag :
server 参数接收带端口的 ip 地址或 dns 名称;默认是 udp 514 端口。
facility 参数设置 syslog 的类型 facility ,值是 syslog rfc 标准定义的 23 个值中一个,默认值为 local7 。其他可能的值是: auth , authpriv , daemon , cron , ftp , lpr , kern , mail , news , syslog , user , uucp , local0 ... local7
tag 参数表示日志文件中显示时候的标题,默认值是 nginx 。
severity 设置消息严重程度,默认是 info 级别日志。
日志缓冲区
当系统处于负载状态时,启用日志缓冲区以降低 nginx worker 进程阻塞。大量的磁盘读写和 cpu 资源使用对于服务器资源也是一种巨大消耗。将日志数据缓冲到内存中可能是很小的一个优化手段, buffer 参数意义是缓冲区的大小,功能是当缓冲区已经写满时,日志会被写入文件中; flush 参数意义是缓冲区内日志在缓冲区内存中保存的最长时间,功能即当缓存中的日志超过最大缓存时间,也会被写入到文件中, 不足的地方即写入到日志文件的日志有些许延迟,即时调试中应当关闭日志缓冲。 。配置如下:
http { access_log /var/log/nginx/access.log main buffer=32k flush=1m; }
Atas ialah kandungan terperinci Bagaimana untuk menyesuaikan pembalakan dan mendayakan penimbal log dalam Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!