线上某些系统业务跑一段时间后,日志就会越来越多,考虑到业务机器磁盘有限,需要添加业务日志清理功能。根据日志所在分区磁盘使用情况来判断是否清理日志,比如当日志分区磁盘空间使用超过90%时,将一周前的日志打包转移到别处 (别的分区下或远程存储设备上)。脚本 (/opt/script/log_clear.sh) 如下:

#!/bin/bash#定义日志所在分区当前空间所占比例数(去掉%)。grep -w表示精准匹配,只匹配"/"这个分区
LOG_PARTITION=$(`which df` -h|awk '{print $5,$6}'|grep -w "/"|cut -d" " -f1|awk -F"%" '{print $1}')
#定义一周前的日期,用于日志分区空间超过设定的阈值后保留的份数(这里保留一周的日志)
KEEP_DATE=`date -d '-7 days' +%Y%m%d`
#定义日志路径
LOG_DIR=/opt/log/kevin
#定义日志备份路径(即当日志分区空间超过阈值后,将日志转移到该处。这里就转移到了本地home分区下,也可以转移到别的机器或远程存储设备上)
LOG_BACK_DIR=/home/log/kevin#确保日志备份路径存在,如果不存在,则创建该路径。
if [ ! -d ${LOG_BACK_DIR} ];then`which mkdir` -p ${LOG_BACK_DIR}
elseecho "${LOG_BACK_DIR} is exist" >/dev/null 2>&1
fi#当日志分区当前空间超过90%时执行的动作
if [ ${LOG_PARTITION} -ge 90 ];then#切换到日志路径下cd ${LOG_DIR}#截取日志文件中的日期,比如stepweb_20190915.log日志文件,则截取20190915for LOG_DATE in $(ls -l ${LOG_DIR}|awk '{print $9}'|cut -d"_" -f2|awk -F"." '{print $1}')do#当日志文件中截取的日期是一周之前的日志时执行的动作if [ ${LOG_DATE} -lt ${KEEP_DATE} ];then#打包,转移,删除#注意这里tar使用-P参数,因为tar默认为相对路径,使用绝对路径的话会报错"Removing leading `/’ from member names",使用-P参数就解决了该问题`which tar` -zvPcf ${LOG_DIR}/stepweb_${LOG_DATE}.log.tar.gz ${LOG_DIR}/stepweb_${LOG_DATE}.logmv ${LOG_DIR}/stepweb_${LOG_DATE}.log.tar.gz ${LOG_BACK_DIR}/rm -rf ${LOG_DIR}/stepweb_${LOG_DATE}.logelseecho "keep stepweb_${LOG_DATE}.log" >/dev/null 2>&1fidone
elseecho "${LOG_PARTITION} is available" >/dev/null 2>&1
fi

根据上面脚本验证下:

