在互联网时代,服务器日志已成为企业了解其网站或应用程序性能、安全性和用户行为的重要途径。
然而,随着时间的推移,日志文件可能会变得非常大,导致管理困难和维护不便。
因此,服务器日志切割变得非常重要。
本文不念将详细说明服务器日志切割的重要性。
![Linux系统日志切割shell脚本 图片[1]-Linux系统日志切割shell脚本-不念博客](https://www.bunian.cn/wp-content/uploads/2023/11/8fbe6b77-98ac-4bae-a082-e7e24853cfb8.png)
减少日志文件大小
随着服务器运行时间的增长,日志文件可能会变得非常大,占用过多的磁盘空间。
这可能会导致服务器性能下降,甚至可能导致服务器崩溃。
通过定期切割日志文件,可以有效地减少日志文件的大小,释放磁盘空间,提高服务器的性能和稳定性。
提高日志管理效率
对于企业来说,管理大量的日志文件可能会变得非常困难。
随着日志文件的增长,搜索和查询日志的时间也会增加,这会降低故障排除和安全分析的效率。
通过切割日志文件,可以减少需要管理的文件数量,提高管理效率和维护便利性。
方便日志归档和备份
切割日志文件可以方便地进行日志归档和备份。
将日志文件切割成较小的片段可以更容易地将其存储到不同的文件夹或磁盘中,以便进行归档和备份。
这有助于确保日志数据的完整性和可用性,以便在需要时进行恢复或调查。
发现和预防安全漏洞
服务器日志可以记录用户的活动和行为,因此对于发现和预防安全漏洞非常重要。
通过切割日志文件,可以更轻松地监控用户的活动并发现任何异常行为或攻击。
这有助于及时采取措施来保护服务器的安全,并防止潜在的损失。
示例脚本
日志切割配置如下
[root@bunian ~# vim /etc/logrotate.d/nginx/data/nginx_logs/*.access_log{nocompressdailycopytruncatecreateifemptyolddir /data/nginx_logs/daysrotate 0}[root@bunian ~# vim /etc/logrotate.d/nginx /data/nginx_logs/*.access_log { nocompress daily copytruncate create ifempty olddir /data/nginx_logs/days rotate 0 }[root@bunian ~# vim /etc/logrotate.d/nginx /data/nginx_logs/*.access_log { nocompress daily copytruncate create ifempty olddir /data/nginx_logs/days rotate 0 }
脚本如下
[root@bunian ~# vim /usr/local/sbin/logrotate-nginx.sh#!/bin/bash#创建转储日志压缩存放目录mkdir -p /data/nginx_logs/days#手工对nginx日志进行切割转换/usr/sbin/logrotate -vf /etc/logrotate.d/nginx#当前时间time=$(date -d "yesterday" +"%Y-%m-%d")#进入转储日志存放目录cd /data/nginx_logs/days#对目录中的转储日志文件的文件名进行统一转换for i in $(ls ./ | grep "^\(.*\)\.[[:digit:]]$")domv ${i} ./$(echo ${i}|sed -n 's/^\(.*\)\.\([[:digit:]]\)$/\1/p')-$(echo $time)done#对转储的日志文件进行压缩存放,并删除原有转储的日志文件,只保存压缩后的日志文件。以节约存储空间for i in $(ls ./ | grep "^\(.*\)\-\([[:digit:]-]\+\)$")dotar jcvf ${i}.bz2 ./${i}rm -rf ./${i}done#只保留最近7天的压缩转储日志文件find /data/nginx_logs/days/* -name "*.bz2" -mtime 7 -type f -exec rm -rf {} \;[root@bunian ~# vim /usr/local/sbin/logrotate-nginx.sh #!/bin/bash #创建转储日志压缩存放目录 mkdir -p /data/nginx_logs/days #手工对nginx日志进行切割转换 /usr/sbin/logrotate -vf /etc/logrotate.d/nginx #当前时间 time=$(date -d "yesterday" +"%Y-%m-%d") #进入转储日志存放目录 cd /data/nginx_logs/days #对目录中的转储日志文件的文件名进行统一转换 for i in $(ls ./ | grep "^\(.*\)\.[[:digit:]]$") do mv ${i} ./$(echo ${i}|sed -n 's/^\(.*\)\.\([[:digit:]]\)$/\1/p')-$(echo $time) done #对转储的日志文件进行压缩存放,并删除原有转储的日志文件,只保存压缩后的日志文件。以节约存储空间 for i in $(ls ./ | grep "^\(.*\)\-\([[:digit:]-]\+\)$") do tar jcvf ${i}.bz2 ./${i} rm -rf ./${i} done #只保留最近7天的压缩转储日志文件 find /data/nginx_logs/days/* -name "*.bz2" -mtime 7 -type f -exec rm -rf {} \;[root@bunian ~# vim /usr/local/sbin/logrotate-nginx.sh #!/bin/bash #创建转储日志压缩存放目录 mkdir -p /data/nginx_logs/days #手工对nginx日志进行切割转换 /usr/sbin/logrotate -vf /etc/logrotate.d/nginx #当前时间 time=$(date -d "yesterday" +"%Y-%m-%d") #进入转储日志存放目录 cd /data/nginx_logs/days #对目录中的转储日志文件的文件名进行统一转换 for i in $(ls ./ | grep "^\(.*\)\.[[:digit:]]$") do mv ${i} ./$(echo ${i}|sed -n 's/^\(.*\)\.\([[:digit:]]\)$/\1/p')-$(echo $time) done #对转储的日志文件进行压缩存放,并删除原有转储的日志文件,只保存压缩后的日志文件。以节约存储空间 for i in $(ls ./ | grep "^\(.*\)\-\([[:digit:]-]\+\)$") do tar jcvf ${i}.bz2 ./${i} rm -rf ./${i} done #只保留最近7天的压缩转储日志文件 find /data/nginx_logs/days/* -name "*.bz2" -mtime 7 -type f -exec rm -rf {} \;
配置计划任务,让脚本按时执行
[root@bunian ~# crontab -e#logrotate0 0 * * * /bin/bash -x /usr/local/sbin/logrotate-nginx.sh > /dev/null 2>&1[root@bunian ~# crontab -e #logrotate 0 0 * * * /bin/bash -x /usr/local/sbin/logrotate-nginx.sh > /dev/null 2>&1[root@bunian ~# crontab -e #logrotate 0 0 * * * /bin/bash -x /usr/local/sbin/logrotate-nginx.sh > /dev/null 2>&1
© 版权声明
本站文章由不念博客原创,未经允许严禁转载!
THE END