細說nginx日志如何按天優(yōu)化

本篇文章給大家?guī)砹岁P(guān)于nginx的相關(guān)知識,其中主要介紹了nginx日志如何按天優(yōu)化,感興趣的朋友下面一起來看一下吧,希望對大家有幫助。

前言:

接著上一篇文章《記一次nginx攔截爬蟲》,發(fā)現(xiàn)服務(wù)器nginx日志非常不好看,時間長了一大都在一個文件里邊(甚至幾年的),對于我這種linux小白就不友好了,所以想把日志分文件,這樣至少我們?nèi)ゲ榭慈罩镜臅r候會方便很多:

按天分文件

直接上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模塊?設(shè)置時間?日期變量 ????map?$time_iso8601?$logdate?{ ????????#'~^(?<ymdh>d{4}-d{2}-d{2}Td{2})'?$ymdh; ????????'~^(?<ymd>d{4}-d{2}-d{2})'?$ymd; ????????default?'date-not-found'; ????}  ????#日志存放目錄 ????access_log?/var/log/nginx/access-$logdate.log?main;  ????#日志緩存,將多個日志進行積累,達到一定量級后寫入到磁盤,可以減少磁盤旋轉(zhuǎn),從而降低磁盤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; }</ymd></ymdh>

這樣就會按照天生成日志文件;這里邊最重要的就是引入$time_iso8601(這個是nginx里邊自帶的一個時間格式)進行自定義變量,不需要額按編譯。

日期格式優(yōu)化

  • nginx自帶兩種時間格式:
    $time_iso8601 形如 2023-03-29T16:58:49+08:00
    $time_local 形如 14/Nov/2022:08:28:14 +0000
    可以看出$time_local的格式看起來不是很美妙,對于我自己來說肯定按照 ‘年月日時分秒’ 這樣看更順眼一些,所以我們在自定義日志格式的時候,時間格式也是選擇的是$time_iso8601。

  • 時間怎么和我們本地時間一致
    時間格式順眼了,但是發(fā)現(xiàn)時間還是UTC時區(qū)的時間,怎么處理呢:
    我這邊使用的是docker-compose,可以直接配置環(huán)境變量。

version: '3' services:   d_nginx:     container_name: c_nginx     environment:       TZ: 'Asia/Shanghai'

第二種就是Dockerfile中編譯,一勞永逸。

FROM nginx:1.20.1-alpine #定義時區(qū)參數(shù) ENV TZ=Asia/Shanghai

有一些低版本的nginx做了以上兩步還是不得行,有可能是因為缺少了tzdata時區(qū)數(shù)據(jù)包。

FROM nginx:1.12.1-alpine #將alpine的源更換成阿里云的源 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories #定義時區(qū)參數(shù) ENV TZ=Asia/Shanghai #安裝時區(qū)數(shù)據(jù)包  RUN apk add --update tzdata #設(shè)置時區(qū)  RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone

經(jīng)過上邊的步驟nginx日志里邊的格式和時間應(yīng)該就是我自己想要的了。

給大家分享一個nginx日志分析工具

記一次nginx攔截爬蟲
goaccess nginx.log -a > nginx.html
這個工具能方便快速的分析nginx日志,能可視化的展示很多信息,幫助我們快速定位問題;比如接口的調(diào)用量(具體到某一個接口),訪問者數(shù)量等等。

細說nginx日志如何按天優(yōu)化

推薦學習:《記一次nginx攔截爬蟲

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊13 分享