You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Filebeat无法读取日志发送到跨机器ELK集群问题求助

排查解决思路
  • 首先修正最明显的配置错误:你提供的ELK docker-compose中,Elasticsearch对外映射的端口是9200,但两个版本的Filebeat配置里ES地址都写的是9042,先把Filebeat的output.elasticsearch.hosts改成["42.23.12.131:9200"]再测试。
  • 排查Filebeat容器的日志目录挂载问题:你要收集的是机器1宿主机上的/mnt/logs/temp.log,容器化部署Filebeat时必须将宿主机的日志路径挂载到容器内,启动Filebeat容器时要加-v /mnt/logs/:/mnt/logs/参数,否则Filebeat容器内部无法访问到目标日志文件。
  • 验证网络连通性:
    • 在机器1上执行nc -zv 42.23.12.131 9200,确认端口可以正常访问,如果不通,检查机器2的防火墙/安全组是否放开了9200端口的入站规则,同时确认Elasticsearch的配置文件elasticsearch.yml中network.host配置为0.0.0.0或者允许机器1的网段访问,默认配置下ES仅允许本地访问。
    • 在机器2本地执行curl 127.0.0.1:9200,确认ES服务本身正常启动,有正常的JSON信息返回。
  • 查看Filebeat运行日志定位具体问题:执行docker logs <你的Filebeat容器名>查看运行日志,常见报错有两类:
    • 找不到目标日志文件:确认挂载路径正确、Filebeat进程对日志文件有读权限
    • ES连接失败:确认地址端口正确、ES没有开启用户名密码验证(如果开启了需要在Filebeat配置中补充output.elasticsearch.username和password参数)
  • 优化日志读取配置:你修改后的第二版Filebeat配置方向是对的,收集非容器日志不需要用autodiscover配置,如需测试可以在input配置中加tail_files: false参数,让Filebeat从日志文件开头读取内容,避免默认从尾部读取导致没有新日志就看不到数据的问题。

内容的提问来源于stack exchange,提问作者Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:06:05