查看本机磁盘使用情况,日志所在分区磁盘当前使用率达到92%了
[root@yyweb kevin]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G  46G   4G     92% /
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    3.9G     0  3.9G   0% /dev/shm
tmpfs                    3.9G   34M  3.8G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1               1014M  183M  832M  19% /boot
/dev/mapper/centos-home  142G   33M  142G   1% /home日志所在路径
[root@yyweb kevin]# pwd
/opt/log/kevin日志情况
[root@yyweb kevin]# ls
stepweb_20190810.log  stepweb_20190817.log  stepweb_20190824.log  stepweb_20190901.log  stepweb_20190908.log  stepweb_20190915.log
stepweb_20190811.log  stepweb_20190818.log  stepweb_20190825.log  stepweb_20190902.log  stepweb_20190909.log  stepweb_20190916.log
stepweb_20190812.log  stepweb_20190819.log  stepweb_20190826.log  stepweb_20190903.log  stepweb_20190910.log  stepweb_20190917.log
stepweb_20190813.log  stepweb_20190820.log  stepweb_20190827.log  stepweb_20190904.log  stepweb_20190911.log  stepweb_20190918.log
stepweb_20190814.log  stepweb_20190821.log  stepweb_20190828.log  stepweb_20190905.log  stepweb_20190912.log  stepweb_20190919.log
stepweb_20190815.log  stepweb_20190822.log  stepweb_20190829.log  stepweb_20190906.log  stepweb_20190913.log
stepweb_20190816.log  stepweb_20190823.log  stepweb_20190830.log  stepweb_20190907.log  stepweb_20190914.log[root@yyweb kevin]# ls /home/
[root@yyweb kevin]# 执行日志清理脚本
[root@yyweb kevin]# sh /opt/script/log_clear.sh
/opt/log/kevin/stepweb_20190810.log
/opt/log/kevin/stepweb_20190811.log
/opt/log/kevin/stepweb_20190812.log
/opt/log/kevin/stepweb_20190813.log
/opt/log/kevin/stepweb_20190814.log
/opt/log/kevin/stepweb_20190815.log
/opt/log/kevin/stepweb_20190816.log
/opt/log/kevin/stepweb_20190817.log
/opt/log/kevin/stepweb_20190818.log
/opt/log/kevin/stepweb_20190819.log
/opt/log/kevin/stepweb_20190820.log
/opt/log/kevin/stepweb_20190821.log
/opt/log/kevin/stepweb_20190822.log
/opt/log/kevin/stepweb_20190823.log
/opt/log/kevin/stepweb_20190824.log
/opt/log/kevin/stepweb_20190825.log
/opt/log/kevin/stepweb_20190826.log
/opt/log/kevin/stepweb_20190827.log
/opt/log/kevin/stepweb_20190828.log
/opt/log/kevin/stepweb_20190829.log
/opt/log/kevin/stepweb_20190830.log
/opt/log/kevin/stepweb_20190901.log
/opt/log/kevin/stepweb_20190902.log
/opt/log/kevin/stepweb_20190903.log
/opt/log/kevin/stepweb_20190904.log
/opt/log/kevin/stepweb_20190905.log
/opt/log/kevin/stepweb_20190906.log
/opt/log/kevin/stepweb_20190907.log
/opt/log/kevin/stepweb_20190908.log
/opt/log/kevin/stepweb_20190909.log
/opt/log/kevin/stepweb_20190910.log
/opt/log/kevin/stepweb_20190911.log
/opt/log/kevin/stepweb_20190912.log日志清理后,日志路径下只保留了最近一周的日志
[root@yyweb kevin]# ls
stepweb_20190913.log  stepweb_20190915.log  stepweb_20190917.log  stepweb_20190919.log
stepweb_20190914.log  stepweb_20190916.log  stepweb_20190918.log一周之前的日志被打包转移到/home/log/kevin下了
[root@yyweb kevin]# ls /home/log/kevin/
stepweb_20190810.log.tar.gz  stepweb_20190817.log.tar.gz  stepweb_20190824.log.tar.gz  stepweb_20190901.log.tar.gz  stepweb_20190908.log.tar.gz
stepweb_20190811.log.tar.gz  stepweb_20190818.log.tar.gz  stepweb_20190825.log.tar.gz  stepweb_20190902.log.tar.gz  stepweb_20190909.log.tar.gz
stepweb_20190812.log.tar.gz  stepweb_20190819.log.tar.gz  stepweb_20190826.log.tar.gz  stepweb_20190903.log.tar.gz  stepweb_20190910.log.tar.gz
stepweb_20190813.log.tar.gz  stepweb_20190820.log.tar.gz  stepweb_20190827.log.tar.gz  stepweb_20190904.log.tar.gz  stepweb_20190911.log.tar.gz
stepweb_20190814.log.tar.gz  stepweb_20190821.log.tar.gz  stepweb_20190828.log.tar.gz  stepweb_20190905.log.tar.gz  stepweb_20190912.log.tar.gz
stepweb_20190815.log.tar.gz  stepweb_20190822.log.tar.gz  stepweb_20190829.log.tar.gz  stepweb_20190906.log.tar.gz
stepweb_20190816.log.tar.gz  stepweb_20190823.log.tar.gz  stepweb_20190830.log.tar.gz  stepweb_20190907.log.tar.gz

再贴一个简单的日志处理脚本

#!/usr/bin/sh
#根据系统/服务/日志保留天数三个参数压缩日志
#usage: sh clearlog.sh sysname appname keepdays
sysName=$1
appName=$2
keepDay=$3
logDir=/var/log/${sysName}/${appName}
logFile=${appName}.log
cd ${logDir}
find ./ -name "${logFile}.*[0-9][0-9]" -mtime +${keepDay} -exec gzip {} \;

转载于:https://www.cnblogs.com/kevingrace/p/11556219.html

