草庐IT

SkyWalking

Levi丶 2023-03-28 原文

APM系统

  1. APM (Application Performance Management) 即应用性能管理系统,APM系统是可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题。它主要有三个方面的内容,分别是 Logs(日志)、Traces(链路追踪) 和 Metrics(报表统计)。以后大家接触任何一个 APM 系统的时候,都可以从这三个方面去分析它到底是什么样的一个系统。

分布式链路追踪(SkyWalking)

  1. 官网
  2. 整体架构包含如下三个组成部分:
    2.1 探针(agent)负责进行数据的收集
    2.2 可观测性分析平台OAP(Observability Analysis Platform),接收探针发送的数据,将数据存储到对应的存储介质上,比如ES、MySQL、H2数据库等
    2.3 SkyWalking会提供单独的UI进行数据的查看,UI会调用OAP提供的接口


    SkyWalking-配置
SkyWalking-UI
  1. SkyWalking日志框架的使用
    3.1 引入POM
        <!-- SkyWalking对 Logback 的集成 -->
        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-logback-1.x</artifactId>
            <version>6.6.0</version>
        </dependency>
        <!-- SkyWalking工具类 -->
        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-trace</artifactId>
            <version>6.6.0</version>
        </dependency>

3.2 代码示例


示例代码

3.3 UI效果图


请求链路

日志链路

3.4 如何将链路ID记录到项目日志平台中去


修改日志配置
2022-09-19 10:21:51.521  INFO 18611 TID:22.37.15782305114330001 --- [nio-8079-exec-1] c.i.s.l.s.controller.DemoController      : 测试日志

根据链路ID查询日志
  1. SkyWalking其他功能
    4.1 SkyWalking也支持其他组件的链路追踪,例如Spring MVC,Dubbo,MySQL,Redis,MongoDB,ES,RabbitMQ等,代码是无侵入的,只需要引入SkyWalking的依赖和配置即可,这里不再举例。
  1. java agent(探针)
    5.1 探针的优势:不修改原有项目一行代码就可以进行集成。SkyWalking服务挂了也不会影响到业务
package org.apache.skywalking.apm.toolkit.trace;

public class TraceContext {
    public TraceContext() {
    }

    //获取链路ID的方法
    //SkyWalking探针会对这个方法做增强,在项目运行时,会返回链路ID
    //如果SkyWalking挂了,那么这个获取链路ID的方法就会直接返回空字符串,当前业务不会因为SkyWalking挂了而导致报错
    public static String traceId() {
        return "";
    }
}

5.2 如何实现一个简单的探针。例如在没有修改代码的情况下,利用java agent统计项目中所有方法的耗时,SkyWalking也是基于这些技术来实现链路追踪的。

        <dependency>
            <groupId>net.bytebuddy</groupId>
            <artifactId>byte-buddy</artifactId>
            <version>1.9.2</version>
        </dependency>
        <dependency>
            <groupId>net.bytebuddy</groupId>
            <artifactId>byte-buddy-agent</artifactId>
            <version>1.9.2</version>
        </dependency>
    public static void premain(String agentArgs, Instrumentation inst) {
        //创建一个转换器,转换器可以修改类的实现
        //ByteBuddy对java agent提供了转换器的实现,直接使用即可
        AgentBuilder.Transformer transformer = new AgentBuilder.Transformer() {
            public DynamicType.Builder<?> transform(DynamicType.Builder<?> builder, TypeDescription typeDescription, ClassLoader classLoader, JavaModule javaModule) {
                return builder
                        // 拦截任意方法
                        .method(ElementMatchers.<MethodDescription>any())
                        // 拦截到的方法委托给TimeInterceptor
                        .intercept(MethodDelegation.to(MyInterceptor.class));
            }
        };
        new AgentBuilder // Byte Buddy专门有个AgentBuilder来处理Java Agent的场景
                .Default()
                // 根据包名前缀拦截类
                .type(ElementMatchers.nameStartsWith("com.levi"))
                // 拦截到的类由transformer处理
                .transform(transformer)
                .installOn(inst);
    }
}
public class MyInterceptor {

    @RuntimeType
    public static Object intercept(@Origin Method method, @SuperCall Callable<?> callable) throws Exception {
        long start = System.currentTimeMillis();
        try {
            //执行原方法
            return callable.call();
        } finally {
            //打印调用时长
            System.out.println(method.getName() + ":" + (System.currentTimeMillis() - start) + "ms");
        }
    }
}
  • VM设置 -javaagent:C:\Users\Administrator\agent-demo.jar


    VM设置
  • 运行结果


    运行结果

