Heim > Artikel > Betrieb und Instandhaltung > Beschreiben Sie ausführlich, wie Sie Nginx-Protokolle pro Tag optimieren können
Dieser Artikel vermittelt Ihnen relevantes Wissen über Nginx. Er stellt vor allem vor, wie Sie Nginx-Protokolle täglich optimieren können. Ich hoffe, dass er für alle hilfreich ist.
Vorwort:
Nach dem vorherigen Artikel „Erinnern Sie sich an einen Nginx-Interception-Crawler“ habe ich festgestellt, dass das Server-Nginx-Protokoll sehr hässlich ist ). Für Linux-Neulinge wie mich ist das nicht geeignet, deshalb möchte ich das Protokoll in Dateien aufteilen, damit es für uns zumindest viel bequemer ist, das Protokoll zu überprüfen:
Dateien nach Talent aufteilen
Gehe direkt zur nginx.conf-Konfiguration
user nginx; worker_processes 2; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_iso8601] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" $request_time $upstream_response_time'; #引入time_iso8601模块 设置时间 日期变量 map $time_iso8601 $logdate { #'~^(?<ymdh>\d{4}-\d{2}-\d{2}T\d{2})' $ymdh; '~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd; default 'date-not-found'; } #日志存放目录 access_log /var/log/nginx/access-$logdate.log main; #日志缓存,将多个日志进行积累,达到一定量级后写入到磁盘,可以减少磁盘旋转,从而降低磁盘i/o,提升nginx能效 open_log_file_cache max=10; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; #隐藏http版本号 server_tokens off; }
Auf diese Weise werden Protokolldateien tagesaktuell generiert. Das Wichtigste hier ist die Einführung von $time_iso8601
(dies ist ein Zeitformat, das mit nginx geliefert wird) zur Anpassung Variablen, und es ist keine Kompilierung erforderlich. $time_iso8601
(这个是nginx里边自带的一个时间格式)进行自定义变量,不需要额按编译。
日期格式优化
nginx自带两种时间格式:$time_iso8601
形如 2023-03-29T16:58:49+08:00
$time_local
形如 14/Nov/2022:08:28:14 +0000
可以看出$time_local
的格式看起来不是很美妙,对于我自己来说肯定按照 ‘年月日时分秒’ 这样看更顺眼一些,所以我们在自定义日志格式的时候,时间格式也是选择的是$time_iso8601
。
时间怎么和我们本地时间一致
时间格式顺眼了,但是发现时间还是UTC时区的时间,怎么处理呢:
我这边使用的是docker-compose
,可以直接配置环境变量。
version: '3' services: d_nginx: container_name: c_nginx environment: TZ: 'Asia/Shanghai'
第二种就是Dockerfile
中编译,一劳永逸。
FROM nginx:1.20.1-alpine #定义时区参数 ENV TZ=Asia/Shanghai
有一些低版本的nginx做了以上两步还是不得行,有可能是因为缺少了tzdata
时区数据包。
FROM nginx:1.12.1-alpine #将alpine的源更换成阿里云的源 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories #定义时区参数 ENV TZ=Asia/Shanghai #安装时区数据包 RUN apk add --update tzdata #设置时区 RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone
经过上边的步骤nginx日志里边的格式和时间应该就是我自己想要的了。
给大家分享一个nginx日志分析工具
《goaccess》goaccess nginx.log -a > nginx.html
Optimierung des Datumsformats
$time_iso8601
in der Form 2023-03-29T16:58:49+08:00
$time_local
hat die Form 14/Nov/2022:08:28:14 +0000
Sie können sehen, dass $time_local Das Format sieht für mich nach „Jahr, Monat, Tag, Stunde, Minute und Sekunde“ nicht sehr schön aus. Wenn wir also das Protokollformat anpassen, ist es auch so ausgewählt als <code>$time_iso8601.
docker-compose code>, Sie können Umgebungsvariablen direkt konfigurieren. 🎜
Dockerfile
zu kompilieren. 🎜rrreee🎜Es gibt einige niedrigere Versionen von Nginx, die nach den beiden oben genannten Schritten immer noch nicht funktionieren. Dies kann daran liegen, dass das Zeitzonendatenpaket tzdata
fehlt. 🎜rrreee🎜Nach den obigen Schritten sollten das Format und die Zeit im Nginx-Protokoll meinen Wünschen entsprechen. 🎜🎜🎜 Teilen Sie ein Nginx-Protokollanalysetool mit Ihnen🎜🎜🎜"goaccess 》🎜🎜goaccess nginx.log -a >
🎜Dieses Tool kann Nginx-Protokolle einfach und schnell analysieren und viele Informationen visuell anzeigen, um uns bei der schnellen Lokalisierung von Problemen zu helfen Anzahl der Schnittstellenaufrufe (spezifisch für eine bestimmte Schnittstelle), Anzahl der Besucher usw. 🎜🎜🎜🎜🎜🎜Empfohlenes Lernen: „🎜Tutorial zur Nginx-Nutzung🎜“🎜🎜Das obige ist der detaillierte Inhalt vonBeschreiben Sie ausführlich, wie Sie Nginx-Protokolle pro Tag optimieren können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!