SkyWalking分布式链路追踪学习

为什么要用分布式链路追踪

实际生产中,面对几十个、甚至成百上千个的微服务实例,如果一旦某个实例发生宕机,如果不能快速定位、提交预警,对实际生产造成的损失无疑是巨大的。所以,要对微服务进行监控、预警,对微服务的调用链路进行监控,迅速定位问题

分布式链路追踪框架

Skywalking分布式链路追踪


SkyWalking下载

SkyWalking官网

elasticsearch下载

SkyWalking在GitHub的仓库

SkyWalking安装使用 Windows使用教程、Centos 7使用教程

SkyWalking 搭建及简单使用

apache-skywalking-apm-6.6.0版本适合入门,一般可以直接点击进行启动,不需要进行其他配置,分布式链路追踪跨服务请求对请求工具有一定要求,如果是原生HttpConnection可能无法正常被skywalking追踪,可以将skywalking通过自身的配置注册到微服务注册中心

skywalking安装

1.下载skywalking6.6,这个版本适合入门

2.解压apache-skywalking-apm-6.6.0.tar.gz

修改这个文件夹下的文件webapp.yml文件默认端口,默认为8080

3.改为18120

复制代码
server:
  port: 18120

collector:
  path: /graphql
  ribbon:
    ReadTimeout: 10000
    # Point to all backend's restHost:restPort, split by ,
    listOfServers: 127.0.0.1:12800

4.返回bin目录,直接点startup.bat启动

注意没有配置MySQL、es等,不能持久化存储

MySQL数据存储需要将connector-java-5.1.49.jar包放在oap-libs目录下即可

启动idea部署探针

只使用springboot项目就行,在启动时配置一下启动参数就可以部署探针,不用专门去打jar包运行,如果是已经打了jar包的,给jar包指定启动参数就行了

编辑配置

-javaagent:E:\Z00Packages\DevelopTools\Others\apache\skywalking\apache-skywalking-apm-6.6.0\apache-skywalking-apm-bin\agent\skywalking-agent.jar

-Dskywalking.agent.service_name=service-admin

-Dskywalking.collector.backend_service=localhost:11800

-javaagent:用于指定探针路径

-Dskywalking.agent.service_name:用于重写 agent/config/agent.config 配置文件中的服务名,名称是自定义的

-Dskywalking.collector.backend_service:用于重写 agent/config/agent.config 配置文件中的服务地址,端口是grpc默认端口11800

按照这个方法对项目进行部署,然后启动项目,项目的探针就部署好了,这个时候可以去看项目拓扑图

运行jar方式部署探针

将上面部署的参数给jvm赋值一下就行了

jar -jar 参数 jar包

链路请求追踪截图

仪表盘

拓扑图

追踪

告警

获取skywalking的traceid

引入依赖

xml 复制代码
 <!-- https://mvnrepository.com/artifact/org.apache.skywalking/apm-toolkit-trace -->
        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-trace</artifactId>
            <version>6.5.0</version>
        </dependency>

使用TraceContext获取traceId

复制代码
import org.apache.skywalking.apm.toolkit.trace.TraceContext;
String traceId = TraceContext.traceId();  
相关推荐
毕设源码-郭学长7 分钟前
【开题答辩全过程】以 某某协会管理与展示平台为例,包含答辩的问题和答案
java
若水不如远方8 分钟前
分布式一致性(六):拥抱可用性 —— 最终一致性与 Gossip 协议
分布式·后端·算法
多云的夏天13 分钟前
docker容器部署-windows-ubuntu
java·docker·容器
庞轩px21 分钟前
内存区域的演进与直接内存——JVM性能优化的权衡艺术
java·jvm·笔记·性能优化
编码忘我36 分钟前
java多线程安全集合
java
悟空码字41 分钟前
滑块拼图验证:SpringBoot完整实现+轨迹验证+Redis分布式方案
java·spring boot·后端
编码忘我42 分钟前
java类加载器及tomcat为什么不用双亲委派
java
MegaDataFlowers1 小时前
快速上手Spring
java·后端·spring
小江的记录本1 小时前
【MyBatis-Plus】Spring Boot + MyBatis-Plus 进行各种数据库操作(附完整 CRUD 项目代码示例)
java·前端·数据库·spring boot·后端·sql·mybatis
左左右右左右摇晃1 小时前
Java 笔记--OOM产生原因以及解决方法
java·笔记