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

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

最近在搭建日志收集平台,将linux的部分日志收集到elasticsearch上通过kibana进行搜索展现,基本上是标准的ELK架构,但是agent端复用了已有的flume。在功能测试的时候,是将本地messages日志备份出来对备份的日志进行了切割测试。经过一周测试终于完成了,当时的内心是:

 

日志的切割,采用了linux自带的logrotate进行日志的切割。配置就不放了,主要就是去切割指定的文件,然后将切割的文件转移到agent收集工具监控的目录,然后将文件权限改一下就行。当功能性测试通过后,就需要进行正常的测试了,然后将切割的文件改为系统的messages日志,然后进行logrotate切割测试。然后崩溃的事情来了:

 

这是什么鬼!!!!!不是测试好好的吗???这到底是啥错啊?!!

当然作为一个坚强的小伙子,当经历过一段时间的WFK后,就果断的请来了谷歌大法了。

但是,当查了半天没结果的时候,在stackoverflow上看到有讨论说是logrotate的版本的BUG的时候,我整个人又。。。。。。。

 

当然作为一个坚强的小伙,我怎么可能真的去睡觉。在被卡了近半天以后,我决定还是去翻翻鸟哥linux的私房菜看看。然后看到了鸟哥linux私房菜里有这么一章《认识与分析日志文件》,然后我就通读里一遍。结果可想而知:

 

截取了其中一段内容如下:

加入了a这个属性之后,你的 /var/log/messages 登录文件从此就仅能被添加,而不能被删除,直到 root 以『 chattr -a /var/log/messages 』取消这个 a 的参数之后,才能被删除或移动喔!

 

也就是说,为了保证系统日志的准确性,linux对messages系统日志设置了只能追加不能删和移动,而logrotate需要将文件移动后新建一个新messages文件给系统。所以为了能用logrotate进行切割,我们需要先将messages文件的安全属性a给去掉,当然如果系统管理员直接将这个安全属性去掉的话,在生产环境来说还是不安全的设置。有什么办法能不需要管理员手工去调整安全权限呢?很多管理员第一想法是直接写个脚本去切割的时候改一下,切割完成后改回来不就完了。当然通过shell脚本是可以很好的完成,但是杀鸡焉用牛刀?这个时候logrotate的强大就体现出来了:logrotate可以在配置文件中配置logrotate启动前执行一些shell命令,然后logrotate启动后再执行一些shell命令。你看问题不是迎刃而解了吗?具体到详细的配置文件可以参考如下:

 

然后完美的完成了!logrotate可以完美切割日志文件,而不需要对当前messages的安全性做任何调整。何其方便!!!!

PS:还是要好好看书!还是要好好看书!还是要好好看书!重要的事情说三遍!

以上完成后,写个定时任务去跑就好了,然后可以到kibana上去搜索日志了:

 

以上,完美解决!

 

 

 

如果喜欢欢迎关注公共号:运维技术分享   后面会继续写一些自动化的东西和ELK的内容

转载于:https://www.cnblogs.com/admanheart/p/5491237.html

你可能感兴趣的文章
必背公式及常数
查看>>
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
查看>>
EntityManager的merge()方法
查看>>
Spring中线程池的应用
查看>>
前端登录jq图形验证码
查看>>
软件设计
查看>>
Hadoop各种进程的配置文件及其位置说明
查看>>
js时间戳转时间格式
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Linux的用户态和内核态
查看>>
JavaScript原生错误及检测
查看>>
(原创) cocos2d-x 3.0+ lua 学习和工作(4) : 公共函数(3): 深度克隆clone()
查看>>
为什么写作
查看>>
整数子数组求最大和添加验证
查看>>
使用kubeadm安装Kubernetes
查看>>
Principal Component Analysis 主元分析
查看>>
JDBC原生态代码
查看>>
韩版可爱小碎花创意家居收纳挂袋
查看>>
计算机基础之硬件
查看>>
python操作mysql ------- SqlAchemy正传
查看>>