背景介绍

对于互联网小公司而言,对于服务日志的处理一般都不咋样,在微服务使用之后之后可能稍微好一些,但还是有很多传统的服务,如:Tomcat,Nginx 等在日志处理的时候仍然不是很友好。主要是很多时候开发需要查看线上服务的日志便于查找 BUG,所以我们很多时候不是在查日志就是查日志的路上。

为了便于开发自己去查看日志于是便使用 Nginx 做了个日志下载站点。但是问题再次来了,那就是日志量太大,不好下载。怎么办?压缩呗。毕竟纯文本压缩比率超级高,100M 的文件能够压缩到几 M 不香吗?

但是即使压缩之后,解压后仍然很多,我们可能只需要查看的是几点到几点的,其它的对于我们没有意义。要是能够按照小时再切割一下就好了。

于是想到了 Linux 的 logrotate。但是默认的规则好像并不能满足我们的需求,因为它最低的时间也是按天计算的。

这时候就需要另外一个东西了,crontab 定时任务。

关于 logrotate

一般在服务器初始化的时候这些工具都已经存在的,但是为了保险,还是手动安装一下:

yum -y install logrotate

服务简单的说明:

服务的主配置文件:/etc/logrotate.conf

在主配置中可以看到 include /etc/logrotate.d 说明我们可以将用户定义的配置直接放到这下面,系统会自动为我们执行。当然,系统的并不能很好的满足我们需求。

再看看配置模板:

日志文件绝对路径 {各种参数...
}

参数包含:

参数 说明
compress 日志轮替时候对旧日志就行 gzip 压缩
nocompress 不压缩
daily 按天轮替
dateext 使用当前日期命名旧日志
dateformat .%s 对日期进行格式定制
ifempty 日志没有内容的时候也进行轮替
notifempty 日志是空的就不轮替
mail 将轮替后的文件发送到指定E-mail地址
nomail 不发邮件
copytruncate 轮替时候先拷贝日志,备份拷贝文件,在清空本来的文件,这样不会导致轮替后原文件消失,缺点就是可能丢失小部分日志
monthly 一个月轮替一次
olddir 轮替后日志文件放入指定的目录
rotate 轮替最多保留之前的数据几次
size 当日志增长到指定大小的时候开始轮替
weekly 按周轮替
yearly 按年轮替
Missingok 如果日志丢失,不报错继续滚动下一个日志

切割 Tomcat 日志示例

说明:

1. 服务器上面有这样一个 tomcat 日志:/data/TEST-01-BACKEND/MALL/MALL-WEB-Serice-8000/logs/catalina.out

2. 我们想将这个文件按每两小时切割一次并压缩,保留 100 个旧的切割,切割的文件保存到:/data/TEST-01-BACKEND/MALL/MALL-WEB-Serice-8000/logs/archives 目录下。

开始配置:

1. 添加 logrotate 配置文件:

vi /etc/logrotate.d/tomcat

内容如下:

# MALL LOGROTATE
/data/TEST-01-BACKEND/MALL/MALL-WEB-Serice-8000/logs/catalina.out {notifempty copytruncaterotate 100missingokcompressdateextdateformat .%Y%m%d-%Holddir /data/TEST-01-BACKEND/MALL/MALL-WEB-Serice-8000/logs/archives
}

红色部分需要注意,第一个是为了轮替之后原文件还存在,第二个为压缩,第三个定义切割后文件的名称。

2. 手动执行一次轮替:

/usr/sbin/logrotate -vf /etc/logrotate.d/tomcat

