SkyWalking

2020-10-28  本文已影响0人  清空_2995

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

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便于访问
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

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

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

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

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

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

1. 指标仪表盘

1.1 服务指标

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

image.png

服务主要指标包括:

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

服务慢端点 Service Slow Endpoint

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


image.png

运行中的实例 Running ServiceInstance

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


image.png

1.2 端点指标

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

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

1.3 服务实例指标

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

image.png

1.4 DB 数据指标查询

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

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

image.png

2. 拓扑结构

3. 请求追踪

4. 性能剖析

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


image.png

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

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

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

image.png

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

5. 指标对比

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


image.png

参考原文

上一篇 下一篇

猜你喜欢

热点阅读