Maison > Opération et maintenance > Nginx > le corps du texte

Décrire en détail comment optimiser les journaux nginx par jour

藏色散人
Libérer: 2023-03-31 16:44:50
avant
2070 Les gens l'ont consulté

Cet article vous apporte des connaissances pertinentes sur nginx. Il présente principalement comment optimiser les journaux nginx au quotidien. Les amis intéressés peuvent y jeter un œil ci-dessous.

Avant-propos :

Suite à l'article précédent "Souvenez-vous d'un robot d'interception nginx", j'ai trouvé que le journal nginx du serveur est très moche. Après une longue période, une grande partie se trouve dans un seul fichier (même plusieurs années). ). Pour les débutants Linux comme moi, ce n'est pas convivial, je veux donc diviser le journal en fichiers, afin qu'au moins il soit beaucoup plus pratique pour nous de vérifier le journal :

Diviser les fichiers par talent

Allez directement à la configuration de nginx.conf

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;
}
Copier après la connexion

De cette façon, les fichiers journaux seront générés en fonction du jour ; le plus important ici est d'introduire $time_iso8601 (c'est un format d'heure fourni avec nginx) pour personnaliser variables, et il n’est pas nécessaire de compiler. $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: &#39;3&#39;
services:
  d_nginx:
    container_name: c_nginx
    environment:
      TZ: &#39;Asia/Shanghai&#39;
Copier après la connexion

第二种就是Dockerfile中编译,一劳永逸。

FROM nginx:1.20.1-alpine
#定义时区参数
ENV TZ=Asia/Shanghai
Copier après la connexion

有一些低版本的nginx做了以上两步还是不得行,有可能是因为缺少了tzdata时区数据包。

FROM nginx:1.12.1-alpine
#将alpine的源更换成阿里云的源
RUN sed -i &#39;s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g&#39; /etc/apk/repositories
#定义时区参数
ENV TZ=Asia/Shanghai
#安装时区数据包 
RUN apk add --update tzdata
#设置时区 
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo &#39;$TZ&#39; > /etc/timezone
Copier après la connexion

经过上边的步骤nginx日志里边的格式和时间应该就是我自己想要的了。

给大家分享一个nginx日志分析工具

《goaccess》
goaccess nginx.log -a > nginx.html

Optimisation du format de date

rrreee🎜La deuxième méthode consiste à compiler dans Dockerfile, une fois pour toutes. 🎜rrreee🎜Il existe certaines versions inférieures de nginx qui ne peuvent toujours pas fonctionner après avoir effectué les deux étapes ci-dessus. Cela peut être dû au fait que le package de données de fuseau horaire tzdata est manquant. 🎜rrreee🎜Après les étapes ci-dessus, le format et l'heure dans le journal nginx devraient être ce que je veux. 🎜🎜🎜 Partagez avec vous un outil d'analyse de logs nginx🎜🎜🎜"goaccess 》🎜🎜goaccess nginx.log -a > nginx.html🎜Cet outil peut analyser facilement et rapidement les journaux nginx et peut afficher de nombreuses informations visuellement pour nous aider à localiser rapidement des problèmes tels que le ; le nombre d'appels d'interface (propre à une certaine interface), le nombre de visiteurs, etc. 🎜🎜🎜🎜🎜🎜Apprentissage recommandé : "🎜Tutoriel d'utilisation de Nginx🎜"🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!