【springcloud】快速搭建一套分布式服务springcloudalibaba(五)_spring cloud alibaba kibana
第五篇 基于nacos搭建分布式项目 分布式系统日志(skywalking+es)
项目所需 maven + nacos + java8 + idea + git + mysql + redis + skywalking + es
本文主要从客户下单时扣减库存的操作,将链路日志模拟出来,网关系统/用户系统/商品系统/订单系统
上文只介绍了skywalking的使用,使用的默认配置与h2存储,本文补充为es查询。
基于nacos搭建分布式项目 分布式系统日志
- es与kibana
-
- 版本建议
- 配置信息
-
- es
- kibana
- 启动验证
- skywalking 配置更改es存储
-
- 重启前需要先关闭之前启动的skywalking
- 启动命令
- 校验是否与es建立连接
-
- 第一步(检查skywalking与es连接)
- 第二步(查看有没有自动创建es索引)
- 第三步(启动所有项目)
-
- 验证
- 第四步(查看日志有没有存储到es)
- 第五步(查看skywalking页面是否正常)
- 结尾
es与kibana
安装与配置本文就不写了,往上都有,需要注意的是版本使用问题。
本文使用的6.8.23
版本建议
-
Elasticsearch 5.x 和 6.x 版本与 Java 8 兼容性最好
-
Elasticsearch 7.x 需要 Java 11+,但某些早期 7.x 版本仍支持 Java 8
-
kibana与es版本保持一致即可
# 检查系统架构uname -mwget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.23.tar.gzwget https://artifacts.elastic.co/downloads/kibana/kibana-6.8.23-linux-x86_64.tar.gz
配置信息
es
需要修改的信息
/opt/elasticsearch/config/elasticsearch.ymlnetwork.host: 0.0.0.0
kibana
需要修改的信息
/opt/kibana/config/kibana.ymlserver.port: 5601server.host: \"0.0.0.0\"elasticsearch.hosts: [\"http://localhost:9200\"]kibana.index: \".kibana\"
启动验证
http://192.168.99.104:9200http://192.168.99.104:5601
skywalking 配置更改es存储
重启前需要先关闭之前启动的skywalking
# 第一步先删除上一次的日志信息 方便排查启动问题cd /youfileName/apache-skywalking-apm-bin/logsrm -rf skywalking-oap-server.log# 修改配置文件vim /youfileName/apache-skywalking-apm-bin/config/application.yml# 默认为h2 修改为elasticsearch 默认配置中的端口都是配置好的,如果你修改了es的用户名和密码 记得修改!selector: ${SW_STORAGE:elasticsearch}
启动命令
因为上次已经启动部署过了,没有关闭。修改配置文件需要先关闭重启。如果直接重启配置文件不会生效。
# 先查看有没有 skywalking 的程序在跑ps aux | grep -i \'skywalking\'# 关闭所有关于skywalking的应用sudo pkill -f \'skywalking\'# 重新启动sh ./oapService.sh SkyWalking OAP started successfully!原神,启动!!!
校验是否与es建立连接
第一步(检查skywalking与es连接)
cd /youfielName/apache-skywalking-apm-bin/logscat skywalking-oap-server.log# 看看日志中有没有获取到es版本信息2025-06-15 15:14:40,077 - org.apache.skywalking.library.elasticsearch.ElasticSearch - 146 [armeria-eventloop-epoll-4-2] INFO [] - ElasticSearch version is: ElasticSearch 6.8
第二步(查看有没有自动创建es索引)
curl http://192.168.99.104:9200/_cat/indices?v# 默认情况下 skywalking会在es中创建sw_log-20250615 看查询出来的索引信息中有没有 http://192.168.99.104:9200/sw_log-*/_mapping?pretty# 查看skywalking索引有没有创建成功
第三步(启动所有项目)
这里我演示的是客户下单时扣减库存的操作,启动之后请求登陆然后下单。
# 这个是order服务请求http://192.168.99.104:8070/order/goods/get?productId=1
TID: [SegmentId].[SpanId].1753877514
TID:af7d7480fd8a4f4eb1273b0949ce11b6.58.17499719070320001 这个就是skywalking默认注入的tid,同一链路会通过请求头传递
-
SegmentId:唯一标识一个服务实例的调用链段
-
SpanId:标识当前调用环节在调用链中的位置
-
Timestamp:纳秒级时间戳
验证
order-service 在8070
goods-service在8090
第四步(查看日志有没有存储到es)
GET /sw_log-20250615/_search?scroll=1m&pretty{ \"size\": 100, \"query\": { \"match_all\": {} }}
第五步(查看skywalking页面是否正常)
通过同一链路id可以查询到当前链路下的所有日志
小结
之后楼主会解锁更多适合初学者关于分布式系统的文章,更新自己的技术库,如果有不明白的欢迎评论留言,这里谢谢大家阅读。
结尾
第一篇快速部署一套分布式服务
第二篇 基于nacos搭建分布式项目 网关
第三篇 搭建分布式项目 分布式事务(分布式锁+事务)
第四篇 搭建分布式项目日志 skywalking初体验
希望本文可以帮到你。