有关SkyWalking的更多相关文章

  1. centos 安装 最新版 skywalking 8.9.1 - 2

    一、相关网址1、官网(可以下载,查看文章)https://skywalking.apache.org/downloads/2、github地址:(可提问题寻求帮助)https://github.com/apache/skywalking二、 实验环境操作系统 centos7.9先安装好 elasticsearch7.16.2操作系统安装好jdk8-17,实验机器jdk11java下载地址:https://www.oracle.com/java/technologies/downloads/#java8IP地址为192.168.24.160三、安装skywalking 1、下载skywalkin

  2. skywalking了解及搭建使用 - 2

    skywalking了解及搭建使用SkyWalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8S、Mesos)架构而设计SkyWalking是观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案SkyWalking组成Agent:负责从应用中,收集链路信息,发送给SkyWalkingOAP服务器。目前支持SkyWalking、Zikpin、Jaeger等提供的Tracing数据信息。而我们目前采用的是,SkyWalkingAgent收集SkyWalkingTracing数据,传递给服务器。SkyWal

  3. 基于Docker和ES存储的Skywalking部署 - 2

    文章目录一、ES的Docker部署二、Kibana:ES可视化部署三、服务端skywalking-oap部署四、可视化skywalking-ui部署五、Java应用引入agent5.1agent下载与配置5.2jar包启动带agent命令5.3在skywalking-ui查看监测内容一、ES的Docker部署#下载es镜像dockerpullelasticsearch:6.8.12#启动es镜像dockerrun--restart=always-p9200:9200-p9300:9300-e"discovery.type=single-node"-eES_JAVA_OPTS="-Xms512m

  4. skywalking测试环境部署实战 - 2

    skywalking测试环境部署实战一、skywalking组成探针(agent)agent会被安装到服务所在的服务器上,负责进行数据的收集,并向oap发送收集的数据。可观测性分析平台OAP(ObservabilityAnalysisPlatform)接收探针发送的数据进行整合运算,然后将数据存储到对应的存储介质上,比如Elasticsearch、MySQL等存储服务。OAP默认监听两个端口gRPC协议端口11800、HTTP端口12800,gRPC用于探针上报数据,HTTP端口用于UI连接OAP平台获取数据。SkywalkingUISkywalking提供单独的UI进行数据的查看,UI调用O

  5. Rocketmq、Rabbitmq、Kafka、Mongo、Elasticsearch、Logstash、Kibana、Nacos、Skywalking、Seata、Spark、Zookeeper安装 - 2

    提示:宝塔面板安装docker/docker-compose,一条命令搞定rabbitmq的安装与配置文章目录前言一、docker-compose.yml配置二、安全组规则添加端口三、通过浏览器访问rabbitmq的管控页面四、提供其他项目依赖总结前言已经安装好了宝塔面板、并且可以在Docker栏目,选择docker安装,会把docker和docker-compose都安装好了一、docker-compose.yml配置在任意一个目录下创建并编辑vimdocker-compose.yml配置粘贴version:'3.8'services:rabbitmq:image:rabbitmq:3.7.

  6. Docker快速搭建SkyWalking[ OAP & UI[登录] & Elasticsearch] - 2

    文章目录[前置]:搭建ELasticsearch相关[零]:虚拟机开放SkyingWalking和ES相关端口[一]:拉取SkyWalking-oap和SkyWalking-ui镜像[二]:运行SkyWalking的oap和ui容器2.1-运行Skywalking-oap容器----注意oap运行参数异常noproviderfoundformodulestorage2.2-运行SkyWalking-UI容器>2.2.1注意如果异常-eSW_OAP_ADDRESS=192.168.56.101:12800改为-eSW_OAP_ADDRESS=http://192.168.56.101:12800

  7. Skywalking使用篇(三):性能剖析 - 2

    简介在系统性能监控方法上,Skywalking提出了代码级性能剖析这种在线诊断方法。这种方法基于一个高级语言编程模型共性,即使再复杂的系统,再复杂的业务逻辑,都是基于线程去进行执行的,而且多数逻辑是在单个线程状态下执行的。代码级性能剖析就是利用方法栈快照,并对方法执行情况进行分析和汇总。并结合有限的分布式追踪span上下文,对代码执行速度进行估算。优势精确的问题定位,直接到代码方法和代码行无需反复的增删埋点,大大减少了人力开发成本不用承担过多埋点对目标系统和监控系统的压力和性能风险按需使用,平时对系统无消耗,使用时的消耗稳定可能​使用步骤使用工程Live-Demo工程中projectB项目修改

  8. skywalking的那些配置参数 - 2

    storage.elasticsearch.bulkActions文档:Asyncbulksizeoftherecorddatabatchexecution.源码://org.apache.skywalking.library.elasticsearch.bulk.BulkProcessorpublicCompletableFutureVoid>add(UpdateRequestrequest){returninternalAdd(request);}@SneakyThrowsprivateCompletableFutureVoid>internalAdd(Objectrequest){req

  9. Docker安装SkyWalking并监控Java程序 - 2

    安装环境安装Skywalking可以采用H2存储数据或者ElasticSearch存储,这里采用ElasticSearch存储,采用OAP处理数据,并基于SkywalkingUI展示数据。因为安装ElasticSearch的要求比较高建议内存在2G以上配置列表硬件虚拟机配置:2C4G操作系统:CentOS7.664bitdocker版本:20.10.5软件ElasticSearch7.12.1Skywalking-OAP8.6.0-es7SkywalkingUI8.6.0安装ElasticSearch7Skywalking可以选择H2存储,也就是内存存储,但是做demo可以,在正式使用时还是使

  10. 基于Docker实现Skywalking安装 - 2

    基于Docker实现Skywalking安装1安装分析安装Skywalking可以采用H2存储数据或者ElasticSearch存储,我们这里采用ElasticSearch存储,采用OAP处理数据,并基于SkywalkingUI展示数据,所以安装的服务有多个:ElasticSearch7安装Skywalking-OAP安装SkywalkingUI2ElasticSearch7安装Skywalking数据存储方式有2种,分别为H2(内存)和elasticsearch,如果数据量比较大,建议使用后者,工作中也建议使用后者。安装ElasticSearch可以安装ElasticSearch6或者Ela

随机推荐