Maison  >  Article  >  Opération et maintenance  >  Décrire en détail comment optimiser les journaux nginx par jour

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

藏色散人
藏色散人avant
2023-03-31 14:48:492070parcourir

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;
}

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: '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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer