Fluentd 提示 "log unreadable, it is excluded" 怎么办?
该提示表示 Fluentd 读取日志文件失败,文件被暂时跳过。常见原因:权限不足、文件损坏、轮转冲突、路径通配符问题。本文给出逐项排查与修复方法。
这行提示的含义:Fluentd 打不开或读不了这个日志文件,本轮先跳过、下轮再试。按"权限 → 文件状态 → 轮转 → 路径"四步排查。
排查清单
1. 权限(最常见)
ls -l /path/to/file.log
namei -l /path/to/file.log # 检查每一级目录权限
Fluentd 运行用户(如 td-agent)需要对文件有读权限、对路径中每一级目录有执行权限:
chmod 644 /path/to/file.log
# 或把 fluentd 用户加入属组
usermod -aG appgroup td-agent
2. 文件损坏或编码异常:手动 head 打开看看——二进制内容、异常编码都可能导致读取失败。
3. 日志轮转冲突:logrotate 正在压缩/移动文件的瞬间撞上读取;确保 Fluentd 配置了 follow_inodes 或轮转后新文件权限正确(logrotate 的 create 模式要带上可读权限)。
4. 路径问题:path 通配符匹配到了不该读的文件(如压缩包、临时文件)——用 exclude_path 排除 *.gz、*.tmp。
观测云对照
观测云 DataKit 采集遇到权限/格式问题会在状态上报中给出明确错误项,控制台可见每个采集目标的异常原因。
常见问题(FAQ)
Q:跳过的文件之后会自动重试吗? 会——"would be examined next time" 即下一轮扫描再试。
Q:修复权限后需要重启吗? 不需要,下一轮 refresh 自动纳入。