在 Ubuntu 上 Filebeat 占用 CPU 过高,通常不是“Bug”,而是配置或环境不匹配导致的。下面按最常见原因 → 排查方法 → 解决建议来说明。
paths:
- /var/log/*
- /data/logs/**/*
问题:
.gz、临时文件)✅ 解决:
paths:
- /var/log/*.log
- /data/logs/app/*.log
并排除无用文件:
exclude_files: ['.gz$', '.tmp$']
如果日志:
log.1 log.2 ...Filebeat 会:
✅ 解决:
close_inactive: 5m
clean_inactive: 72h
ignore_older: 24h
Filebeat < 7:
paths 是一个 prospector✅ 解决:
Filebeat 默认:
worker: 1
但:
✅ 解决:
output.elasticsearch:
worker: 2
或限制资源:
systemctl edit filebeat
[Service]
CPUQuota=50%
例如:
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}.*$'
在高吞吐时非常吃 CPU。
✅ 解决:
某些版本(如 7.x 早期)有 CPU 泄漏问题。
✅ 解决:
filebeat version
建议升级到:
top -p $(pgrep filebeat)
ls -l /proc/$(pgrep filebeat)/fd | wc -l
cat /etc/filebeat/filebeat.yml
| 场景 | CPU |
|---|---|
| 小日志量 | < 5% |
| 中日志量 | 5–15% |
| 高吞吐 | 20–40% |
| 持续 > 70% | ❌ 异常 |
filebeat.inputs:
- type: log
paths:
- /var/log/*.log
exclude_files: ['.gz$']
scan_frequency: 10s
close_inactive: 5m
ignore_older: 24h
output.elasticsearch:
hosts: ["localhost:9200"]
worker: 2
你可以贴出:
filebeat.ymlfilebeat version我可以直接帮你定位是哪一行配置导致的 CPU 高。