前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Linux自带日志滚动工具logrotate滚动redis日志示例

使用Linux自带日志滚动工具logrotate滚动redis日志示例

作者头像
一见
发布2019-03-14 15:17:15
2.1K0
发布2019-03-14 15:17:15
举报
文章被收录于专栏:蓝天

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

代码语言:javascript
复制
# 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,实现十分简单,毫无日志滚动逻辑:

代码语言:javascript
复制
// 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:

代码语言:javascript
复制
# 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的配置示例:

代码语言:javascript
复制
# 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):

代码语言:javascript
复制
# service rsyslog restart
# systemctl restart  rsyslog.service
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/02/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档