Rumah >Operasi dan penyelenggaraan >Nginx >Terangkan secara terperinci cara mengoptimumkan log nginx mengikut hari

Terangkan secara terperinci cara mengoptimumkan log nginx mengikut hari

藏色散人
藏色散人ke hadapan
2023-03-31 14:48:492179semak imbas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang nginx terutamanya cara mengoptimumkan log nginx setiap hari. Rakan-rakan yang berminat boleh lihat di bawah.

Kata Pengantar:

Berikutan artikel sebelumnya "Ingat perangkak pemintasan nginx", saya mendapati log pelayan nginx sangat jelek, dan sudah lama Banyak daripada mereka berada dalam satu fail (walaupun beberapa tahun), yang tidak mesra kepada orang baru Linux seperti saya, jadi saya ingin membahagikan log ke dalam fail, supaya sekurang-kurangnya ia akan menjadi banyak. lebih mudah untuk kami menyemak log:

Bahagi fail mengikut hari

Konfigurasikan nginx.conf secara langsung

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

Dengan cara ini, log fail akan dijana mengikut hari; perkara yang paling penting di sini ialah memperkenalkan$time_iso8601(Ini adalah format masa yang disertakan dengan nginx) Pembolehubah tersuai tidak perlu dikompilasi.

Pengoptimuman format tarikh

  • nginx disertakan dengan dua format masa:
    $time_iso8601 berbentuk seperti 2023-03-29T16:58:49+08:00
    $time_local Nampak macam 14/Nov/2022:08:28:14 +0000
    Nampak sangat format $time_local bagi saya memang lebih sedap mata memandang dalam bentuk 'tahun, bulan, hari. jam, minit dan saat', jadi kami menyesuaikan log Semasa memformat, format masa juga dipilih sebagai $time_iso8601.

  • Mengapakah waktu konsisten dengan waktu tempatan kita?
    Format masa memang sedap mata memandang, tetapi saya dapati masa masih dalam zon waktu UTC berurusan dengannya:
    Saya menggunakan docker-compose 🎜>, anda boleh mengkonfigurasi pembolehubah persekitaran secara langsung.

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

Kaedah kedua ialah menyusun dalam Dockerfile sekali dan untuk semua.

FROM nginx:1.20.1-alpine
#定义时区参数
ENV TZ=Asia/Shanghai

Terdapat beberapa versi nginx yang lebih rendah yang masih tidak berfungsi selepas melakukan dua langkah di atas Ini mungkin kerana tzdata paket data zon waktu tiada.

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

Selepas langkah di atas, format dan masa dalam log nginx sepatutnya seperti yang saya mahukan.

Saya ingin berkongsi dengan anda alat analisis log nginx

《goaccess》
goaccess nginx.log -a > nginx.html
Alat ini boleh menjadi mudah dan pantas Menganalisis log nginx boleh memaparkan banyak maklumat secara visual untuk membantu kami mencari masalah dengan cepat seperti bilangan panggilan antara muka (khusus untuk antara muka tertentu), bilangan pelawat, dsb.

Terangkan secara terperinci cara mengoptimumkan log nginx mengikut hari

Kajian yang disyorkan: "Tutorial penggunaan Nginx"

Atas ialah kandungan terperinci Terangkan secara terperinci cara mengoptimumkan log nginx mengikut hari. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:learnku.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam