如何查看Redis服务的运行日志?
美国、香港服务器
如何查看Redis服务的运行日志?
01-09 来源:
查看 Redis 服务运行日志的核心是定位日志文件路径(默认路径或配置文件指定路径),再通过命令查看内容;同时可结合系统服务日志排查启动 / 运行故障。以下是 Ubuntu 24.04 系统下的全场景实操步骤:
一、第一步:定位 Redis 日志文件路径
Redis 日志路径有两种配置方式,优先通过配置文件确认,避免查看错文件。
1. 从 Redis 配置文件查询日志路径(最精准)
bash
运行
# 1. 先定位 Redis 实际加载的配置文件
CONFIG_PATH=$(redis-cli CONFIG GET config_file | grep -v "config_file")
[ -z "$CONFIG_PATH" ] && CONFIG_PATH="/etc/redis/redis.conf"
# 2. 从配置文件中提取日志路径(配置项为 logfile)
LOG_PATH=$(grep -v "^#" $CONFIG_PATH | grep -v "^$" | grep "logfile" | awk "{print $2}")
# 3. 处理默认情况:若 logfile 配置为空,Redis 日志默认输出到 /var/log/redis/redis-server.log
if [ -z "$LOG_PATH" ] || [ "$LOG_PATH" = """" ]; then
LOG_PATH="/var/log/redis/redis-server.log"
fi
echo "Redis 日志文件路径:$LOG_PATH"
关键说明:
若 logfile 配置为 ""(空值),Ubuntu 系统下 Redis 会将日志写入默认路径 /var/log/redis/redis-server.log;
若 logfile 配置为绝对路径(如 /data/redis/redis.log),则日志会写入该自定义路径。
2. 查看 Redis 运行时日志配置(辅助验证)
bash
运行
# 直接查询运行时的日志路径配置
redis-cli CONFIG GET logfile
# 输出示例1(默认配置):1) "logfile" 2) "" → 对应默认日志路径
# 输出示例2(自定义配置):1) "logfile" 2) "/data/redis/redis.log"
二、第二步:查看日志文件内容(常用命令)
定位到日志路径后,用以下命令查看日志,按需选择方式:
1. 实时查看日志(排查运行时故障,推荐)
适合监控 Redis 实时行为(如请求报错、内存淘汰、持久化失败):
bash
运行
# 实时跟踪日志输出(按 Ctrl+C 退出)
tail -f $LOG_PATH
# 实时查看最后 50 行日志(减少冗余)
tail -50f $LOG_PATH
2. 查看全部日志(适合离线分析)
bash
运行
# 方式1:cat 命令(小日志文件快速浏览)
cat $LOG_PATH
# 方式2:less 命令(大日志文件翻页查看,按 q 退出)
less $LOG_PATH
# 实用技巧:在 less 中按 /关键词 搜索(如 /error /warning /OOM)
3. 筛选关键日志(精准定位问题)
通过 grep 过滤错误、警告、关键事件,快速排查故障:
bash
运行
# 示例1:筛选所有错误日志
grep -i "error" $LOG_PATH
# 示例2:筛选内存不足(OOM)相关日志
grep -i "oom" $LOG_PATH
# 示例3:筛选持久化(AOF/RDB)相关日志
grep -i "aof\|rdb" $LOG_PATH
# 示例4:筛选最近 1 小时的日志(按时间过滤)
grep "$(date +"%b %d" --date="1 hour ago")" $LOG_PATH
三、第三步:查看 systemd 系统服务日志(补充排查启动故障)
若 Redis 以 systemd 服务运行,启动失败时(如权限错误、配置语法错误),故障信息可能会输出到系统服务日志,而非 Redis 自身日志,需用 journalctl 查看:
bash
运行
# 方式1:查看 Redis 服务的所有系统日志
journalctl -u redis-server
# 方式2:查看最近 100 行系统日志
journalctl -u redis-server -n 100
# 方式3:实时跟踪系统服务日志
journalctl -u redis-server -f
# 方式4:查看指定时间范围的日志(如今天)
journalctl -u redis-server --since today
四、Docker 容器部署的 Redis 查看日志
若 Redis 是 Docker 容器部署,无需定位日志文件,直接通过 Docker 命令查看:
bash
运行
# 方式1:查看容器日志(实时跟踪)
docker logs -f 容器名称/ID
# 方式2:查看最后 50 行日志
docker logs --tail 50 容器名称/ID
# 方式3:查看指定时间范围的日志(如最近 10 分钟)
docker logs --since 10m 容器名称/ID
五、常见日志关键词及故障排查
关键词 对应场景 排查方向
ERROR 严重错误(如配置错误、权限不足) 结合上下文查看具体错误描述,如 Permission denied 需修复文件权限
WARNING 警告信息(如内存不足、持久化延迟) 若出现 OOM 需调整 maxmemory 或内存淘汰策略;AOF rewrite 延迟需优化磁盘
OOM command 内存不足导致命令执行失败 增大 maxmemory 或调整 maxmemory-policy,清理无效数据
AOF rewrite AOF 文件重写 检查重写是否成功,失败可能是磁盘空间不足或权限问题
RDB saved RDB 持久化成功 确认备份文件生成,若失败查看磁盘空间和权限
Accepted connection 客户端连接成功 监控连接数,若大量连接需检查是否有恶意攻击或业务异常
六、避坑要点
权限问题:Redis 日志文件默认属主是 redis:redis,需加 sudo 才能查看(如 sudo cat $LOG_PATH),否则提示权限不足;
日志轮转:Ubuntu 系统默认会对 Redis 日志进行轮转(生成 redis-server.log.1 redis-server.log.2.gz 等文件),若当前日志无内容,可查看轮转后的旧日志;
日志级别配置:若日志内容过少,可修改配置文件的 loglevel(默认 notice),可选值:debug(最详细)、verbose、notice、warning(最精简),修改后需重启 Redis 生效。
七、一键定位 + 查看 Redis 日志脚本
bash
运行
#!/bin/bash
# 定位 Redis 日志路径
CONFIG_PATH=$(redis-cli CONFIG GET config_file | grep -v "config_file")
[ -z "$CONFIG_PATH" ] && CONFIG_PATH="/etc/redis/redis.conf"
LOG_PATH=$(grep -v "^#" $CONFIG_PATH | grep -v "^$" | grep "logfile" | awk "{print $2}")
[ -z "$LOG_PATH" ] || [ "$LOG_PATH" = """" ] && LOG_PATH="/var/log/redis/redis-server.log"
echo "Redis 日志路径:$LOG_PATH"
echo -e "\n=== 最近 50 行日志 ==="
sudo tail -50 $LOG_PATH
总结
查看 Redis 日志的核心流程:
通过 config get logfile 或配置文件定位日志路径;
用 tail -f 实时监控,grep 筛选关键错误;
启动故障优先查看 journalctl -u redis-server 系统服务日志;
结合日志关键词快速定位内存、持久化、权限等问题。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快