Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Beschreiben Sie ausführlich, wie Sie Nginx-Protokolle pro Tag optimieren können

Beschreiben Sie ausführlich, wie Sie Nginx-Protokolle pro Tag optimieren können

藏色散人
藏色散人nach vorne
2023-03-31 14:48:492124Durchsuche

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 {
        #&#39;~^(?<ymdh>\d{4}-\d{2}-\d{2}T\d{2})&#39; $ymdh;
        &#39;~^(?<ymd>\d{4}-\d{2}-\d{2})&#39; $ymd;
        default &#39;date-not-found&#39;;
    }

    #日志存放目录
    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

rrreee🎜Die zweite Methode besteht darin, ein für alle Mal in 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen