IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringBoot集成Skywalking分布式服务调用链路追踪 -> 正文阅读

[Java知识库]SpringBoot集成Skywalking分布式服务调用链路追踪

一、Skywalking概述

1、Skywalking介绍

官网:博客 | Apache SkyWalking

Skywalking是一个国产的开源框架,2015年有吴晟个人开源,2017年加入Apache孵化器,国人开源的产品,主要开发人员来自于华为,2019年4月17日Apache董事会批准SkyWalking成为顶级项目,支持Java、.Net、NodeJs等探针,数据存储支持Mysql、Elasticsearch等,跟Pinpoint一样采用字节码注入的方式实现代码的无侵入,探针采集数据粒度粗,但性能表现优秀,且对云原生支持,目前增长势头强劲,社区活跃。
Skywalking是分布式系统的应用程序性能监视工具,专为微服务,云原生架构和基于容器(Docker,K8S,Mesos)架构而设计,它是一款优秀的APM(Application Performance Management)工具,包括了分布式追踪,性能指标分析和服务依赖分析等。

2、Skywalking架构图

?¨è?é??¥????è?°

整个架构,分成上、下、左、右四部分

①、上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking ②、Agent 收集 SkyWalking Tracing 数据,传递给服务器。
下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
③、右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
④、左部分 SkyWalking UI :负责提供控台,查看链路等等。

基于各种语言的Agent探针来收集服务数据,然后展示采集的数据;

多种监控手段,可以通过语言探针和service mesh获得监控的数据;
支持多种语言自动探针,包括java,.NET Core和Node.JS;
轻量高效,无需大数据平台和大量的服务器资源;
模块化,UI、存储、集群管理都有多种机制可选;
支持告警;
优秀的可视化解决方案;

3、下载,各种语言的Agent都有

下载Skywalking服务

?下载监控JavaAgent.

这里下载Java语言的最新版本的.

①、源码下载阅读

?Github地址

?4、微服务开发中解决一下问题

①、如何串联整个调用链路,快速定位问题?单纯看日志?
②、如何澄清各个微服务之间的依赖关系?
③、如何进行各个微服务接口的性能分析?
④、如何追踪各个业务流程的调用处理顺序?

二、Skywalking启动

1、启动脚本?

如果出现启动问题,看日志具体解决.

2、配置文件

Skywalking基于JAVA SpringBoot框架开发,默认端口是8080,可以在启动时候自己指定修改.

默认使用的存储数据库是H2,可以修改为MySQL和ES,在配置文件中灵活配置.

3、启动skywalking

在IDEA中添加一下地址信息

-javaagent:D:\skywalking\skywalking-agent\skywalking-agent.jar -Dskywalking.agent.service_name=skywalking-service -Dskywalking.collector.backend_service=127.0.0.1:11800

?配置项说明:

-javaagent:用于指定探针路径(就是agent下skywalking-agent.jar包存放的绝对路径)

-Dskywalking.agent.service_name:用于重写agent/config/agent.config?配置文件中的服务名

-Dskywalking.collector.backend_service:用于重写agent/config/agent.config配置文件中的服务地址

对于Tomcat的部署项目在catalina.sh中添加即可,spring boot项目中在nohub启动脚本中添加。

?agent位置.

agent不要单独copy到一个目录,否则加载不到config配置类就包如下错了

Failed to read the config file, skywalking is going to run in default config.

?正确加载应该是这样.

三、监控指标查看

?1、查看拓扑图

2、监控项

?

?3、事件ID

?4、追踪

5、性能剖析?

?6、告警

使用经验:一般搭建集群使用域名单独部署、agent脚本等代码统一管理、使用ES集群存储数据,也有包装了业界的给一个appid,统一管理链路追踪,对业务的侵入性较低,可以配置一些告警,辅助业务定位疑难问题使用,对于多环境比如sit\alpha\prod等注意区分即可,还有使用公有云的自研包装的APM探针工具采集信息的,基本都是一样的原理,熟悉skywalking后看一下文档就立马上手了,也有一些监控组件有功能重合,skywalking更擅长链路追踪,便于定位问题。

四、Skywalking的探针原理

1、Java探针技术类型
? ? ? ? (1)在主程序之前运行的Agent.

? ? ? ? (2)在主程序之后运行的Agent.

? ? ? 在实际使用过程中,javaagent是java命令的一个参数。通过java 命令启动我们的应用程序的时候,可通过参数 -javaagent 指定一个 jar 包(也就是我们的代理agent),能够实现在我们应用程序的主程序运行之前来执行我们指定jar 包中的特定方法,在该方法中我们能够实现动态增强Class等相关功能,并且该 jar包有2个要求:
<1> 这个 jar 包的 META-INF/MANIFEST.MF 文件必须指定 Premain-Class 项,该选项指定的是一个类的全路径.
<2> Premain-Class 指定的那个类必须实现 premain() 方法。META-INF/MANIFEST.MF文件内容如下

2、Skywalking的探针文件如下

Manifest-Version: 1.0
Created-By: Apache Maven 3.6.1
Built-By: wusheng
Build-Jdk: 11.0.13
Specification-Title: apm-agent
Specification-Version: 8.10
Specification-Vendor: The Apache Software Foundation
Implementation-Title: apm-agent
Implementation-Version: 8.10.0
Implementation-Vendor-Id: org.apache.skywalking
Implementation-Vendor: The Apache Software Foundation
Implementation-URL: http://maven.apache.org
Can-Redefine-Classes: true
Can-Retransform-Classes: true
Premain-Class: org.apache.skywalking.apm.agent.SkyWalkingAgent

拉下来源码看一下,IDEA导入一下即可.

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:01:38  更:2022-10-22 21:05:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/30 13:32:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码