技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> 服务器运维:怎样优雅地切割log

服务器运维:怎样优雅地切割log

浏览:2755次  出处信息

   好吧,我必须要承认,我是一个标题党来的。本文英文名称意思比较准确。什么?你没看到英文名称在哪?不是写给你看的,你当然看不到。

   在Web开发过程中,你总是因为各种理由,需要跟服务器打交道,因为各种理由需要承担一点点运维工作,哪怕你需要运维自己的blog,比如用Linode这种东西。那么服务器运行,就少不了log,log不少,就不得不翻滚,就是rotate,不知道中文是啥……

   为什么要rotate呢,理由是比较简单的,比如在32位系统里,默认文件写到2G大小的时候,就会导致进程core掉,引发很多神奇的问题和bug,你也可以用一些补丁和编程技巧突破2G这个限制,但是你真的需要一个超过2G的log么?回溯总归不方便吧,按日期检索总归不方便吧,反正理由很多了,就是一定要rotate的。

   怎么rotate呢,这个方法可就多了。最傻逼的一种,每次想起来了,ssh到服务器,将所有log都mv一遍,啥?mv后进程挂了,重启不就行了。太多了?mv ./* 嘛,啥?机器挂了,谁让你选这么煞笔的方式啊……

   然后稍微优雅点的,会写个shell脚本。以前我所在的团队,就有人这么干,写个shell脚本,然后放个cron,就比较省心了。那么shell脚本怎么rotate呢,还不是mv么……mv有问题的,因为有些log文件的句柄开着的,突然mv掉了,就好像行驶中的汽车轮子突然掉了,你说啥感觉呢……比较温柔的是 echo ” > xxxx.log,我管这个叫写空,先cp,然后写空,会比较温柔。

   然后说到比较干货的地方了。就是有个东西叫logrotate,以前我根本不知道,我以为用shell脚本就高大上了,草。原来有专门的程序,好的系统,就是从中能学到很多井井有条可以喝咖啡的技巧,比如debian就是这样的系统。那些脏呼呼的服务器程序,脏兮兮的配置文件,放在随便哪个脏兮兮的目录都是可以的,垃圾的文章会告诉你怎么配置就行了。然后你打开debian的时候,你会发现这些配置文件都这么整齐,都这么自动,可以分头安装,还能安全卸载,后装的竟然能跟先装好的完美契合,简直绝了。

   跑题了。这个logrotate,就是专门切割log的,通过一个配置文件来控制切割频率,切割大小,是否压缩,多少天删除等等,什么都想好了,写什么shell脚本啊,简直浪费时间。

   按照一般的教程,如果你配置好logrotate,那也就太平了,一天切一次,30天循环。草,这也会出问题的,比如你的服务器访问量很恐怖,每天产生10G的access_log的话,你就知道了,切割的时候,切完了压缩的时候,你会发现(没有报警系统的话,你还发现不了)CPU被占满了,这意味访问受阻么?也不一定,只是一两个核被占满了而已。当然,每个核其实是不一样的,改天说。所以某几个核占满了,也是不行的。

   写到这里我就写不动了,累啊,直接干货吧。

   准备log方案的时候:

   1. log存在哪个磁盘上?如果分区了的话,要选最大的那个区

   2. log每天产生多少?有个估算没有,没有的话,就观察出来

   3. 在服务器本地磁盘能暂存多少天?压缩后能暂存多少天?

   4. 压缩很耗费CPU时间的,想好log是否压缩?

   5. log是否很重要?那就需要一个大存储专门存放log的,不然rotate没几天,前面的就丢了;

   6. 如果单日切割太大了,可以按照文件大小切割的,或者按照小时切割;

   7. 怕耗CPU可以先不压缩的;

   8. 想压缩的话,可以用taskset和nice指令的,让CPU不要被gzip跑满;

建议继续学习:

  1. server日志的路径分析    (阅读:10110)
  2. AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用(含6.9中文定义补丁)    (阅读:8858)
  3. 利用脚本分析日志并利用snmp自定义OID,再通过cacti画图    (阅读:8686)
  4. tomcat catalina.out日志切割每天生成一个文件    (阅读:8087)
  5. 分布式日志系统scribe使用手记    (阅读:8043)
  6. AWStats是一个基于Perl的WEB日志分析工具。    (阅读:6109)
  7. 使用nginx记日志    (阅读:5077)
  8. 大于2GB的Listener.log和运行超过198天的主机上的Oracle实例    (阅读:4873)
  9. 在 shell 脚本里打日志    (阅读:4784)
  10. Sentry: 错误日志集中管理    (阅读:4355)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1