`
hududumo
  • 浏览: 244418 次
文章分类
社区版块
存档分类
最新评论

Nginx实现大日志文件切割

 
阅读更多

方式一:

nginx cronolog日志分割配置文档,根据下面方法,每分钟分割一次NGINX访问日志。

1.nginx日志配置

access_log access_log /data/access_log_pipe main;

2.先创建一个命名管道

mkfifo /www/log/access_log_pipe

3.配置cronolog:

nohup cat /data/access_log_pipe | /usr/local/sbin/cronolog /data/log/domain.access_%Y%m%d%H%M.log &

4.启动Nginx

/usr/local/nginx/sbin/nginx

注意:

cronolog必须在nginx启动前启动

没有安装cronolog的话,需要先安装

wget http://cronolog.org/download/cronolog-1.6.2.tar.gz

tar zxvf cronolog-1.6.2.tar.gz

cd cronolog-1.6.2

./configure
make
make install

方式二:

定时任务中每小时添加定时任务,执行一下脚本,可以实现小时日志分割

log_dir="/var/log/nginx"

date_dir=`date +%Y/%m/%d/%H`

/bin/mkdir -p ${log_dir}/${date_dir} > /dev/null 2>&1

/bin/mv ${log_dir}/access.log ${log_dir}/${date_dir}/access.log

kill -USR1 `cat /opt/nginx/logs/nginx.pid`

方式三:

使用logrotate做nginx日志轮询

logrotate看名字就知道是专门做日志轮询的,只把任务配置放在/etc/logrotate.d/下,任务就会自动完成,而且无需安装,系统自带,比较推荐使用.

vi/etc/logrotate.d/nginx

  1. /usr/local/nginx/logs/www.willko.cn.log /usr/local/nginx/logs/nginx_error.log {
  2. notifempty
  3. daily
  4. sharedscripts
  5. postrotate
  6. /bin/kill -USR1 `/bin/cat /usr/local/nginx/nginx.pid`
  7. endscript
  8. }

多个日志以空格分开,
notifempty 如果日志为空则不做轮询
daily 每天执行一次
postrotate 日志轮询后执行的脚本
这样,每天都会自动轮询,生成nginx.log.1-n

后话:

用Jmeter对方法一进行了测试,新建线程组:线程数200,循环150,新建http请求,请求nginx上的图片,请求30000次,失败326次,后台形成5个文件,行数如下:

2868 access_201112182030.log
7777 access_201112182031.log
7626 access_201112182032.log
7873 access_201112182033.log
3530 access_201112182034.log
29674 total

并没有因为切分文件而丢失日志。

分享到:
评论

相关推荐

    windows 下 nginx 日志切割

    windows 下nginx 日志切割 结合windows任务计划,实现每天备份日志,并reopen nginx

    windows nginx 按天切割日志

    windows nginx 按天切割日志

    nginx日志文件切割

    **Nginx日志文件切割**是Web服务器管理中的一个重要环节,主要目的是为了定期归档、管理和优化存储空间。在高访问量的网站环境中,Nginx的日志文件可能会迅速增长,如果不进行适当的切割,可能会导致硬盘空间耗尽,...

    nginx日志按时间切割.zip

    "nginx日志按时间切割"是常见的日志管理策略,旨在通过定时分割日志文件,避免单个日志文件过大导致的读取性能下降和存储压力。本压缩包提供了一个用于Windows环境的批处理脚本,即`rename-nginx-logs-forwindow.bat...

    nginx安装和nginx日志切割

    日志切割是为了便于日志管理和存储,避免单个日志文件过大。以下是一个简单的日志切割方案: 1. **创建日志切割脚本**: 创建一个名为`logrotate.conf`的文件,例如在`/etc/logrotate.d/nginx`目录下,内容如下: ...

    nginx 日志文件切割

    NULL 博文链接:https://baobeituping.iteye.com/blog/2165977

    windows-nginx-log 日志分割

    加到计划任务里,每天自动分割 nginx日志,低分白送,windows版本批处理文件哦

    Windows系统nginx日志分割批处理脚本

    : 为限制 Nginx日志文件大小增加,文件过大,导致无法收缩日志,在配置好的nginx的安装目录下,可以采用批处理文件对日志,根据实际需要的时间进行自动切割,本脚本以天为单位进行保存。对于日志备份功能,因存储...

    shell脚本实现nginx日志分割

    本解本实现了使用shell脚本实现nginx日志分割,大家如果没资源分下载,可以转至:https://mp.csdn.net/mdeditor/85233117# 去查看源代码。谢谢大家

    logrotate 日志切割 nginx

    它可以与 Nginx、Apache 等 Web 服务器集成,实现日志文件的自动切割和压缩。 6. Logrotate 的相关命令 Logrotate 有多个相关命令,例如 logrotate -f /etc/logrotate.d/nginx 可以手动执行 Logrotate,logrotate ...

    Nginx自动日志切割

    Nginx自动日志切割是解决日志文件过大,占用磁盘空间,以及方便历史数据检索的有效手段。 首先,Nginx日志的生成和配置。日志格式可以自定义,例如使用`log_format`指令设置日志模板。如文中的`main`格式,它包含了...

    详解Nginx日志配置及日志切割

    关于日志的切割,随着Web服务的持续运行,日志文件会变得越来越大,为避免单个日志文件过大导致的问题,如磁盘空间的浪费和日志分析的不便,我们需要对日志文件进行定期的切割。日志切割一般是指将当前正在写的日志...

    Nginx配置负载均衡、动静分离、请求日志打印、日志切割、压缩、删除.md

    随着网站流量的增长,日志文件也会越来越大,这时需要定期对日志进行切割。 **4.1.1 使用 Logrotate** Logrotate 是 Linux 系统中常用的日志轮换工具,配置文件通常位于 `/etc/logrotate.d/` 目录下。 示例配置...

    nginx日志切割.rar

    然而,随着网站流量的增长,日志文件可能会变得非常大,不仅占用大量磁盘空间,还会影响读取和分析效率。因此,定期进行日志切割是必要的。本文将详细讲解Nginx的日志切割机制及其配置方法。 一、Nginx日志格式 ...

    Nginx日志切割清理脚本

    利用crontab定时机制触发shell脚本,自动切割nginx的日志文件,并实现自动清理,可直接在服务器上上传使用

    Linux系统下nginx日志每天定时切割的脚本写法

    在Linux系统中,管理和维护大型Web服务器的Nginx日志是非常重要的工作,因为日志文件可能会变得非常大,占用大量磁盘空间。为了解决这个问题,Linux提供了一个名为logrotate的工具,它可以定期自动地切割和归档日志...

    nginx日志切割shell脚本

    【知识点详解】 1. **日志管理**:在IT运维中,日志管理是一项重要的...通过以上步骤,我们能够理解如何利用Shell脚本实现Nginx日志的自动切割、归档和清理,从而有效管理日志文件,提高系统的维护效率和资源利用率。

    Nginx日志按日期切割详解(按天切割)

    实现需求 本文实现的功能是在吗每天凌晨00:00把前一天的Nginx日志access.log重命名为access-xxxx-xx-xx.log格式,例如:access-2016-10-01.log,下面话不多说了,来看看详细的实现方法吧。...#Nginx日志文件所在目录

Global site tag (gtag.js) - Google Analytics