Filebeat 提示 "no non-zero metrics in the last 30s" 是什么意思?
Filebeat 日志出现 "no non-zero metrics in the last 30s" 是信息级提示,表示过去 30 秒没有采集到任何日志数据。本文说明该日志的含义、常见原因(路径配置、权限、无新日志)与排查步骤。
这不是错误,是 Filebeat 的周期性自检日志:当前报告周期(默认通常为 30 秒)内没有需要输出的非零监控指标变化,不能据此断言没有读到新行。 日志文件本身没有新增内容时它属正常;如果业务一直在写日志还出现这条提示,才需要排查。
先判断:正常还是异常?
- 低峰期/测试环境日志写入本来就少 → 正常,忽略即可;
- 业务持续产生日志但目标端没有对应数据 → 结合采集位点、队列和输出错误按下文排查。
排查清单
1. 路径配置是否正确
filebeat.inputs:
- type: filestream
id: myapp-logs
paths:
- /var/log/myapp/*.log
确认 glob 路径真实匹配到文件:ls /var/log/myapp/*.log。
2. 文件权限:Filebeat 进程用户对日志文件要有读权限——sudo -u filebeat cat /path/to/log 验证。
3. 文件句柄/harvester 状态:看 Filebeat 日志里 harvester 是否启动了对目标文件的采集;轮转能否正确跟踪取决于文件身份策略、路径和 rename/copytruncate 方式,并非换成 filestream 就一定不漏。启用 fingerprint 时,文件还需达到配置的指纹读取长度才开始采集。
4. 输出端堵塞:Elasticsearch/Kafka 输出端写不进去时,Filebeat 会反压停止读取——检查输出端健康度与 Filebeat 的 queue 指标。
常见问题(FAQ)
Q:能关掉这条日志吗? 调低 Filebeat 日志级别到 warning 即可(logging.level: warning),它是 info 级输出。
Q:文件有内容但一直不采? 检查 ignore_older 设置——默认值 0 表示禁用;只有显式启用时才按文件修改时间排除旧文件。