skywalking服务追踪

服务追踪

产生背景

在微服务系统中,随着业务的发展,系统会变得越来越大,那么各个服务之间的调用关系也就变得越来越复杂。一个 HTTP 请求会调用多个不同的微服务来处理返回最后的结果,在这个调用过程中,可能会因为某个服务出现网络延迟过高或发送错误导致请求失败,这个时候,对请求调用的监控就显得尤为重要了。Spring Cloud Sleuth 提供了分布式服务链路监控的解决方案。下面介绍 Spring Cloud Sleuth 整合 Zipkin 的解决方案。

分布式服务追踪系统优点

1.RPC远程调用过程中,服务与服务依赖的关系非常复杂,A调用B服务,B服务C服务 如果某个服务出现问题可能会导致整个链响应延迟;

2.如果服务的依赖关系非常复杂,建议改成MQ异步的形式。

服务追踪常用框架

\1. Sleuth +Zipkin SpringCloud封装了 Sleuth +Zipkin

\2. 阿里的鹰眼系统

\3. Skywalking(非常推荐大家使用 功能非常强大)---Skywalking

Sleuth+Zipkin

1.Spring Cloud Sleuth实现了一种分布式的服务链路跟踪解决方案,通过使用Sleuth可以让我们快速定位某个服务的问题。

2.官方文档地址如下:https://cloud.spring.io/spring-cloud-static/spring-cloud-sleuth/2.0.1.RELEASE/single/spring-cloud-sleuth.html

服务追踪常见名词

1.Sleuth可以结合Zipkin可以实现界面化的形式管理我们接口依赖信息;

2.Sleuth 每一次RPC远程调用请求都会生成一个spanid记录每一次rpc请求的信息,还有一个traceid 全局唯一id;

3.spanid为请求单元ID、traceid 为请求链全局id

skyWalking

SkyWalking是一个开源的观测平台,用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据,SkyWalking 提供了一种简便的方式来清晰地观测分布式系统,甚至可以观测横跨不同云的系统,SkyWalking 更像是一种现代的应用程序性能监控(Application Performance Monitoring,即APM)工具,专为云原生,基于容器以及分布式系统而设计。

skywalking架构原理

在整个skywalking的系统中,有四个角色:

1.skywalking agent和业务系统关联在一起,负责收集各种监控数据;

2.oapservice是负责处理监控数据的,比如接受skywalking agent的监控数据,并存储在数据库中(例如elasticsearch、mysql中等);接受skywalking webapp的前端请求,从数据库查询数据,并返回数据给前端。,Skywalking oapservice通常以集群的形式存在;

3.skywalking webapp,前端界面,用于展示数据;

4.用于存储监控数据的数据库,比如mysql、elasticsearch等

skywalking 底层原理

1.springboot项目启动的时候 是不需要引入任何的jar包,

2.启动springboot项目被skywalking skywalking-agent.jar 拦截

3.将rpc请求数据 发送给我们的skywalking oapservice接口项目

4.连接到我们的skywalking webapp项目展示数据

5.数据最终是可以持久化存放在 db或者es中。

skywalking 环境安装

下载apache-skywalking-apm-6.5.0.tar安装包

\2. 进入到bin目录(直接双击启动startup.bat)

\3. 启动启动oapService和我们的webappService

\4. 查看管理界面http://127.0.0.1:8080/

agent 里面 skywalking-agent.jar 代理 springboot应用程序

springboot实现监控

创建一个springboot项目

\2. 将该springboot项目打成jar包 mvn package

\3. java -javaagent:skywalking-agent.jar路径 -jar springboot jar包

范例:

D:\path\cloud\apache-skywalking-apm-6.5.0\apache-skywalking-apm-bin\agent>java -javaagent:D:\path\cloud\apache-skywalking-apm-6.5.0\apache-skywalking-apm-bin\agent\skywalking-agent.jar -jar D:\path\cloud\apache-skywalking-apm-6.5.0\apache-skywalking-apm-bin\agent\mayikt-thymeleaf-1.0-SNAPSHOT.jar

访问测试springboot接口

skywalking页面最终显示

为了避免skywalking 展示数据延迟问题,建议 将自动刷新改为1-3s

大家在演示效果的过程中,如果没有任何数据 注意:手动点击

SkyWalking数据持久化

SkyWalking 默认是将数据存入在内存中,如果重启SkyWalking 数据则都会丢失。

我们可以选择将数据持久化存放在mysql、es中等。

1.数据可以持久化在mysql、es中等。

修改config下的application.yml

修改为mysql

复制代码
selector: ${SW_STORAGE:mysql}

  mysql:
   properties:
     jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/skywalking?serverTimezone=UTC&characterEncoding=utf-8"}
     dataSource.user: ${SW_DATA_SOURCE_USER:root}
     dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root}
     dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
     dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
     dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
     dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
   metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}

修改完毕创建skywalking数据库

2.需要在oap-libs/ 放入 mysql-connector-java-8.0.16.jar

3.重启SkyWalking

自动创建表

相关推荐
IT毕设实战小研6 分钟前
基于大数据的跨国外派人员适应满意度与留存影响因素可视化分析
android·java·大数据·python·django·课程设计
letisgo59 分钟前
JAVA 高级进阶10篇《消息队列实战:RocketMQ/Kafka选型与“不丢不重有序“三连解》
java·面试·kafka·消息队列·rocketmq
2401_8504811714 分钟前
UVA101
java
Lyyaoo.24 分钟前
【回溯】【中等】全排列
java·数据结构·算法
xixingzhe224 分钟前
spring boot对接Dify
java·spring boot·dify
数据狐(Datafox)27 分钟前
京东商品详情API接口解析(附 JSON 样例)
java·开发语言·json
步行cgn29 分钟前
Spring Boot 指定数据来源详解
spring boot·后端·python
Wang's Blog31 分钟前
Java框架快速入门: Spring Security+OAuth2之深度定制UserDetailsService与密码无缝升级
java·开发语言·spring
土司大王36 分钟前
LeetCode 79 单词搜索:Java 回溯模板、网格 DFS 与剪枝优化
java·算法·leetcode·深度优先
白远山39 分钟前
智慧场馆解决方案小程序系统开发实战与架构设计指南
java·开发语言·小程序·架构