精华内容
参与话题
问答
  • SkyWalking

    2019-12-07 10:06:50
    SkyWalking SkyWalking 分布式追踪系统 标题

    SkyWalking

    SkyWalking 分布式追踪系统

    标题

    展开全文
  • skywalking

    2018-11-01 19:52:40
    链路追踪版本,主要针对官网下载的内容进行了整理,以便更好的导入idea
  • Skywalking的编译打包

    万次阅读 2020-06-23 16:08:51
    Skywalking作为一款优秀的开源APM监控系统,对于性能监控帮助挺大,去年开始我们自己就对这个开源的系统做了些改动和本地化的开发,改完后就会涉及到编译打包,现在我们从网上找到挺多这方面的文章,但是我那时候很...

           Skywalking作为一款优秀的开源APM监控系统,对于性能监控帮助挺大,去年开始我们自己就对这个开源的系统做了些改动和本地化的开发,改完后就会涉及到编译打包,现在我们从网上找到挺多这方面的文章,但是我那时候很少能搜到,所以当时摸索过程中踩了很多坑。现在我重新整理一下这方面的思路,并且做些简化,也参考了别人的方法:

    基础环境:

    jdk: 1.8
    maven: maven 3
    git: 版本随意

    IDE: intelliJ IDEA  (依个人习惯,我编译打包有时候根本没用到IDE,毕竟挺占内存的)

    另外不要用VPN翻墙,很多人以为翻墙会下载很快,但可能会导致编译失败。

    构建项目:

    本次构建的是Skywalking的master分支,对于当前来说应该相当于是 Skywalking 8.1.0 版。

    1. clone代码

    git clone https://github.com/apache/skywalking.git
    (1) 问题:clone代码失败,github在国外,连接太慢了。

    解决方法:

    一是配置加速器,通过改hosts文件;

    # 加速器配置hosts如下
    219.76.4.4 github-cloud.s3.amazonaws.com
    192.30.253.112 github.com
    151.101.185.194 github.global.ssl.fastly.net

    方法二是自己在码云https://gitee.com/ 开一个账号,也创建个skywalking项目,同时把上面skywalking源码链接同步到你的项目中(码云上也有官网的skywalking,不过不是最新的;为什么要用同步,而不用Fork,因为同步是强制更新最新的源码,简单粗暴)。然后git时换成gitee的链接去clone代码(国内的网站很快,如我的是https://gitee.com/smooth00/skywalking)。

    2. 执行git命令

    可以在IntelliJ IDEA打开Terminal命令窗口并输入命令,也可以直接在cmd下或是linux系统直接输命令。

    git submodule init
    
    git submodule update

    submodule update这一步非常关键,大部分错误出在这一步。以上命令就是为了获取skywalking子模块的源码,子模块包括apm-network、query-graphql-plugin、skywalking-ui、e2e-ttl-es,具体的依赖信息可查看根目录的 .gitmodules文件:

    [submodule "apm-protocol/apm-network/src/main/proto"]
    	path = apm-protocol/apm-network/src/main/proto
    	url = https://github.com/apache/skywalking-data-collect-protocol.git
    [submodule "oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol"]
    	path = oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol
    	url = https://github.com/apache/skywalking-query-protocol.git
    [submodule "skywalking-ui"]
    	path = skywalking-ui
    	url = https://github.com/apache/skywalking-rocketbot-ui.git
    [submodule "test/e2e/e2e-protocol/src/main/proto"]
    	path = test/e2e/e2e-protocol/src/main/proto
    	url = https://github.com/apache/skywalking-data-collect-protocol.git

    执行git submodule update报错,或是没有任何反应都是不行的。很多时候因为网络原因,update的文件不全,我们就需要重新执行update命令,执行前,需要删除上面.gitmodules对应的path目录,重新执行命令让它重新下载。比如编译到apm-network这一步报错,往往是因为apm-protocol/apm-network/src/main/proto下的文件缺失,所以重新执行命令下载。

    (当然还有个诀窍,就是手动去url链接的地址下载skywalking-data-collect-protocol的包,解压到对应path下也是可以的,这种方式可以避免因为网络而导致下载的问题)

    另外一个比较容易出问题的是前端ui代码的下载(skywalking-rocketbot-ui),网速不给力嘛,要么去手动下载,要么用clone代码的方式,用加速器或是直接同步到gitee再去下载(通过更改.gitmodules文件中的url也是一种方法)。

    3. 执行mvn命令

    可以用安装的mvn命令,也可以用skywalking源码中自带的mvnw命令(推荐用这个):

    # IDEA打开Terminal执行,或是进入到skywalking目录下执行
    # linux下执行
    ./mvnw clean package -DskipTests
    # windows下执行
    mvnw clean package -DskipTests
    
    # 第二次为了避免重复构建全部源码,可以对某个模块编译并打完整包
    # 编译 agent 包
    ./mvnw package -Pagent,dist
    # 编译 backend 包并且打完整包
    ./mvnw package -Pbackend,dist
    # 编译 UI 忽略Tests,并且打完整包
    ./mvnw package -Pui,dist -DskipTests

    这一步执行时间长短和网速有关系,编译全量需要20min~1h,编译一个模块2min~20min,编译到后面看到一个个的SUCCESS就表示成功了。

    最后会在dist目录下生成两个安装包:

    把其中一个包解开,就能看到我们所需要的安装启动文件:

    常见问题处理:

    1. 报maven-wrapper.jar错

    第一次执行mvnw clean package -DskipTests 一般会报以下错误:

    这是因为maven-wrapper.jar下载并拷贝到.mvn/wrapper下失败,把链接复制出来,手动去下载吧,下载后把maven-wrapper-x.x.x.jar文件,改名成maven-wrapper.jar,并拷贝到.mvn/wrapper目录下。

    2. 提示缺少部分类

    执行mvnw clean package -DskipTests失败,提示缺少部分类,例如缺少类KeyStringValuePair.java

    [ERROR] /Users/terry/Gits/agent/skywalking/skywalking-github/apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/trace/component/command/TraceIgnoreCommand.java:[39,48] 找不到符号
    [ERROR]   符号:   变量 KeyStringValuePair
    [ERROR]   位置: 类 org.apache.skywalking.apm.network.trace.component.command.TraceIgnoreCommand
    [ERROR] -> [Help 1]
    [ERROR] 
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR] 
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
    [ERROR] 
    [ERROR] After correcting the problems, you can resume the build with the command
    [ERROR]   mvn <goals> -rf :apm-network

    缺类的情况很常见,原因是因为前面提到的git submodule update没有更新到submodule,解决方法就是看报的哪个模块,比如这是报的apm-protocol/apm-network,到.gitmodules中找到对应模块源码的路径:

    删除对应的目录,重新 git submodule update,或者按前面说的方法,手动去下载源码吧。

    3. npm install报错:

    [ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.6:
    npm (npm install) on project apm-webapp: Failed to run task: 'npm install --
    registry=https://registry.npmjs.org/' failed. org.apache.commons.exec.ExecuteException:
     Process exited with an error: -4048 (Exit value: -4048) -> [Help 1]

    碰到这个错,很多人会想到是不是https://registry.npmjs.org/ 的问题,就想改成国内的https://registry.npm.taobao.org ,结果还是报错,其实只要这个网址是通的,就无所谓改成什么。之所以报错,就是前面提到git submodule update,这一步是UI的构建,不成功无非就是UI源码没下载好,或是node.exe没下载好,node的版本是由apm-webapp\pom.xml决定的:

                    <configuration>
                        <workingDirectory>${ui.path}</workingDirectory>
                        <nodeVersion>v8.17.0</nodeVersion>
                    </configuration>

    最重要的一点,还不是下载的问题,而是在npm install过程中下载node_modules的插件就出错了,所以UI的构建如果总是不成功,我们也可以独立出来,通过cnpm install也是可以的,关键是要能将vue.js编译生成dist文件:

    独立编译成的UI dist文件,也是可以放到apm-webapp中打包的,可以将上图dist中的文件拷贝到apm-webapp\target\classes\public下,然后修改apm-webapp\pom.xml,将npm install和build过程都注释了:

    这样就实现了独立构建的skywalking-ui结果文件放到整体包中一起打包(这样就忽略了skywalking-ui在构建时,因为网络原因导致整体打包被中断)。当然你也可以什么也不改,把skywalking-ui目录删除,多构建几次,可能也会成功。或都将上面的pom.xml文件进行修改,不用npm命令,改成用cnpm命令,可能也会成功。

    4. protoc调用错误

    新版本好像没有这个问题,老版本在初次执行mvnw clean package -DskipTests时会报错如下:

    这个错误一般在老版本,如6.6.0,第一次使用时会出现,现在我没发现有(应该已经集成了),如果出现可以按以下方式处理:

                 protoc-3.3.0-win32.zip
                 protobuf-java-3.3.0.zip

    • 将protoc-3.3.0-win32中的protoc.exe拷贝到c:\windows\system32和SysWOW64中
    • 将protoc.exe文件拷贝到解压后的protobuf-3.3.0\src目录中
    • protobuf-3.3.0\java 目录下执行mvn package命令编辑该包生成protobuf-java-3.3.0.jar文件(这一步相当于安装了)

    差不多就是这些了,如果遇到新的问题,应该也是可以归到以上几类(至少问题的原理是一样的)。一般我们是不推荐自己构建skywalking,毕竟官网一直在更新安装包,已经能满足大部分人的使用。

    展开全文
  • 环境搭建 安装下载部署 页面介绍 Agent 使用示例 实现原理

    什么是 SkyWalking
    SkyWalking 是观察性分析平台和应用性能管理系统。
    提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。官网介绍地址
    架构:
    在这里插入图片描述

    环境搭建

    安装下载部署

    1、下载
    地址:http://skywalking.apache.org/zh/downloads/
    在这里插入图片描述
    2、安装
    下载解压后目录如下:
    在这里插入图片描述
    不需要修改配置文件,在bin目录下执行startup.bat或startup.sh即可启动服务:
    在这里插入图片描述
    执行startup.bat之后会启动如下两个服务:
    (1)Skywalking-Collector:追踪信息收集器,通过 gRPC/Http 收集客户端的采集信息 ,Http默认端口 12800,gRPC默认端口 11800。
    (2)Skywalking-Webapp:管理平台页面 默认端口 8080,登录信息 admin/admin

    3、配置信息
    (1)收集器相关配置:支持 http/gRPC收集

    core:
      default:
        restHost: ${SW_CORE_REST_HOST:0.0.0.0}
        restPort: ${SW_CORE_REST_PORT:12800}
        restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/}
        gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0}
        gRPCPort: ${SW_CORE_GRPC_PORT:11800}
        downsampling:
        - Hour
        - Day
        - Month
        # Set a timeout on metric data. After the timeout has expired, the metric data will automatically be deleted.
        recordDataTTL: ${SW_CORE_RECORD_DATA_TTL:90} # Unit is minute
        minuteMetricsDataTTL: ${SW_CORE_MINUTE_METRIC_DATA_TTL:90} # Unit is minute
        hourMetricsDataTTL: ${SW_CORE_HOUR_METRIC_DATA_TTL:36} # Unit is hour
        dayMetricsDataTTL: ${SW_CORE_DAY_METRIC_DATA_TTL:45} # Unit is day
        monthMetricsDataTTL: ${SW_CORE_MONTH_METRIC_DATA_TTL:18} # Unit is month
    

    (2)收集信息存储:支持h2和 ES

    storage:
      h2:
        driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
        url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
        user: ${SW_STORAGE_H2_USER:sa}
    #  elasticsearch:
    #    # nameSpace: ${SW_NAMESPACE:""}
    #    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
    #    indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
    #    indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
    #    # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
    #    bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:2000} # Execute the bulk every 2000 requests
    #    bulkSize: ${SW_STORAGE_ES_BULK_SIZE:20} # flush the bulk every 20mb
    #    flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
    #    concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
    

    (3)可采集信息:jvm运行相关信息,zipkin追踪日志等。

    receiver-register:
      default:
    receiver-trace:
      default:
        bufferPath: ${SW_RECEIVER_BUFFER_PATH:../trace-buffer/}  # Path to trace buffer files, suggest to use absolute path
        bufferOffsetMaxFileSize: ${SW_RECEIVER_BUFFER_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
        bufferDataMaxFileSize: ${SW_RECEIVER_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
        bufferFileCleanWhenRestart: ${SW_RECEIVER_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
        sampleRate: ${SW_TRACE_SAMPLE_RATE:10000} # The sample rate precision is 1/10000. 10000 means 100% sample in default.
    receiver-jvm:
      default:
    #service-mesh:
    #  default:
    #    bufferPath: ${SW_SERVICE_MESH_BUFFER_PATH:../mesh-buffer/}  # Path to trace buffer files, suggest to use absolute path
    #    bufferOffsetMaxFileSize: ${SW_SERVICE_MESH_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
    #    bufferDataMaxFileSize: ${SW_SERVICE_MESH_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
    #    bufferFileCleanWhenRestart: ${SW_SERVICE_MESH_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
    #istio-telemetry:
    #  default:
    #receiver_zipkin:
    #  default:
    #    host: ${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0}
    #    port: ${SW_RECEIVER_ZIPKIN_PORT:9411}
    #    contextPath: ${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/}
    

    页面介绍

    访问地址:http://localhost:8080/

    1、首页:
    在这里插入图片描述
    2、调用关系
    在这里插入图片描述
    3、服务调用信息
    在这里插入图片描述
    4、追踪日志信息
    在这里插入图片描述

    Agent 使用示例

    Skywalking 采用 Java 探针技术(java agent 博客),对客户端应用程序没有任何代码侵入,使用起来简单方便,当然其具体实现就是需要针对不同的框架及服务提供探针插件。
    使用命令:

    java -javaagent:G:\github\incubator-skywalking\skywalking-agent\skywalking-agent.jar
    -Dskywalking.agent.service_name=test  -jar app.jar
    

    这样就可以完成对目前应用 app.jar 的监控

    Tomcat 监控

    Tomcat 7 修改tomcat/bin/catalina.sh,在首行加入如下信息

    CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"; export CATALINA_OPTS
    

    Tomcat 8 修改tomcat/bin/catalina.sh,在首行加入如下信息

    set "CATALINA_OPTS=... -javaagent:E:\apache-tomcat-8.5.20\skywalking-agent\skywalking-agent.jar"
    

    相关代码编译调试运行请查看另一篇博客 skywalking 开发环境编译及联调

    展开全文
  • Apache SkyWalking SkyWalking: an APM(application performance monitor) system, especially designed for microservices, cloud native and container-based (Docker, Kubernetes, Mesos) architectures. ...
  • Apache SkyWalking SkyWalking: an APM(application performance monitor) system, especially designed for microservices, cloud native and container-based (Docker, Kubernetes, Mesos) architectures. ...
  • skywalking源码

    2019-02-28 20:51:28
    现在最火的链路监控源码,skywalking,供有需要的小伙伴使用
  • skywalking前端_SkyWalking

    2020-12-24 15:31:35
    Skywalking(简称SW)是分布式系统的应用程序性能监视(APM)工具,专为微服务、云原生和容器架构而设计,提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。通过探针自动收集所需的指标,并进行...

    Skywalking(简称SW)是分布式系统的应用程序性能监视(APM)工具,专为微服务、云原生和容器架构而设计,提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。通过探针自动收集所需的指标,并进行分布式追踪,具有无代码嵌入,支持众多中间件,agent种类全面,性能消耗低等优点。

    下载

    在github的Skywalking项目中下载最新版安装包官网地址

    解压部署

    tar -zxvf apache-skywalking-apm-6.5.0.tar.gz

    在服务器上解压该安装包,并进入config文件夹,对application.yml进行设置,主要设置如下几个部分

    core:

    selector: ${SW_CORE:default}

    default:

    # Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate

    # Receiver: Receive agent data, Level 1 aggregate

    # Aggregator: Level 2 aggregate

    role: ${SW_CORE_ROLE:Mixed} # Mixed/Receiver/Aggregator

    restHost: ${SW_CORE_REST_HOST:10.26.110.8}

    restPort: ${SW_CORE_REST_PORT:12800}

    restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/}

    restMinThreads: ${SW_CORE_REST_JETTY_MIN_THREADS:1}

    restMaxThreads: ${SW_CORE_REST_JETTY_MAX_THREADS:200}

    restIdleTimeOut: ${SW_CORE_REST_JETTY_IDLE_TIMEOUT:30000}

    restAcceptorPriorityDelta: ${SW_CORE_REST_JETTY_DELTA:0}

    restAcceptQueueSize: ${SW_CORE_REST_JETTY_QUEUE_SIZE:0}

    gRPCHost: ${SW_CORE_GRPC_HOST:10.26.110.8}

    gRPCPort: ${SW_CORE_GRPC_PORT:11800}

    gRPCSslEnabled: ${SW_CORE_GRPC_SSL_ENABLED:false}

    gRPCSslKeyPath: ${SW_CORE_GRPC_SSL_KEY_PATH:""}

    gRPCSslCertChainPath: ${SW_CORE_GRPC_SSL_CERT_CHAIN_PATH:""}

    gRPCSslTrustedCAPath: ${SW_CORE_GRPC_SSL_TRUSTED_CA_PATH:""}

    storage:

    selector: ${SW_STORAGE:elasticsearch7}

    主要修改core中0.0.0.0host改为ip,便于访问。storage修改为es7,配合elk可以清晰查看日志。

    接着修改webapp中webapp.xml配置

    server:

    port: 8081 #前端ui访问端口

    collector:

    path: /graphql

    ribbon:

    ReadTimeout: 10000

    # Point to all backend's restHost:restPort, split by ,

    listOfServers: 10.26.110.8:12800 #修改为本机ip便于访问

    启动

    bin目录下的startup.sh启动

    监控

    需要将skywalking-agent探针包上传到被监控JAR的服务器上并重新启动被监控JAR

    java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=nacos-provider -Dskywalking.collector.backend_service=ip:11800 -jar yourApp.jar

    @echo on

    java -Dlogback.configurationFile=config/logback.xml -jar bin/denza-registerserver-3.0.jar

    界面使用总结

    image.png

    指标盘界面通识

    image.png

    最上方为功能区,用来切换SW不同的功能,具体功能将在后续篇章介绍;

    功能区下方为指标对象,SW的监控对象分为 服务、端点和实例三种;

    右下角为时间区,用来设定统计指标的时间域(所有的指标展示都依赖与这个时间范围)。点击右上“自动”按钮可以开启自动刷新模式;

    其余空间为指标盘展示区,用来展示各种指标信息。

    这里着重介绍下 SkyWalking 中最重要的三个概念:

    服务(Service) :表示对请求提供相同行为的一系列或一组工作负载。在使用 Agent 或 SDK 的时候,你可以定义服务的名字。如果不定义的话,SkyWalking 将会使用应用名称上定义的名字,为了和告警服务联动,这里推荐大家配置成应用中心中的应用名。

    这里,我们可以看到 应用的服务为 "is-travel-business",这是在agent 环境变量 SW_AGENT_NAME 中所定义的。

    端点(Endpoint) :对于特定服务所接收的请求路径, 如 HTTP 的 URI 路径和 gRPC 服务的类名 + 方法签名。

    这里,我们可以看到 Spring Boot 应用的一个端点,为 API 接口 /api/banner/{id}。

    服务实例(Service Instance) :上述的一组工作负载中的每一个工作负载称为一个实例。就像 Kubernetes 中的 pods 一样, 服务实例未必就是操作系统上的一个进程。但当你在使用 Agent 的时候, 一个服务实例实际就是操作系统上的一个真实进程。

    这里,我们可以看到 Spring Boot 应用的实例为 {进程UUID}@{hostname},由 Agent 自动生成。

    SW所有的指标信息都是围绕三者展开的。

    1. 指标仪表盘

    1.1 服务指标

    点击仪表盘,选择要查询的应用,如“is-file-store”, 再切换仪表盘为“Service”模式,即可查询对应服务的指标

    image.png

    服务主要指标包括:

    ApdexScore : 性能指数,Apdex(Application Performance Index)是一个国际通用标准,Apdex 是用户对应用性能满意度的量化值。它提供了一个统一的测量和报告用户体验的方法,把最终用户的体验和应用性能作为一个完整的指标进行统一度量,其中最高为1最低为0;

    ResponseTime:响应时间,即在选定时间内,服务所有请求的平均响应时间(ms);

    Throughput: 吞吐量,即在选定时间内,每分钟服务响应的请求量(cpm)

    SLA: service level agreement,服务等级协议,SW中特指每分钟内响应成功请求的占比。

    大盘中会列出以上指标的当前的平均值,和历史走势。

    服务慢端点 Service Slow Endpoint

    服务指标仪表盘会列举出当前服务响应时间最大的端点Top5,如果有端点的响应时间过高,则需要进一步关注其指标(点击可以复制端点名称)。

    image.png

    运行中的实例 Running ServiceInstance

    该服务目前所有实例的吞吐量情况,通过此可以推断出实例之间的负载情况。如果发现某个实例吞吐量较低,就需要查询实例指标(如查询该实例是不是发生了GC,或则CPU利用率过高)

    image.png

    1.2 端点指标

    如果发现有端点的响应时间过高,可以进一步查询该端点的指标信息。和服务指标类似,端点指标也包括吞吐量、SLA、响应时间等指标,这里不再赘述。

    端点仪表盘会有如下特有信息:

    Dependency Map: 依赖关系图,代表哪些服务在依赖(调用)该端点,如果是前端直接调用,会显示为用户(User)依赖中;

    Slow Traces: 即慢调用请求记录,SW会自动列出当前时间段内端点最慢的调用记录和TraceID,通过这个ID可以在追踪功能找到具体的调用链信息,便于定位。

    image.png

    1.3 服务实例指标

    选择服务的实例并切换仪表盘,即可查看服务某个实例的指标数据。除了常规的吞吐量、SLA、响应时间等指标外,实例信息中还会给出JVM的信息,如堆栈使用量,GC耗时和次数等。

    image.png

    1.4 DB 数据指标查询

    除了服务本身的指标,SW也监控了服务依赖的DB指标。切换DB指标盘并选择对应DB实例,就可以看到从服务角度(client)来看该DB实例的吞吐量、SLA、响应时间等指标。

    更进一步,该DB执行慢SQL会被自动列出,可以直接粘贴出来,便于定位耗时原因。

    image.png

    2. 拓扑结构

    不同于仪表盘来展示单一服务的指标,拓扑图是来展示服务和服务之间的依赖关系。

    用户可以选择单一服务查询,也可以将多个服务设定为一组同时查询。

    点击服务图片会自动显示当前的服务指标;

    SW会根据请求数据,自动探测出依赖的服务,DB和中间件等。

    点击依赖线上的圆点,会显示服务之间的依赖情况,如每分钟吞吐量,平均延迟时间,和侦察端模式(client/Server)。

    image.png

    3. 请求追踪

    当用户发现服务的SLA降低,或者某个具体的端口响应时间上扬明显,可以使用追踪功能查询具体的请求记录。

    最上方为搜索区,用户可以指定搜索条件,如隶属于哪个服务、哪个实例、哪个端口,或者请求是成功还是失败;也可以根据上文提到的TraceID精确查询。

    整个调用链上每一个跨度的耗时和执行结果都会被列出(默认是列表,也可选择树形结构和表格的形式);

    如果有步骤失败,该步骤会标记为红色。

    image.png

    点击跨度,会显示跨度详情,如果有异常发生,异常的种类、信息和堆栈都会被自动捕获;

    image.png

    如果跨度为数据库操作,执行的SQL也会被自动记录。

    image.png

    4. 性能剖析

    追踪功能展示出的跨度是服务调用粒度的,如果要看应用实时的堆栈信息,可以选择性能剖析功能。

    新建分析任务;

    选指定的服务和端点作为分析对象;

    设定采样频率和次数;

    注意: 如果端点的响应时间小于监控间隔,可能会导致采样分析失败。

    image.png

    新建任务后,SW将开始采集应用的实时堆栈信息。采样结束后,用户点击分析即可查看具体的堆栈信息。

    点击跨度右侧的“查看”,可以看到调用链的具体详情;

    跨度目录下方是SW收集到的具体进程堆栈信息和耗时情况。

    image.png

    需要提醒的时候,性能剖析功能因为要实时高频率收集服务的JVM堆栈信息,对于服务本身有一定的性能消耗,只适用于耗时端点的行为分析。

    5. 指标对比

    当用户需要对比不同端点指标的关联情况的话,可以使用性能对比功能。选择待对比的端点和指标,SW将会列出相同时间段的指标记录。如下图中,两个端点虽然属于不同的应用,但是在响应时间的指标,表现出一定的关联性。实际上两个端点有依赖关系,一个响应时间变多,另一个也会变多。

    image.png

    展开全文
  • TIPS本文基于Skywalking 6.6.0编写,理论支持Skywalking 6.0+所有版本。本文探讨如何使用Skywalking监控应用。Skywalking有多种使用方式,目前最流行(也是最强大)的使用方式是基于Java agent的。Java agent支持的...
  • 本文基于Skywalking 6.6.0编写,理论支持Skywalking 6.0+所有版本。 本文探讨如何使用Skywalking监控应用。 Skywalking有多种使用方式,目前最流行(也是最强大)的使用方式是基于Java agent的。 Java agent支持的...
  • 本文基于Skywalking 6.6.0编写,理论支持Skywalking 6.0+所有版本。 本文探讨如何使用Skywalking监控应用。 Skywalking有多种使用方式,目前最流行(也是最强大)的使用方式是基于Java agent的。 Java agent支持的...
  • Apache SkyWalking CLI The CLI (Command Line Interface) for Apache SkyWalking. SkyWalking CLI is a command interaction tool for the SkyWalking user or OPS team, as an alternative besides using ...
  • skywalking-swck Apache SkyWalking Cloud on Kubernetes
  • skywalking安装

    2020-12-17 16:54:08
    skywalking 部署 官网地址: https://github.com/apache/skywalking/tree/master/docs 参考地址: https://blog.csdn.net/yy756127197/article/details/107458943 1. skywalking 介绍 | 主要分为后端、 UI 、...
  • Apache SkyWalking

    2020-06-30 13:51:58
    SkyWalking是观察性分析平台和应用性能管理系统。 提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。 Apache SkyWalking SkyWalking 的核心是数据分析和度量结果的存储平台,通过 HTTP 或 gRPC ...
  • Skywalking Learning

    2020-11-10 17:02:58
    Skywalking Learning 下载安装: TIP: JDK版本在JDK 8 - JDK 12之间 注意:如使用 ElasticSearch7 的版本,那么需要 JDK 11+ 确保如下端口可用: 11800:和Skywalking通信的gRPC端口 12800:和Skywalking通信...
  • skywalking学习笔记
  • SkyWalking搭建

    2020-05-27 09:56:59
    SkyWalking搭建 概述 SkyWalking 是观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。 支持Java, .Net Core, PHP, NodeJS, Golang, LUA语言探针 支持Envoy + ...
  • skywalking建表SQL

    2020-11-12 10:14:38
    skywalking启用mysql时的建表SQL,配置好mysql后,如果提示找不到表,可以使用此SQL来建表。
  • Apache SkyWalking Kubernetes SkyWalking Kubernetes repository provides ways to install and configure skywalking in a Kubernetes cluster. The scripts are written in Helm3. Documentation Chart ...

空空如也

1 2 3 4 5 ... 20
收藏数 2,349
精华内容 939
关键字:

skywalking