当前位置: 首页 > 科技观察

Skywalking分布式链接跟踪简介

时间:2023-03-12 11:58:50 科技观察

今天给大家介绍一款分布式链接跟踪软件。为什么引入链接跟踪?互联网行业蓬勃发展,业务也变得越来越复杂和庞大。独立应用程序不再可能。为了满足日常需求,分布式和微服务架构应运而生。在微服务环境下,日常系统的层层调用,会在各个服务中不断进行。如果没有完整的通话链路记录,问题的排查难度会很大。APM(ApplicationPerformanceManagement)针对上述情况,apm为大家带来了解决方案。目前业界常见的一些APM工具主要有:Cat、Zipkin、Pinpoint、SkyWalking。本文主要介绍SkyWalking,它是一款优秀的国产APM工具,已经成为Apache基金会的顶级项目。包括分布式追踪、性能指标分析、应用和服务依赖分析等。skywalking入门软件的安装就不介绍了,大家可以自行查资料。官方地址:https://skywalking.apache.org/先来看看软件的运行界面。下图介绍了skywalking中的三个重要概念。服务(Service):指服务集群端点(Endpoint):对外接口实例(Instance):指集群中的实例Skywalking架构图。Skywalking可以算是三大块。第一块是数据采集,第二块是skywalking服务,第三块是数据存储。如何将项目连接到skywalking?skywalking的接入非常简单,只需要指定java启动参数即可,如下图//指定运行的javaagent-javaagent:D:\soft\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar//设置程序,名字在skywalking-Dskywalking.agent.service_name=stressTest//skywalking管理端口-Dskywalking.collector.backend_service=localhost:11800skywalking原理可以看上面的应用案例,有以下代码-javaagent:/path/to/skywalking-agent.jar如果你知道javaagent,你就会知道。其实skywalking的原理就是使用java代理(javaprobe)。Java代理是java命令的一个参数。参数javaagent可以用来指定一个jar包。这个jar包的MANIFEST.MF文件必须指定Premain-Class项。Premain-Class指定的类必须实现premain()方法。Java虚拟机启动时,在执行main函数之前,JVM会先运行-javaagent指定的jar包中类PremainClass的premain方法。自己实现Javaagent接下来我们简单写一个javaagent代理代码*inst是java.lang.instrument.Instrumentation的一个实例,由JVM自动传入。*/publicstaticvoidpremain(StringagentArgs,Instrumentationinst){System.out.println("=========premain方法执行1========");System.out.println(agentArgs);}/***如果premain(StringagentArgs,Instrumentationinst)*不存在,premain(StringagentArgs)*/publicstaticvoidpremain(StringagentArgs){System.out.println("=========premain方法执行2========");System.out.println(agentArgs);}}为了不用手动写MANIFREST.MF文件,引入了maven插件org.apache。maven.pluginsmaven-jar-plugin3.1.0truecom.example.agent.PreMainAgent执行mvncleanpackage打包程序会得到如下图的myAgent.jar来编写主程序publicclassTest{publ集成电路aticvoidmain(String[]args){System.out.println("Mainprogram...");}}idea启动时指定agent,执行主程序如下图:=========premain方法Execute1========nullmainprogram...mainprogram...可以看到执行了premain方法,没有传入任何参数,如果需要传入参数,javagent属性可以这样设置:-javaagent:/Users/ganhuojun/code/myagent/target/myAgent.jar=abc

猜你喜欢