一:日志切割步骤
命令都在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}