通过Kafka+ELK实现Windows日志采集异常排查求助
问题排查:Windows Filebeat日志无法流转至Kibana
环境组件
- Filebeat 8.1.3(部署在Windows系统)
- Elasticsearch 7.17.1
- Logstash 8.1.3
- Kafka(与ELK部署在同一服务器,通过Helm安装)
架构流程
Windows Filebeat采集本地日志 → 输出至Kafka → Logstash从Kafka读取日志 → 写入Elasticsearch → Kibana展示
核心问题:Kibana无法展示Windows Filebeat采集的日志,但通过Kafka CLI容器发送的消息可正常显示。
配置信息
Filebeat配置(Windows端filebeat.yml)
type: log paths: - "E:/QwikCilver/Applogs/AppLog/zeus/zeus.log" ignore_older: 5m scan_frequency: 1m close_inactive: 10s close_removed: true clean_removed: true close_renamed: true multiline.type: pattern multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}' multiline.negate: true multiline.match: after tags: ["Perf", "zeus.log" ] output.kafka: hosts: ["internal-a6a50c1cf23db4fa582d77b7a28d2fc9-485248067.ap-south-1.elb.amazonaws.com:9092"] enabled: true topic: "my_topic" partition.round_robin: reachable_only: false required_acks: 1 compression: gzip max_message_bytes: 1000000
Logstash配置
input { kafka { bootstrap_servers => "kafka-broker.kafka.svc.cluster.local:9092" topics => ["my_topic"] codec => json } } filter { } output { elasticsearch { index => "others-%{+YYYY.MM.dd}" hosts => ["elasticsearch:9200"] user => elastic password => ********* } }
排查步骤与解决方法
1. 验证Filebeat基础功能
- 执行Windows命令检查配置语法:
filebeat test config -c filebeat.yml,确保无语法报错 - 测试Kafka输出连通性:
filebeat test output -c filebeat.yml,确认能正常连接到Kafka地址 - 查看Filebeat日志(默认路径:
C:\Program Files\Filebeat\logs\filebeat.log),排查是否存在日志文件权限不足、Kafka连接超时、topic不存在等报错
2. 确认Kafka Topic接收状态
- 进入Kafka容器,执行命令查看topic偏移量:
对比前后偏移量是否增长,判断Filebeat是否成功发送消息到Kafkakafka-run-class.sh kafka.tools.GetOffsetShell --broker-list kafka-broker.kafka.svc.cluster.local:9092 --topic my_topic --time -1 - 若偏移量无变化:
- 用
telnet internal-a6a50c1cf23db4fa582d77b7a28d2fc9-485248067.ap-south-1.elb.amazonaws.com 9092测试Windows机器到Kafka ELB的端口连通性 - 检查Kafka集群配置,确保开启
auto.create.topics.enable=true(若my_topic未手动创建) - 确认Kafka监听配置支持外部Windows机器通过ELB访问
- 用
3. 检查Logstash与Kafka/Elasticsearch的交互
- 查看Logstash日志(默认路径:
/var/log/logstash/logstash-plain.log),排查是否存在Kafka读取权限不足、JSON codec解析失败等报错 - 临时修改Logstash input的
codec => plain,测试是否能接收消息,排除格式兼容性问题 - 验证Elasticsearch写入情况:执行
查看当日索引的文档数是否增长curl -u elastic:你的密码 http://elasticsearch:9200/others-$(date +%Y.%m.%d)/_count
4. 版本兼容性调整
Filebeat 8.1.3与Elasticsearch 7.17.1存在跨版本兼容风险,建议将Filebeat降级至7.17.x系列,避免版本不匹配导致的消息格式或API调用异常
5. 网络与防火墙检查
- 确认Windows机器的防火墙未拦截9092端口出站流量
- 检查Kafka所在服务器的安全组,允许Windows机器的IP访问9092端口
内容的提问来源于stack exchange,提问作者Saikat Konar
相关产品推荐
相关产品推荐

