文章目录
- 一、日志切割
- 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
(2)查看当前时刻nginx服务器日志的大小,里面的内容太少了
因为我的nginx服务器是实验才搭建起来的,只测试过几次,因此内容少
实际企业当中日志的信息量是非常大的
du -sh access.log
在真机(客户端)上:
(3)多次请求页面,再查看日志大小
ab -c 1 -n 100000 http://172.25.1.1/index.html ##1个并发,100000次请求
在server1(服务端)上:
(4)在服务端再次查看日志的大小
du -sh access.log
(5)接下来手动进行日志切割
mv access.log `date +%F -d -1day`_access.log #按日期备份
/usr/local/nginx/sbin/nginx -s reload #重新生成一个新的日志
在真机(客户端)上:
(6)再次发起请求页面
ab -c 1 -n 100 http://172.25.1.1/index.html ##1个并发,100次请求
在server1(服务端)上:
(7)在服务端查看日志的大小
du -sh access.log #查看日志大小
cat access.log | wc -l #查看成功请求的日志行数
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)
(2)给权限
chmod +x backup.sh
(3)创建日志存放目录
mkdir oldlogs
(4)执行脚本,查看日志是否自动切割备份
cd /usr/local/nginx/logs
./backup.sh
cd oldlogs/
ls
(5)编写定时任务,使实际企业当中的服务器每天晚上的24:00准时去进行日志切割
crontab -e
0 0 * * * /bin/bash /usr/local/nginx/logs/backup.sh