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

如何在Kibana查看结构化日志?ELK+SpringBoot配置求助

问题分析与解决方案

嘿,我来帮你搞定这个结构化日志的问题!你的配置里有两个关键问题导致Kibana显示的不是结构化数据,咱们一步步来修正:

1. 先修复Logback的Appender引用错误

你在logback-spring.xml里定义的TCP Appender名字是logstash2,但root日志节点里引用的却是logstash——这就导致日志根本没通过你配置的TCP通道发送到Logstash!

修改root节点的引用:

<root level="INFO">
    <appender-ref ref="logstash2" />
</root>

2. 调整Logstash配置,正确解析JSON日志

你的Logback已经用LoggingEventCompositeJsonEncoder输出了标准的JSON格式日志,但Logstash配置里却在用grok去解析传统文本日志,完全没处理JSON结构。咱们把Logstash的配置改成直接解析JSON:

修改后的config.json:

input {
  tcp {
    port => 5000
    host => "localhost"
    codec => json_lines  # 核心:告诉Logstash每行都是JSON格式
  }
}

filter {
  # 不需要grok了!直接用date插件把日志里的timestamp转成Elasticsearch标准的@timestamp
  date {
    match => ["timestamp", "ISO8601"]
    target => "@timestamp"
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    # 给日志指定一个清晰的索引名,方便Kibana识别
    index => "spring-boot-app-logs-%{+YYYY.MM.dd}"
  }
  # 可选:添加stdout输出,方便你在Logstash控制台调试看解析结果
  stdout {
    codec => rubydebug
  }
}

3. 验证与收尾

  • 重启你的Spring Boot应用和Logstash服务
  • 触发一些日志输出(比如调用接口、启动应用)
  • 打开Kibana:
    1. 先创建匹配spring-boot-app-logs-*的索引模式
    2. 进入Discover页面,就能看到severity、service、trace等字段都变成结构化的了,完全符合你想要的展示效果!

你的Logback编码器配置其实是没问题的,已经把各个字段封装成了标准JSON,只要Logstash正确解析,Elasticsearch就能存储结构化数据,Kibana自然就能正常展示啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:31:14