文章目录

  • 一、日志切割
  • 1、什么是日志切割?
  • 2、为什么要进行日志切割?
  • 二、手动方式和脚本方式实现nginx日志切割
  • 实验环境
  • 实验
  • 1、手动方式实现日志切割
  • 2、脚本方式实现日志切割


一、日志切割

1、什么是日志切割?

日志切割就是把系统的日志以天为单位进行存放,即每一天的日志都分开放
企业当中每天都要备份昨天的日志,然后生成一个新的日志记录今天的
如果不做日志切割,当日志文件很大的时候,vim打开的时候可能卡死等等
日志分开后排错的时候也简单,是哪天的问题查哪天的日志

2、为什么要进行日志切割?

在生产环境中每一天的日志文件都是要打包备份的
如果每天都手动的去截取日志,重命名这样就很不方便,所以我们编写一个脚本并建立一个定时任务来进行这些工作
日志切割是自动执行的,写在crotab定时任务里面,写一个脚本实现

二、手动方式和脚本方式实现nginx日志切割

实验环境

主机名

ip

功能

server1

172.25.1.1

nginx服务器

真机

172.25.1.250

客户端,用来测试

实验
1、手动方式实现日志切割

在server1(服务端)上:
(1)查看nginx服务器的日志都有哪些类型

日志名称

日志类型

access.log

存放成功访问nginx服务器的日志信息

error.log

存放访问nginx服务器失败的日志信息

nginx.pid

严格来说这个不算日志,里面存放的是nginx进程的pid

cd /usr/local/nginx/logs/
ls

windows nginx log分割 nginx的日志切割_nginx服务器


(2)查看当前时刻nginx服务器日志的大小,里面的内容太少了

因为我的nginx服务器是实验才搭建起来的,只测试过几次,因此内容少

实际企业当中日志的信息量是非常大的

du -sh access.log

windows nginx log分割 nginx的日志切割_服务端_02


在真机(客户端)上

(3)多次请求页面,再查看日志大小

ab -c 1 -n 100000 http://172.25.1.1/index.html	##1个并发,100000次请求

windows nginx log分割 nginx的日志切割_服务端_03

windows nginx log分割 nginx的日志切割_服务端_04


在server1(服务端)上:

(4)在服务端再次查看日志的大小

du -sh access.log

windows nginx log分割 nginx的日志切割_windows nginx log分割_05


(5)接下来手动进行日志切割

mv access.log `date +%F -d -1day`_access.log      #按日期备份
/usr/local/nginx/sbin/nginx -s reload          #重新生成一个新的日志

windows nginx log分割 nginx的日志切割_nginx服务器_06


在真机(客户端)上

(6)再次发起请求页面

ab -c 1 -n 100 http://172.25.1.1/index.html	##1个并发,100次请求

windows nginx log分割 nginx的日志切割_服务端_07


在server1(服务端)上:

(7)在服务端查看日志的大小

du -sh access.log  #查看日志大小
cat access.log | wc -l  #查看成功请求的日志行数

windows nginx log分割 nginx的日志切割_nginx服务器_08

2、脚本方式实现日志切割

kill -USR1 $(当前运行的master进程号)

重新打开日志文件,主要用在日志切割

在server1(服务端)上:

(1)在nginx服务的日志目录下面编写脚本

vim backup.sh
 
#!/bin/bash
LOG_PATH=/usr/local/nginx/logs/oldlogs
CUR_LOG_PATH=/usr/local/nginx/logs
YESTERDAY=$(date +%F -d -1day)

mv $CUR_LOG_PATH/access.log $LOG_PATH/${YESTERDAY}_access.log
mv $CUR_LOG_PATH/error.log $LOG_PATH/${YESTERDAY}_error.log
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)

windows nginx log分割 nginx的日志切割_服务端_09


(2)给权限

chmod +x backup.sh

windows nginx log分割 nginx的日志切割_nginx_10


(3)创建日志存放目录

mkdir oldlogs

windows nginx log分割 nginx的日志切割_服务端_11


(4)执行脚本,查看日志是否自动切割备份

cd /usr/local/nginx/logs
./backup.sh 
cd oldlogs/
ls

windows nginx log分割 nginx的日志切割_windows nginx log分割_12

windows nginx log分割 nginx的日志切割_nginx服务器_13


(5)编写定时任务,使实际企业当中的服务器每天晚上的24:00准时去进行日志切割

crontab -e

0 0 * * * /bin/bash  /usr/local/nginx/logs/backup.sh

windows nginx log分割 nginx的日志切割_nginx服务器_14

windows nginx log分割 nginx的日志切割_nginx服务器_15

windows nginx log分割 nginx的日志切割_nginx服务器_16