这里如果报错:because parent directory has insecure permissions (It's world writable or writable by group which is not "root")

只需要在配置中参数加入:

su root root

3. 查看轮替后效果:

可以看到原本 300M 左右的被压缩到 64 M。

4. 加入定时任务:

crontab -e

内容如下:

# LOGROTATE
0 */2 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >> /tmp/logrotate.log

这样就能每隔两小时轮替一次了!

Logrotate 对服务器日志按照小时切割并压缩相关推荐

  1. logrotate测试_日志切割之Logrotate

    1.关于日志切割 日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题.除此之外,处 ...

  2. 服务器log文件清理,服务器日志切割清理工具(LogCutter)

    对于服务器的日常维护来说,日志清理是非常重要的事情,如果残留日志过多则严重浪费磁盘空间同时影响服务的性能.如果用手工方式进行清理,会花费太多时间,并且很多时候难以满足实际要求.例如:如何在每个星期六凌 ...

  3. linux 日志切割 自带,[日志分割回滚] 使用linux自带的logrotate对nginx日志进行分割...

    logrotate日志分割配置: # cat /etc/logrotate.d/nginx /data/nginx_logs/*.access_log         #nginx日志所在目录 { n ...

  4. logrotate测试_logrotate日志切割

    最近在搭建日志收集平台,将linux的部分日志收集到elasticsearch上通过kibana进行搜索展现,基本上是标准的ELK架构,但是agent端复用了已有的flume.在功能测试的时候,是将本 ...

  5. centos 日志切割_CentOS Linux使用logrotate分割管理日志

    logrotate程序是一个日志文件管理工具.用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到"转储"作用.可以节省磁盘空间. logrotate命令格式: logro ...

  6. Nginx的继续深入(日志轮询切割,重写,负载均衡等)

    Nginx的访问日志轮询切割 通常什么情况Nginx会把所有的访问日志生成到一个制定的访问日志文件access.log里面,但时间一长,日志个头很大不利于日志的分析和处理. 有必要对Nginx日志进行 ...

  7. Nginx日志文件的切割

    Nginx日志文件的切割 生产环境中,由于访问日志文件增长速度非常快,日志太大会严重影响服务器效率. 同时,为了方便对日志进行分析和计算,需要对日志文件进行定时切割. 定时切割方式,包括按月切割.按天 ...

  8. logrotate测试_日志轮询工具Logrotate的使用

    Lograte的作用 我们可以在 Linux中配置 logrotate 程序,它可以自动执行日志文件的轮换.压缩.删除和用邮件发出. 我们可以配置 logrotate 程序,以便每个日志文件可以在每天 ...

  9. 这些 Shell 分析服务器日志命令集锦,收藏好

    自己的小网站跑在阿里云的ECS上面,偶尔也去分析分析自己网站服务器日志,看看网站的访问量.看看有没有黑阔搞破坏!于是收集,整理一些服务器日志分析命令,大家可以试试! 1.查看有多少个IP访问: awk ...

最新文章

  1. JetsonTX2上安装tensorflow的心酸史
  2. Facebook TensorMask:一种新的密集滑动窗口分割技术
  3. Python 文件操作二
  4. 微信和支付宝支付模式详解及实现(.Net标准库)- OSS开源系列
  5. 速度收藏!600页阿里技术全景图曝光,程序员看完都沸腾了
  6. linux 中如何查看块设备,在linux中,如何确定使用块设备的进程?
  7. linux 怎么创建接口文件,我们如何在Linux上创建多个虚拟接口?
  8. 关于Mysql的错误:No query specified
  9. 让AI自动调参,才是百度无人车的进化方式:适应环境全靠自己 | 论文
  10. 硬盘数据恢复的神器有哪些
  11. cjson 对象是json数组型结构体_CJSON中有关于在对象中放数组,数组中放对象,以及其解析...
  12. matlab的基本使用
  13. 为什么中国的数字是四位一进,而西方的是三位一进?
  14. php爬虫教程(二)数据请求分析
  15. 陈强教授《机器学习及R应用》课程 第七章作业
  16. Node-RED使用指南:28:撤销与删除恢复
  17. Unity3D休闲射击类游戏《Survival Shooter》完整源码
  18. 第二章 源力、质量、能量
  19. 谷歌(百度)搜索的一些技巧
  20. 机器人xacro设计+gazebo/rviz启动

热门文章

  1. 全局异步和主线程异步区别、改变PlaceHolder颜色、解决键盘弹起挡住文本框问题...
  2. POST教程笔记 - WinHttp获取网页源码
  3. 两个操作字符串的方法:读取指定位置的字符和找出某个字符串的位置
  4. 无法加载登录用户界面DLL MyGina.dll 解决
  5. gitlab 目录tag_【环境搭建】gitlab-ci(持续集成)
  6. 【数据结构与算法】之深入解析“搜索旋转排序数组”的求解思路与算法示例
  7. 2020/Province_C_C++_A/A/门牌制作
  8. 2015/Province_Java_A/3/九数分三组
  9. Golang之实现一个负载均衡算法(随机,轮询)
  10. Lake Counting POJ - 2386