Filebeat Invalid Frame Type Error求助:AWS ELK无法接收Windows日志
嘿,这个问题我碰到过好多次啦!一眼就能看出问题出在哪——你在Filebeat里用HTTP协议去连Logstash的5044端口,但Logstash的Beats输入插件是基于TCP协议工作的,完全不识别HTTP请求的帧格式,这才会抛出Invalid Frame Type这种错误!
问题根源
核心就是协议不匹配:
- Logstash的
beats输入插件默认监听TCP协议的5044端口 - 你给Filebeat配置的
http://AWS-EIP:5044会让它用HTTP协议发数据,和Logstash的预期完全不兼容,导致帧解析失败
具体解决步骤
1. 修正Filebeat的输出配置
找到Windows主机上的filebeat.yml配置文件,把输出部分的hosts改成纯TCP格式,去掉http://前缀:
output.logstash: hosts: ["AWS-EIP:5044"]
Filebeat会自动用TCP协议和Logstash的Beats插件通信,不用额外指定协议。
2. 确认Logstash的输入配置
检查AWS上Logstash的配置文件,确保用的是beats输入插件(而不是http输入),示例配置如下:
input { beats { port => 5044 } }
如果之前误配成了http输入,一定要改成beats输入,这是关键。
3. 重启相关服务
- 在Windows主机上,用管理员权限打开命令提示符,执行命令重启Filebeat:
net stop filebeat && net start filebeat - 在AWS的Logstash实例上,重启Logstash服务,让新配置生效。
4. 验证结果
等服务重启后,观察Logstash的日志,如果不再出现Invalid Frame ProtocolException错误,同时能正常接收Windows主机的日志数据,就说明问题解决啦!
另外提一句:你看到Windows主机每次连接用不同端口是正常现象,这是系统自动分配的临时端口,完全不影响日志采集,不用纠结这个~
内容的提问来源于stack exchange,提问作者Kavinda Rasanjana
相关产品推荐
相关产品推荐

