博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
日志切割与转储
阅读量:5345 次
发布时间:2019-06-15

本文共 3489 字,大约阅读时间需要 11 分钟。

1、背景

  收到硬件处邮件,某台生产机器磁盘空间使用率过高。经过核查,ng的访问日志(access.log)、rocketmq客户端日志文件都比较大,都是些可有可无的日志,所以选了折中方案,删一部分,压缩存一部分。同时又不能完全删除,比如我们要ng日志做流量、平响分析。

2、切割、转储备份

2.1、常用linux命令及解释

1、|wc -l

 统计多少行(例:统计数据库连接数,netstat -apn|grep 3306|wc -l)  

2、-exec rm {} \; 

 把find命令查找到的结果删除

 -exec后便跟的命令行,必须用“ \;”结束

3、midir -p

 选项 -p 如果父目录不存在级联创建

4、find选项-maxdepth

 使用mindepth和maxdepth限定搜索指定目录的深度,搜索文件
 find / -maxdepth 3 -name passwd
 /usr/bin/passwd
 /etc/pam.d/passwd
 /etc/passwd

5、gzip

 不保留原文件压缩,压缩文件名称和原文件一样(方便于压缩但不想保留原文件
 解压命令gzip

6、> /dev/null 2>&1

 文件标识符,0 标准输入、1 标准输出、2 标准错误输出
 /dev/null:不输出信息

 crontab -e

 00 00 * * * /usr/local/nginx-1.9.7/sbin/logCut.sh > /dev/null 2>&1

 &等同于,1>可以省略成>

7、du -sh *

 查看文件、目录占用磁盘空间大小

8、[ $? -eq 0 ]

 如果命令执行成功(用作表示执行成功,例:输出执行成功提示echo"success do something!"

9、kill -USR1

  发送一个USR1信号将导致以下步骤的发生:

 停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改

 (对重启服务器表示怀疑,本地用200并发测试本命令,未见到4××、5××,若不放心也可降级处理,不同机器采用不同执行时间,错开执行!

示例1:

#!/bin/bash##切割nginx日志##日志所在目录nglogpath=/usr/local/nginx-1.9.7/logs##nginx日志备份路径,备份前先检查路径,不存在则创建backnglogpath=/usr/local/nginx-1.9.7/logs/backupif [ ! -d ${backnglogpath} ]; then  mkdir -p ${backnglogpath}fi##昨日日期YESTERDAY=$(date -d "1 day ago" +"%Y%m%d")##移动文件mv ${nglogpath}/access.log ${backnglogpath}/access_${YESTERDAY}.log##向nginx发送USR1信号,重新启动nginx日志kill -USR1 $(cat /usr/local/nginx-1.9.7/logs/nginx.pid)##压缩文件,删除源文件zip -r ${backnglogpath}/access_${YESTERDAY}.zip ${backnglogpath}/access_${YESTERDAY}.log rm -rf ${backnglogpath}/access_${YESTERDAY}.log##删除15天前生成的文件(文件名匹配)#rm -rf ${backnglogpath}/access_$(date -d"15 day ago" +"%Y%m%d").zip##删除15天之前生成的所有文件(文件生成日期+名称模糊搜索)find ${backnglogpath} -mtime +15 -type f -name 'access_*.zip' -exec rm -rf {} \;##切割rocketmq日志##日志所在目录mqlogpath=/data/taapp/applications/rocketmq_logs##mq日志备份路径backmqlogpath=/data/taapp/applications/rocketmq_logs/backupif [ ! -d ${backmqlogpath} ] then  mkdir -p ${backmqlogpath}fi##移动文件、压缩、删除多余文件(文件存在则进行此操作)filepath=${mqlogpath}/rocketmq_log.1 ##此处思路有误,虽然文件移走了,rocketmq client还是输出到原文件,合适做法是:保留三个文件,移走超过三个以上文件if [ -f ${filepath} ] then  mv ${filepath} ${backmqlogpath}/rocketmq_${YESTERDAY}_log    tar -zcvPf ${backmqlogpath}/rocketmq_${YESTERDAY}_log.tar.gz ${backmqlogpath}/rocketmq_${YESTERDAY}_log   rm -rf ${backmqlogpath}/rocketmq_${YESTERDAY}_log    find ${backmqlogpath} -mtime +3 -type f -name 'rocketmq_*.tar.gz' -exec rm -rf {} \;fi

  至此,ng、rocket_clinet日志完成切割、压缩、备份,日志滚动备份处理,限制日志磁盘使用空间。业务日志强时间相关度属性,决定随时间推移日志价值越小。但是数据总是宝贵的,可能只是你没来得及用上,转储是必不可少的。

3、es数据清理

  es在上一篇做过介绍,非常强大的文件存储系统,运行一段时间给带来额外的麻烦,目前我们机器磁盘只有40G,收集的数据达到20G,任由增加将影响到应用运行。这本是一个中间件,刚开始思路需要某个属性设置数据有效期,比如30d,详细设置参照。

  当然都没有找到我想要的,直到我把它当作数据库看待,柳暗花明又一村,在关系型数据库我们对待过期数据两种方式:1、转储 2、删除,关系型数据有DML语句支持,es也有lucene syntax支持,这里处理比较粗暴,直接删除了,其实也可转储,只是还用不上。

示例

#/bin/bashDELTIME=$(date -d "30 day ago" +%Y.%m.%d)DDAY=$(date -d "30 day ago" +%d)DMONTH=$(date -d "30 day ago" +%m)DYEAR=$(date -d "30 day ago" +%Y)CLOSETIME=$(date -d "15 day ago" +%Y.%m.%d)NOW=$(date)#del indic:es curl -XDELETE 10.10.6.1:9200/*-$DYEAR.$DMONTH.[1-$DDAY]curl -XDELETE 10.10.6.1:9200/*-$DYEAR.[1-$[DMONTH - 1]].*curl -XDELETE 10.10.6.1:9200/*-$[DYEAR-1].*.*#curl -XPOST 10.10.6.1:9200/*-$CLOSETIME/_flush#curl -XPOST 10.10.6.1:9200/*-$CLOSETIME/_closeif [ $? -eq 0 ]then  echo $NOW"-->del $DELTIME log success.." >> /data/software/elasticsearch-5.6.2/data/es-index-clear.logelse  echo $NOW"-->del $DELTIME log fail.." >> /data/software/elasticsearch-5.6.2/data/es-index-clear.logfi

 

  

转载于:https://www.cnblogs.com/sunOfFlower/p/8313153.html

你可能感兴趣的文章
把十进制的字符串转换为数字
查看>>
Eclipse中SVN的安装步骤(两种)和使用方法 [转]
查看>>
关于mysql中storage_engine中 MYISAM 和 INNODB 的选择
查看>>
从 iBatis 到 MyBatis
查看>>
elastic 查询案例Query与Filter + CRUD简单理解 + dynamic mapping + keyword
查看>>
wenbao与轮廓线dp
查看>>
做为一个Java程序员,你需要哪些傍身的技能?
查看>>
luogu1525 [NOIp2011]关押罪犯 (并查集)
查看>>
Java学习笔记09--反射机制
查看>>
CI框架缓存的实现原理
查看>>
HTML 5 Web 存储提供了几种存储数据的方法
查看>>
android小知识之邮箱地址输入自动完成
查看>>
字符串同素
查看>>
特征工程读书笔记2(Feature Engineering for Machine Learning)
查看>>
进程描述和控制
查看>>
Lucene.Net入门教程及示例
查看>>
Locust性能测试_先登录场景案例
查看>>
FFT模板
查看>>
在同一个xp系统里同时安装sql2000和sql2005(转)
查看>>
文件上传
查看>>