求助:Winlogbeat向Ubuntu的Logstash发日志,Kibana无显示
排查Winlogbeat无法向ELK栈推送日志的分步指南
我之前也踩过Winlogbeat对接ELK没日志的坑,咱们一步步来排查,应该能很快定位问题:
一、先确认网络连通性(最容易被忽略的基础问题)
- 从你的Windows 10机器ping Ubuntu的IP,验证基本网络连通:
ping <Ubuntu服务器IP> - 用PowerShell测试Winlogbeat到Logstash端口的连通性(默认是5044,如果你改了端口就替换):
看到Test-NetConnection <Ubuntu服务器IP> -Port 5044TcpTestSucceeded : True才说明端口能通 - 检查Ubuntu的防火墙是否放行目标端口:
如果没看到5044端口的规则,执行sudo ufw statussudo ufw allow 5044/tcp添加放行 - 确认Logstash在Ubuntu上正常监听端口:
输出里要能看到Logstash的进程ID,说明端口在被监听sudo netstat -tulpn | grep 5044
二、检查Winlogbeat配置文件(winlogbeat.yml)
YAML对缩进和格式非常敏感,重点核对这几个核心部分:
- Logstash输出配置,确保IP和端口完全正确:
output.logstash: hosts: ["<Ubuntu服务器IP>:5044"] # 如果你的Logstash开启了SSL认证,还要加上证书配置,没开就忽略 # ssl.certificate_authorities: ["C:/Program Files/Winlogbeat/certs/ca.crt"] - 日志收集规则,确认你要采集的Windows日志已经开启:
winlogbeat.event_logs: - name: Application - name: System - name: Security - 验证配置文件语法是否合法:在Winlogbeat安装目录下打开PowerShell,执行:
输出.\winlogbeat.exe test config -c .\winlogbeat.ymlConfig OK才说明配置没问题,有错误会明确提示哪行出问题
三、检查Logstash的输入输出配置
假设你的Logstash配置文件放在/etc/logstash/conf.d/beats.conf,重点看这两部分:
- Beats输入模块,确保端口和Winlogbeat配置一致:
input { beats { port => 5044 # 没开SSL的话不要加ssl相关配置,避免报错 } } - Elasticsearch输出模块,确保指向本地ES且索引格式正确:
output { elasticsearch { hosts => ["localhost:9200"] index => "winlogbeat-%{+YYYY.MM.dd}" } # 可以临时开启stdout输出,方便调试看有没有收到数据 stdout { codec => rubydebug } } - 验证Logstash配置并重启服务:
sudo /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/beats.conf --config.test_and_exit sudo systemctl restart logstash
四、查看服务日志找报错线索
- Winlogbeat侧:
检查服务状态并查看日志:
如果服务没运行,执行Get-Service Winlogbeat Get-Content "C:\Program Files\Winlogbeat\logs\winlogbeat*" -Tail 50Start-Service Winlogbeat启动;日志里会有连接失败、权限不足等明确报错 - Logstash侧:
查看服务状态和实时日志:
如果日志里出现sudo systemctl status logstash sudo tail -f /var/log/logstash/logstash-plain.logconnection refused或者SSL handshake failed,对应排查网络或证书问题 - Elasticsearch侧:
检查索引是否存在:
如果能看到curl -XGET http://localhost:9200/_cat/indices?vwinlogbeat-开头的索引,说明数据已经到ES了,问题大概率在Kibana
五、Kibana端的最后验证
- 打开Kibana,进入Management > Index Patterns,检查是否创建了
winlogbeat-*的索引模式 - 如果没创建,点击Create index pattern,输入
winlogbeat-*,选择@timestamp作为时间字段,完成创建 - 切换到Discover页面,选择刚创建的索引模式,调整时间范围(比如选“最近15分钟”),应该就能看到日志了
内容的提问来源于stack exchange,提问作者Hilmand Khan
相关产品推荐
相关产品推荐

