Skywalking环境搭建
注:首先安装elasticsearch。
1 安装Skywalking
下载地址:skywalking下载
1.1 安装backend
(1)、首先切换到root用户,解压Skywalking压缩包。
#切换到root用户
su root
#切换到skywalking目录
cd /usr/local/skywalking
#解压压缩包
tar -zxvf apache-skywalking-apm-6.4.0.tar.gz
(2)、修改skywalking存储的数据源配置
cd apache-skywalking-apm-bin
vi config/application.yml
找到storage,进行es的配置。
(3)、启动
#进入bin目录
cd bin
#启动
./startup.sh
(4)、浏览器访问
使用webapp目录下面webapp.yml中配置的端口进行访问。
2 agent的使用
agent探针可以让我们不修改代码的情况下,对Java应用上使用到的组件进行动态监控,获取运行数据发送到OAP上进行统计和存储。agent探针在Java
使用中是使用Java agent技术实现。不需要更改任何代码,Java agent会通过虚拟机接口来在运行期更改代码。agent探针所有文件都在skywalking的agent
文件夹下。
由于没有修改agent探针中的应用名,所以默认显示的是Your_ApplicationName。我们修改下应用名称,让他显示的更加正确。编辑agent配置文件如下:
cd /usr/local/skywalking/apache-skywalking-apm-bin/agent/config
vi agent.config
在配置中找到这么一行
# The service name in UI
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
这里的配置含义是可以读取到SW_AGENT_NAME配置属性,如果该配置没有指定,那么默认名称为Your_ApplicationName。
3 在springboot中使用agent
(1)、引入maven依赖
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>8.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.5.0</version>
</dependency>
(2)、配置logback-spring.xml
<appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern>
</layout>
</encoder>
</appender>
(3)、启动
java -javaagent:/usr/local/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dserver.port=80 -jar xxx.jar
4 APM展示栏
4.1 Global全局维度
(1)、Service Load面板:服务每分钟请求数。
(2)、Slow Services:慢响应服务,单位ms。
(3)、Un-Health services:Aplex性能指标,1为满分。
(4)、Slow Endpoints:慢端点(接口)。
(4)、Global Response Latency:百分比相应延时,不同百分比的延时时间,单位ms。
(5)、Global Heatmap:服务响应事件热力分布图,根据时间段内不同响应时间的数量显示颜色深度。
(6)、底部栏:展示数据的时间区间,点击可以调整。
4.2 Service服务维度
(1)、Service Apdex(数字):当前服务的评分。
(2)、Service Apdex(折线图):不同时间的Apdex评分。
(3)、Successful Rate(数字):请求成功率。
(4)、Successful Rate(折线图):不同时间的请求成功率。
(5)、Servce Load(数字):每分钟请求数。
(6)、Servce Load(折线图):不同时间的每分钟请求数。
(7)、Service Avg Response Times:平均响应延时,单位ms。
(8)、Global Response Time Percentile:百分比响应延时。
(9)、Servce Instances Load:每个服务实例的每分钟请求数。
(10)、Slow Service Instance:每个服务实例的最大延时。
(11)、Service Instance Successful Rate:每个服务实例的请求成功率。
4.3 Instance实例维度
(1)、Service Instance Load:当前实例的每分钟请求数。
(2)、Service Instance Successful Rate:当前实例的请求成功率。
(3)、Service Instance Latency:当前实例的响应延时。
(4)、JVM CPU:jvm占用CPU的百分比。
(5)、JVM Memory:jvm内存占用大小,单位M。
(6)、JVM GC Time:jvm垃圾回收时间,包含YGC和OGC。
(7)、JVM GC Count:jvm来及回收次数,包含YGC和OGC。
(8)、CLR XX:类似jvm虚拟机(一般用不上)。
4.4 Endpoint端点(API)维度
(1)、Endpoint Load in Current Service:每个端点的每分钟请求数。
(2)、Slow Endpoints in Current Service:每个端点的最慢请求时间,单位ms。
(3)、Successful Rate in Current Service:每个端点的请求成功率。
(4)、Endpoint Load:当前端点每个时间段的请求数据。
(5)、Endpoint Avg Response Time:当前端点每个时间段的请求行相应时间。
(6)、Endpoint Response Time Percentile:当前端点每个时间段的响应时间占比。
(7)、Endpoint Successful Rate:当前端点每个时间段的请求成功率。
4.5 DataSource展示栏
当前数据库相关指标
(1)、Database Avg Response Time:当前数据库时间平均响应时间,单位ms
(2)、Database Access Successful Rate:当前数据库访问成功率。
(3)、Database Traffic:CPM,当前数据库每分钟请求数。
(4)、Database Access Latency Percentile:数据库不同比例的响应时间,单位ms
(5)、Slow Statements:前N个慢查询,单位ms。
(6)、All Database Loads:所有数据库中CPM排名。
(7)、Un-Health Databases:所有数据库健康排名,请求成功率排名。
5 拓扑图
(1)、:服务告警信息。
(2)、:服务端点追踪信息。
(3)、:服务实例性能信息。
(4)、:api信息模板。
6 性能剖析
(1)、新建任务:新建需要分析的端点。
(2)、左侧列表:任务及对应的采样请求。
(3)、右侧:端点链路及每个端点的堆栈信息。
(1)、服务:需要分析的服务。
(2)、端点:链路监控中端点的名称,可以在链路追踪中查看端点名称。
(3)、监控时间:采集数据的开始时间。
(4)、起始监控时间:多少秒后进行采集。
(5)、监控间隔:多少秒采集一次。
(6)、最大采集数:最大采集多少样本。