日志切割

Posted 曹军

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日志切割相关的知识,希望对你有一定的参考价值。

一:日志切割步骤

命令都在root下进行

1.创建目录

  mkdir -p /etc/opt/modules/bin ## 创建文件夹

 

2.上传cut

  

 

3.观察目录

  

 

4.修改的cut文件

  

 

 5.检测

  需要保证nginx已经开启

  

 

6.效果

  

 

7.定时

  

 

 二:切割程序

1.脚本

 1 #!/bin/bash
 2 
 3 # nginx日志存储的linux路径
 4 LOGS_PATH="/usr/local/nginx/userlogs/"
 5 
 6 # 旧日志存储的linux路径
 7 OLD_LOGS_PATH=${LOGS_PATH}logs/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/$(date -d "yesterday" +"%d")/
 8 
 9 # 创建就日志存储的linux目录, -p如果文件夹存在,不报错
10 mkdir -p ${OLD_LOGS_PATH}
11 
12 # 移动日志文件,nginx的log模块,记录的是文件的句柄,移动文件文件的句柄不会发生变化
13 mv ${LOGS_PATH}access.log ${OLD_LOGS_PATH}access_$(date -d "yesterday" +"%Y%m%d_%H%M%S").log
14 
15 # 关闭nginx服务器,并重启
16 kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

 

 三:nginx日志脚本的上传

1.上传脚本

  

 

2.修改脚本

  

 

3.运行

  

 

 4.效果

  

 

四:上传到HDFS的脚本

 1 #!/bin/bash
 2 
 3 #step1:get yesterday format string
 4 # 昨日的日期
 5 yesterday=$(date --date=\'1 days ago\' +\'%Y/%m/%d\')
 6 
 7 #step2:upload logs to hdfs
 8 # 老日志的存储地方linux的路径
 9 LOGS_PATH=/usr/local/nginx/userlogs/logs/
10 # hdfs日志存储路径
11 HDFS_LOGS_PATH=/eventlogs/${yesterday}
12 
13 # 当执行命令的用户不是hdfs的有权限的操作时候的时候,需要下面这个命令
14 export HADOOP_USER_NAME=beifeng
15 # 创建hdfs路径
16 
17 HADOOP_HOME=/etc/opt/modules/hadoop-2.5.0
18 ${HADOOP_HOME}/bin/hdfs dfs -mkdir -p ${HDFS_LOGS_PATH}
19 # hdfs命令移动
20 ${HADOOP_HOME}/bin/hdfs dfs -put -f -p ${LOGS_PATH}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/$(date -d "yesterday" +"%d")/access_*.log ${HDFS_LOGS_PATH}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

以上是关于日志切割的主要内容,如果未能解决你的问题,请参考以下文章

片段被视图分页器布局切割

Apache日志切割shell脚本

每日一shellnginx日志切割

pm2日志切割

访问日志不记录静态文件访问日志切割静态元素(文件)过期时间

Nginx日志切割