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

求助: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 5044
    
    看到TcpTestSucceeded : True才说明端口能通
  • 检查Ubuntu的防火墙是否放行目标端口:
    sudo ufw status
    
    如果没看到5044端口的规则,执行sudo ufw allow 5044/tcp添加放行
  • 确认Logstash在Ubuntu上正常监听端口:
    sudo netstat -tulpn | grep 5044
    
    输出里要能看到Logstash的进程ID,说明端口在被监听

二、检查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.yml
    
    输出Config 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 50
    
    如果服务没运行,执行Start-Service Winlogbeat启动;日志里会有连接失败、权限不足等明确报错
  • Logstash侧:
    查看服务状态和实时日志:
    sudo systemctl status logstash
    sudo tail -f /var/log/logstash/logstash-plain.log
    
    如果日志里出现connection refused或者SSL handshake failed,对应排查网络或证书问题
  • Elasticsearch侧:
    检查索引是否存在:
    curl -XGET http://localhost:9200/_cat/indices?v
    
    如果能看到winlogbeat-开头的索引,说明数据已经到ES了,问题大概率在Kibana

五、Kibana端的最后验证

  • 打开Kibana,进入Management > Index Patterns,检查是否创建了winlogbeat-*的索引模式
  • 如果没创建,点击Create index pattern,输入winlogbeat-*,选择@timestamp作为时间字段,完成创建
  • 切换到Discover页面,选择刚创建的索引模式,调整时间范围(比如选“最近15分钟”),应该就能看到日志了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:43:10