运维记录 - 业务日志清理功能相关推荐

  1. [答疑]运维记录台账本子识别为一个现状业务实体,妥否

    软件方法(下)分析和设计第8章连载[20210816更新]分析 之 分析类图--知识篇 王周文(1034***424)19:24:54 请教潘老师:这个"现状业务序列图"中,我把这 ...

  2. 监控易:为医药行业解决IT运维与业务故障难题

    (图片来源网络) 当前,中国的医药行业正面临新一轮变革,国内的政策环境.产业结构和病患需求都在发生快速变化.突如其来的新冠疫情更是加速了医药产业的数字化进程,为医药产业管理.医药资源配置以及创新药物科 ...

  3. 开发、运维、业务都说好的全栈云原生长这样

    日前,在"云无边界,架构未来"--2022年F5多云应用服务科技峰会上,灵雀云首席解决方案专家杜东明受邀进行了 " 云原生全栈云建设思路分享" . 他指出, 云 ...

  4. linux下软件包清理,Linux运维知识:如何清理Linux系统中的孤立、无用的软件包

    本文主要向大家介绍了Linux运维知识的如何清理Linux系统中的孤立.无用的软件包,通过具体的内容向大家展现,希望对的大家学习Linux运维知识有所帮助. 在Linux下安装软件,通常会自动安装一些 ...

  5. 国产电脑日常运维记录

    国产电脑日常运维记录 飞腾麒麟操作系统 1.安装应用 应用所在目录空白处右键单击,在弹出的菜单栏选择"在终端中打开",执行以下命令: sudo dpkg -i *.deb 提示输入 ...

  6. 运维中的日志切割操作梳理(Logrotate/python/shell脚本实现)

    对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了Logrotate,争相发明自己的轮 ...

  7. 系统二级运维之业务单据错误处理

    由于现在又是月结的时间段了,因此二级运维接到的任务又多了起来,所以各种关于业务单据处理的问题就出现了,真是大千世界无奇不有啊. 仅仅在周5我就接到了以下几例情况: 1. 销售提单冲销时,对应的库存单据 ...

  8. Hadoop运维记录系列(二十二)

    今天下午写了一会代码,然后帮同事解决了一个hbase相关的故障分析,定位了问题根源,觉得比较有代表性,记录一下. 先说一下问题的发生与背景. 这个故障其实是分为两个故障的,第一个比较简单,第二个相对复 ...

  9. Hadoop运维记录系列(十二)

    从公司离职有几天了,今天回去看同事,想一起吃饭,没成想摊上大事了.说下午hadoop集群的机房停电了,然后集群就启动不了了,几个人从下午4点多折腾到8点多还没搞定,有几台服务器找不到硬盘,还有内网pi ...

最新文章

  1. CSS中连接属性的排序
  2. 怎么看电脑的hdmi是输出还是输入_HDMI线连接电视电脑常见问题及解决办法
  3. 编写你的第一个 Flutter App
  4. 朋友圈产品文档_企业微信上线朋友圈等新功能,超250万企业接入企业微信
  5. 使用packetbeat 采集mysql数据
  6. torch.view(), squeeze, unsqueeze
  7. 排列组合在计算机科学的应用,数学在计算机科学的应用.doc
  8. python入门基础知识实例-Python入门教程丨1300多行代码,让你轻松掌握基础知识点...
  9. GestureDetector封装手势检測上下滑动
  10. 无法打开html5,IE浏览器无法打开怎么办
  11. IT大咖总结的面试真经
  12. arduino连接ps2手柄控制智能小车实践记录
  13. mysql性能监控 调优_MySQL管理之道:性能调优、高可用与监控(第2版)
  14. 大数定律和中心极限定理(未完成)
  15. 攻防世界-MISC-互相伤害
  16. 实例:用C#.NET手把手教你做微信公众号开发(3)--普通消息处理之图片
  17. (附源码)Springboot大学生综合素质测评系统 毕业设计 162308
  18. #入坑keychron#火爆的keychron机械键盘,你还没有入手?【重点:附键盘选购建议】
  19. IntelliJ IDEA剪切复制快捷键 失效解决方案
  20. 20000字详解大厂实时数仓建设(好文收藏)

热门文章

  1. 算法优化:最大子段和,最大子矩阵和,一维,二维情况分析,动态规划
  2. JAVA国际化输出日期格式
  3. Python学习---Django的request扩展[获取用户设备信息]
  4. 【转载】SQL update select结合语句详解及应用
  5. 高可用与负载均衡(7)之聊聊Lvs-DR+Keepalived的解决方案
  6. python数据库操作pymysql
  7. FireBug命令行命令介绍
  8. Blend制作的下载动画
  9. verilog中b',d',h'的意思
  10. Linux 三剑客之SED行天下