Nginx(3): 日志文件管理

电脑杂谈  发布时间:2020-06-14 01:13:08  来源:网络整理

nginx日志统计脚本_nginx的日志文件在哪_zabbix 分析nginx日志

您可以记录用户来自哪个链接

使用log_format命令设置日志格式后,需要使用access_log命令指定日志文件的存储路径. access_log指令的语法如下:

access_log path [format [buffer=size | off]]  

位置:

path表示日志文件的存储路径;

format表示使用log_format指令设置的日志格式的名称,

buffer = size表示设置内存缓冲区的大小,例如,您可以设置buffer = 32k.

(1)如果您不想记录日志,则可以使用以下命令关闭日志记录:

access_log off; 

(2)如果要使用默认的组合格式日志记录,可以使用以下示例:

access_log /data1/1ogs/filename.log; 

zabbix 分析nginx日志_nginx的日志文件在哪_nginx日志统计脚本

或

access_log /data1/1ogs/filename.log combined; 

(3)如果要使用自定义格式进行日志记录,可以使用以下示例,其中mylogformat是日志格式的名称:

log_format mylogformat '$remote_addr -  $remote_user  [$time_local] "$request" ‘ 
  ‘$status $body_þytes_sent  "$http_referer" ‘ 
‘ “$http_user_agent'' $http_x_forwarded_for'; 

access_log  /data1/logs/access.log mylogformat buffer=32k; 

(4)在Nginx 0.7.4之后的版本中,access_log指令中的日志文件路径可以包含变量,例如:

access_log /data1/1ogs/$server_name.log combined; 

假定server_name指令设置的虚拟主机名是test.domain.com,则access_log指令会将访问日志记录在/data1/logs/test.domain.com.log文件中. 如果日志文件路径包含变量nginx的日志文件在哪,则会有一些限制,如下所示:

(1)Nginx进程设置的用户和组必须具有在此路径中创建文件的权限. 假设Nginx用户指令设置的用户名和用户组均为WWW,/ data1 / logs /目录中的用户名和用户组均为root,则日志文件为/data1/logs/test.domain.com. Nginx不会创建日志:

(2)缓存将不被使用;

(3)对于每个日志记录,日志文件将首先打开文件,然后写入日志记录,然后立即将其关闭. 为了提高包含变量的日志文件的存储路径的性能,您需要使用open_log_file_cache指令来设置经常使用的日志文件描述符缓存.

open_log_file_cache指令主要用于设置包含变量日志路径的文件描述符高速缓存. 其语法如下:

nginx的日志文件在哪_zabbix 分析nginx日志_nginx日志统计脚本

open_log_file_cache  max=N [inactive=time]  [mim_uses=N]  [valid=time]  | off 

默认情况下,该指令是禁止的,等同于:

open_log_file_cache off; 

open_log_file_cache命令的参数描述如下:

max: 设置高速缓存中文件描述符的最大数量. 如果超过了设置的最大文件描述符数量,则使用LRU(最近最少使用)算法清除“不经常使用的文件描述符”. LRU(最近最少使用)算法的基本概念是: 当内存缓冲区中的剩余可用空间不足时,缓冲区首先会尽可能多地保留用户最常使用的数据nginx的日志文件在哪,并移动最近未使用的数据内存不足以腾出空间来加载其他数据.

inactive: 设置一个时间,如果在设置的时间内未使用此文件描述符,该描述符将被自动删除. 此参数是可选的,默认时间是10秒.

min_uses: 在参数inactive指定的时间范围内,如果日志文件超过了使用次数,则日志文件的描述符记录在高速缓存中. 默认值为1.

有效: 设置检查一次的频率,并查看变量指定的日志文件路径和文件名是否仍然存在. 默认时间是60秒.

关闭: 禁用缓存.

open_log_file_cache指令的设置示例如下:

open_log_file_cache  max=1000  inactive=20s  min_uses=2  valid=1m; 

nginx的日志文件在哪_nginx日志统计脚本_zabbix 分析nginx日志

tail -f /usr/local/nginx/logs/access.log

打开nginx.conf配置文件并删除#Comment,如下图所示:

自定义特定服务器配置的日志,请使用“主”日志格式.

默认情况下,由日志生成到Nginx根目录的log / access.log文件使用“主”日志格式,或者可以对其进行自定义.

执行命令

./sbin/nginx -s reload

执行命令:

tail -100f /usr/local/nginx/logs/abc.access.log

zabbix 分析nginx日志_nginx的日志文件在哪_nginx日志统计脚本

在生产环境中的服务器上,由于访问日志文件的增长速度非常快,日志太大会严重影响服务器的效率. 同时,为了方便日志的分析和计算,有必要定期剪切日志文件. 定期切割的方法包括每月切割,每天切割和每小时切割. 最常用的是按天切割.

所谓的Nginx日志文件自动拆分是指旋转Nginx日志文件,这意味着Nginx每天(或每周(可以自定义))生成一个日志文件,而不是将所有Nginx运行日志放置在文件中这样,每个日志文件都相对较小,并且更容易定位问题.

例如,Nginx生成的访问日志文件默认情况下始终为一个,并且不会自动剪切. 如果访问量很大,则日志文件容量会很大,这不容易管理. 当然,我们也不想看到如此庞大的访问日志文件,因此我们需要手动剪切该文件.

由于Nginx的日志记录在文件中,因此我们需要将前一天的日志另存为另一个文件,每天为零. 在这里,我们将Nginx的access.log存储为access_ [yyyy-MM-dd] .log文件. 实际上,logs目录中也有一个error.log错误日志文件. 该文件也需要每天剪切. 让我们在这里说access.log. 清除error.log的方法与此类似.

要在Linux平台上进行切割,需要使用date命令获取昨天的日期,使用kill命令向Nginx进程发送信号以重新打开日志文件,并使用crontab设置执行任务周期

有关crontab Linux计划任务的详细信息,请参阅本文: Linux定时任务的Crontab命令的详细说明

首先创建如下的shell脚本:

#!/bin/bash
LOGS_PATH=/usr/local/nginx/logs
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
mv ${LOGS_PATH}/sdk_acc.log ${LOGS_PATH}/sdk_acc_${YESTERDAY}.log
mv ${LOGS_PATH}/sell_acc.log ${LOGS_PATH}/sell_acc_${YESTERDAY}.log
kill -USR1 $(cat /usr/local/nginx/nginx.pid)       ## 向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件

以上脚本中的最后一行必须向Nginx进程发送USR1信号,以重新打开日志文件. 如果未写入,则Nginx将继续将日志信息写入access_ [yyyy-MM-dd] .log中的文件. 这显然是错误的.

脚本完成后,将其保存在名为cut-log.sh的Nginx安装目录的sbin中,然后使用crontab -e添加计划任务并将此脚本添加到其中:


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-244458-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...