截至到redis-5.0版本,redis仍然不会自动滚动日志文件,如果不处理则日志文件日积月累越来越大,最终将导致磁盘满告警:

# ls -lh

total 12G

-rw-r--r-- 1 redis redis 8.5G Feb 18 10:26 redis-6379.log

-rw-r--r-- 1 redis redis 1.5G Feb 18 10:26 redis-6380.log

-rw-r--r-- 1 redis redis 2.0G Feb 18 10:26 redis-6381.log

查看redis的源代码,可发现每次写日志均是先fopen再fprintf,实现十分简单,毫无日志滚动逻辑:

// server.c

void serverLogRaw(int level, const char *msg)

{

FILE *fp;

。。。。。。

fp = log_to_stdout? stdout: fopen(server.logfile,"a");

if (!fp) return;

。。。。。。

fflush(fp);

if (!log_to_stdout) fclose(fp);

if (server.syslog_enabled)

syslog(syslogLevelMap[level], "%s", msg);

}

显然,这是redis运维需要解决的。最易想到的是自己写脚本滚动日志,比如直接利用日志滚动脚本工具log_rotater.sh。不过这里更推荐Linux系统自带的日志滚动工具logrotate:

# which logrotate

/usr/sbin/logrotate

# which rsyslogd

/usr/sbin/rsyslogd

Linux系统自带的日志滚动工具logrotate由两部分组成:一是命令行工具logrotate,二是后台服务rsyslogd。

使用rsyslogd,只需简单的配置即可实现日志滚动。rsyslogd的配置文件为/etc/logrotate.conf,但一般不建议直接修改logrotate.conf,而是在目录/etc/logrotate.d下新增文件的方式。logrotate.conf会include所有logrotate.d目录下的文件,语法是一致的,区别是logrotate.conf定义了默认的配置,而logrotate.d目录下为专有配置。

下列为redis的配置示例:

# cat /etc/logrotate.d/redis

/usr/local/redis/log/redis-6379.log

/usr/local/redis/log/redis-6380.log

/usr/local/redis/log/redis-6381.log

{

rotate 2

minsize 100M

nocompress

missingok

create 0664 redis redis

notifempty

}

配置项说明:

1) rotate指定日志文件备份数,如果值为0表示不备份

2) minsize表示日志文件达到多大才滚动

3) nocompress表示是否压缩备份的日志文件

4) missingok如果日志丢失,不报错继续滚动下一个日志

5) notifempty日志文件为空时,不进行轮转,默认值为ifempty

6) create指定创建新日志文件的属性,logrotate是以root运行的,如果目标日志文件非root运行,则这个一定要指定好。

有关logrotate的详细使用,请参考logrotate资料,本文不过多描述。

注意,修改后需要重启下rsyslogd。如果是CentOS可使用下列任意一种方式重启(实际上systemctl新方式,而service实际也是使用systemctl):

# service rsyslog restart

# systemctl restart  rsyslog.service

使用Linux自带日志滚动工具logrotate滚动redis日志示例的更多相关文章

  1. 日志切割工具logrotate解决Tomcat catalina.out日志过大的问题

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

  2. 简单好用的日志管理工具 Logrotate

    前言 日志就像程序的生命记录仪,详细记录下了程序运行的点点滴滴. 慎重的选择记录哪些日志:在茫茫日志海中寻找真正记录问题的日志,你是不想经历的: 精心的定时压缩转移日志:故障发生了,日志却丢了,此时的 ...

  3. linux运维、架构之路-tomcat日志切割工具 logrotate

    一.Logrotate简介 1.Logrotate实际就是对日志进行切割的小工具,他通过让用户来配置规则的方式,检测和处理日志文件.配合Cron可让处理定时化:2.Logrotate预制了大量判断条件 ...

  4. Nginx日志切割工具——logrotate 使用记录

    1.安装 logrotate是Linux系统自带,无需安装 2.配置 进入[/etc/logrotate.d/nginx]文件修改配置 # 需要备份的日志路劲,一个或多个都可以 /data/logs/ ...

  5. perf学习-linux自带性能分析工具

    目前在做性能分析的事情,之前没怎么接触perf,找了几篇文章梳理了一下,按照问题的形式记录在这里. 方便自己查看.   什么是perf? linux性能调优工具,32内核以上自带的工具,软件性能分析. ...

  6. 日志管理工具logrotate

    工作所需,需要管理脚本的打印日志,百度一圈,发现了logrotate这款工具,经测试确实挺好的! 话不多说,直接上重点,以便于以后需要时查看 命令: whereis logrotate 可以看到log ...

  7. linux自带抓包工具tcpdump使用说明

    tcpdump是个强大的网络分析工具,有很多细致的规则可以定义. 参考:http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html ...

  8. linux系统日志自动切割工具----logrotate

    参考资料 :https://www.cnblogs.com/kevingrace/p/6307298.html 对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务 ...

  9. Linux自带神器logrotate详解

    Linux自带神器logrotate详解 散尽浮华 运维 3天前   作者:散尽浮华 链接:https://www.cnblogs.com/kevingrace/p/6307298.html 对于 L ...

随机推荐

  1. Laravel常见问题集锦

    1.提示:Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes? ...

  2. win7 64 位 + vs2015 + opencv3.2

    下载OpenCv_3.2_vc14 链接:http://pan.baidu.com/s/1eSBu1NG 密码:104g 1.下载好后,进行解压到自己指定的目录: 解压后可以得到: 2.添加环境变量 ...

  3. SpringMVC 请求全过程漫谈

    SpringMVC 请求全过程漫谈 SpringMVC 跟其他的mvc框架一样,如 struts,webwork, 本质上都是 将一个 http 请求(request)进行各种处理, 然后返回resp ...

  4. GIT TEAMWORK

    Learn GIT TEAMWORK generalizations Congratulations, you now know enough to start collaborating on Gi ...

  5. Unity 获取指定资源目录下的所有文件

    string path="Assets";//Assets/Scenes if(Directory.Exists(path)){ var dirctory=new Director ...

  6. jquery.validate和jquery.form配合实现验证表单后AJAX提交

    基础代码其实很简单,之后一点一点扩充.最终代码写在最后. 表单: <form action="@Url.Action("AddColumns","Cont ...

  7. js中json的使用

  8. Echarts 饼状图自定义颜色

    今天给饼状图着色问题,找了好久 终于找到了 话不多说直接上代码 $.ajax({ url: "/HuanBaoYunTai/ajax/HuanBaoYunTaiService.ashx&qu ...

  9. spring proxy-target-class

    <tx:annotation-driven transaction-manager="transactionManager"                          ...

  10. jdango 使用oss存储

    安装django-aliyun-oss2-storage-0.1.5.tar.gz settings文件添加 MEDIA_ROOT = os.path.join(BASE_DIR,'upload/') ...