nginx的日志文件没有rotate功能。如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件。
第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。
第二步向nginx主进程发送USR1信号。
nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。
重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。
工作进程立刻打开新的日志文件并关闭重名名的日志文件。
然后你就可以处理旧的日志文件了。
nginx日志按日期自动切割脚本如下
#nginx日志切割脚本
#!/bin/bash
#设置日志文件存放目录
logs_path="/usr/local/nginx/logs/"
#设置pid文件
pid_path="/usr/local/nginx/nginx.pid"
#重命名日志文件
mv ${logs_path}access.log ${logs_path}access_$(date-d"yesterday"+"%Y%m%d").log
#向nginx主进程发信号重新打开日志
kill -USR1 `cat ${pid_path}`
#以上是对日志的处理,可是重新命名后原来的那个access.log已经不存在了,使用tail -f 时候flumeng无法再继续收集新产生的日志了,这个时候我们把flume收集日志的命令改为tail -F 收集日志即可。
详细见 http://liyonghui160com.iteye.com/blog/2098777
保存以上脚本nginx_log.sh,设置定时执行。
设置上面的shell脚本文件加入到定时任务中去。crontab是linux下面一个定时任务进程。开机此进程会启动,它每隔一定时间会去自己的列表中看是否有需要执行的任务。
crontab -e
0 0 * * * /data/wwwlogs/nginx_log_division.sh
会打开一个文件,加入上面的代码
格式为 "分 时 日 月 星期几 要执行的shell文件路径"。用*可以理解成“每”,每分钟,每个小时,每个月等等。
我设置是在凌晨0点0分运行nginx_log_division.sh脚本放到flume中bin文件夹下,脚本的内容就是重新生成一个新的日志文件。
nginx_log_division.sh代码:
#!/bin/bash #设置日志文件存放目录 logs_path="/usr/local/nginx/nginxlog/" #设置pid文件 pid_path="/usr/local/nginx/nginx-1.7.3/logs/nginx.pid" #日志文件 filepath=${logs_path}"access.log" # Source function library. #重命名日志文件 mv ${logs_path}access.log ${logs_path}access_$(date -d '-1 day' '+%Y-%m-%d').log #向nginx主进程发信号重新打开日志 kill -USR1 `cat ${pid_path}`
flumeng配置:
# A single-node Flume configuration # Name the components on this agent agent1.sources = source1 agent1.sinks = sink1 agent1.channels = channel1 # Describe/configure source1 agent1.sources.source1.type = exec agent1.sources.source1.command = tail -n +0 -F /logs/access.log agent1.sources.source1.channels = channel1 # Describe sink1 agent1.sinks.sink1.type = file_roll agent1.sinks.sink1.sink.directory=/var/log/data # Use a channel which buffers events in memory agent1.channels.channel1.type = file agent1.channels.channel1.checkpointDir=/var/checkpoint agent1.channels.channel1.dataDirs=/var/tmp agent1.channels.channel1.capacity = 1000 agent1.channels.channel1.transactionCapactiy = 100 # Bind the source and sink to the channel agent1.sources.source1.channels = channel1 agent1.sinks.sink1.channel = channel1
相关推荐
Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route (a)客户端首次发起访问请求,nginx接收后,发现...
**Nginx Sticky Module Ng 1.2.6 源码分析与应用** Nginx 是一款高性能、轻量级的 HTTP 和反向代理服务器,广泛用于网站部署和负载均衡。在某些应用场景中,例如在线购物车、游戏服务器或者需要保持用户会话一致性...
windows 下nginx 日志切割 结合windows任务计划,实现每天备份日志,并reopen nginx
目前的项目网站架构中使用了F5和nginx,F5用来做负载均衡,nginx只用作反向代理服务器。最近应客户的要求准备去掉F5,使用软负载。大家都知道nginx抗并发能力强,又可以做负载均衡,而且使用nginx对我们目前的网站...
nginx sticky是nginx的module,可以实现基于cookie的负载均衡。 下载后,在编译安装nginx时,用--add-module选项,指到sticky所在目录。类似命令如下: ./configure --prefix=/usr/local/nginx-1.6.0 --add-module=...
在windows 7 64位 环境下使用nginx的nginx-http-flv-module搭建flv视频流播放所有的安装包,参考:https://blog.csdn.net/qq_33071429/article/details/102628008
1、最新版 nginx-http-flv-module(windows可执行程序,含nginx 1.19.3,http-flv-module:1.2.7) 2、内含说明文档,请下载查看。 3、请勿放置于中文路径下,否则无法启动
nginx-goodies-nginx-sticky-module-ng-08a395c66e42.tar.gz
在给定的压缩包文件中,"使用必看.txt"可能包含了编译和使用过程中的注意事项,而"nginx-rtmp.zip"可能是包含了RTMP模块的源代码,这在搭建流媒体服务器时也会用到,因为HTTP FLV Module通常与RTMP模块结合使用,为...
7. 测试和启动:编译完成后,你可以通过`./objs/nginx -t`测试配置文件的正确性,然后使用`./objs/nginx`或服务管理工具启动Nginx。 文件列表中的其他目录如`conf`包含Nginx的配置文件,`logs`用于存储日志,`src`...
在 `logs` 目录下,Nginx 的日志文件记录了服务器的运行状态和错误信息,这对于诊断问题和优化性能至关重要。`nginx` 和 `nginx.pid` 可能是用于启动和停止 Nginx 服务的脚本和进程 ID 文件。 7. **源代码** `src...
描述中的"开箱即用"意味着用户下载后可以直接使用,无需自行编译或配置。 Nginx是一款高性能的Web服务器和反向代理服务器,广泛应用于高并发场景,因其轻量级、高效稳定而受到青睐。1.19.3是Nginx的一个具体版本,...
Nginx日志切割脚本
1. **在线直播**:企业和个人可以使用Nginx搭建自己的直播平台,提供稳定流畅的直播服务。 2. **视频点播**:结合HTTP FLV模块,Nginx可以作为视频点播服务的后端,提供FLV格式的视频流。 3. **混合流媒体**:通过...
已编译好的nginx-http-flv-molule(windows...在网上查找半天都只有教程,没有可免费下载的版本,深知没有积分遍地找资源的痛苦,无奈之下只好自己按照教程一步一个坑编译出来的,供大家免费下载使用。(无毒放心使用)
1、典型的离线流数据分析系统 2、技术分析 - Hadoop - nginx - flume - hive - mysql - springboot + mybatisplus+vcharts nginx + lua 日志文件埋点的 基于Hadoop网站流量日志数据分析系统 1、典型的离线流数据...
在这个场景中,我们利用Flume来从Nginx服务器收集日志,并将这些日志数据导入到新版的Hive数据仓库中。下面将详细阐述这个过程涉及的技术要点。 首先,Nginx是一款高性能的HTTP和反向代理服务器,它的日志记录了...
nginx日志自动定时切割及清除脚本
同时,可以通过日志文件(通常位于 `/var/log/nginx/access.log` 或 `/usr/local/nginx/logs/access.log`)监控上传过程,检查是否有错误信息。 请注意,这个基本配置仅用于演示,实际应用中可能需要考虑更多的安全...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装