1、下载镜像

>docker pull elasticsearch:7.5.1
>docker pull apache/skywalking-oap-server:6.6.0-es7
>docker pull apache/skywalking-ui:6.6.0

说明:使用最新版本的elasticsearch和skywalking-oap-server镜像,启动会有问题。

因此,必须使用上述版本才可以。

2、安装

2.1 安装elasticsearch

>docker run -d --name=es7 \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" elasticsearch:7.5.1

启动后

>mkdir -p /data/elasticsearch
>docker cp es7:/usr/share/elasticsearch/data /data/elasticsearch/
>docker cp es7:/usr/share/elasticsearch/logs /data/elasticsearch/
>docker rm -f es7
>docker run -d --name=es7 \
  --restart=always \
  -p 9200:9200 -p 9300:9300 \
  -e "discovery.type=single-node" \
  -v /data/elasticsearch/data:/usr/share/elasticsearch/data \
  -v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \
elasticsearch:7.5.1

2.2 安装oap

>docker run --name oap --restart always -d \
--restart=always \
-e TZ=Asia/Shanghai \
-p 12800:12800 \
-p 11800:11800 \
--link elasticsearch:elasticsearch \
-e SW_STORAGE=elasticsearch \
-e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 \
apache/skywalking-oap-server:6.6.0-es7

这里指定elasticsearch 来存储数据

2.3 安装ui

>docker run -d --name skywalking-ui \
--restart=always \
-e TZ=Asia/Shanghai \
-p 8088:8080 \
--link oap:oap \
-e SW_OAP_ADDRESS=oap:12800 \
apache/skywalking-ui:6.6.0

8080是常用端口,这里映射的端口为8088,防止端口冲突。

访问地址:http://ip:8088

截图中数据是已存在的,刚安装好,第一次访问是空的。

注意:因为机制为懒加载,所以当只有你调用该java接口时,页面上才有显示。所以第一次访问时,数据是没有的。

包含模块

  • 仪表盘:查看被监控服务的运行状态
  • 拓扑图:以拓扑图的方式展现服务直接的关系,并以此为入口查看相关信息
  • 追踪:以接口列表的方式展现,追踪接口内部调用过程
  • 性能剖析:单独端点进行采样分析,并可查看堆栈信息
  • 告警:触发告警的告警列表,包括实例,请求超时等。
  • 自动刷新:刷新当前数据内容(可以设置x秒刷新一次)。

3、 ui指标

3.1 仪表盘

3.1.1 Global全局维度

 

  • 第一栏:Global、Server、Instance、Endpoint不同展示面板,可以调整内部内容
  • Services load:服务每分钟请求数
  • Slow Services:慢响应服务,单位ms
  • Un-Health services(Apdex):Apdex性能指标,1为满分。
  • Global Response Latency:百分比响应延时,不同百分比的延时时间,单位ms
  • Global Heatmap:服务响应时间热力分布图,根据时间段内不同响应时间的数量显示颜色深度
  • 底部栏:展示数据的时间区间,点击可以调整。

3.1.2 Service服务维度

  • Service Apdex(数字):当前服务的评分 
  • Service Apdex(折线图):不同时间的Apdex评分
  • Successful Rate(数字):请求成功率
  • Successful Rate(折线图):不同时间的请求成功率
  • Servce Load(数字):每分钟请求数
  • Servce Load(折线图):不同时间的每分钟请求数
  • Service Avg Response Times:平均响应延时,单位ms
  • Global Response Time Percentile:百分比响应延时
  • Servce Instances Load:每个服务实例的每分钟请求数
  • Show Service Instance:每个服务实例的最大延时
  • Service Instance Successful Rate:每个服务实例的请求成功率

3.1.3 Instance实例维度

 

  • Service Instance Load:当前实例的每分钟请求数
  • Service Instance Successful Rate:当前实例的请求成功率
  • Service Instance Latency:当前实例的响应延时
  • JVM CPU:jvm占用CPU的百分比
  • JVM Memory:JVM内存占用大小,单位m
  • JVM GC Time:JVM垃圾回收时间,包含YGC和OGC
  • JVM GC Count:JVM垃圾回收次数,包含YGC和OGC
  • CLR XX:类似JVM虚拟机,这里用不上就不做解释了
     

3.1.4 Endpoint端点(API)维度

 

  • Endpoint Load in Current Service:每个端点的每分钟请求数
  • Slow Endpoints in Current Service:每个端点的最慢请求时间,单位ms
  • Successful Rate in Current Service:每个端点的请求成功率
  • Endpoint Load:当前端点每个时间段的请求数据
  • Endpoint Avg Response Time:当前端点每个时间段的请求行响应时间
  • Endpoint Response Time Percentile:当前端点每个时间段的响应时间占比
  • Endpoint Successful Rate:当前端点每个时间段的请求成功率

3.2 拓扑图

  • 1:选择不同的服务关联拓扑
  • 2:查看单个服务相关内容
  • 3:服务间连接情况
  • 4:分组展示服务拓扑
  • :服务告警信息
  • :服务端点追踪信息
  • :服务实例性能信息
  • :api信息面板

3.3 追踪

  •  左侧:api接口列表,红色-异常请求,蓝色-正常请求
  •  右侧:api追踪列表,api请求连接各端点的先后顺序和时间

3.4 性能剖析

  • 新建任务:新建需要分析的端点
  • 左侧列表:任务及对应的采样请求
  •  右侧:端点链路及每个端点的堆栈信息

3.4.1 新建任务

  • 服务:需要分析的服务
  • 端点:链路监控中端点的名称,可以再链路追踪中查看端点名称
  • 监控时间:采集数据的开始时间
  • 监控持续时间:监控采集多长时间
  • 起始监控时间:多少秒后进行采集
  • 监控间隔:多少秒采集一次
  • 最大采集数:最大采集多少样本

3.5 告警

不同维度告警列表,可分为服务、端点和实例。

4、测试代码

https://gitee.com/xixingzhe2/learn/tree/master/skywalking

4.1 启动项目

下载skywalking源码

>wget https://archive.apache.org/dist/skywalking/6.6.0/apache-skywalking-apm-6.6.0.tar.gz
>tar zxvf apache-skywalking-apm-6.6.0.tar.gz #解压
>cd apache-skywalking-apm-bin/
>cp -r agent/ /root/project/skywalking/ #将agent复制到项目所在位置

将测试项目的两个jar放到/root/project/skywalking下

启动demo1

>java -javaagent:agent/skywalking-agent.jar -Dskywalking.agent.service_name=demo1 -Dskywalking.collector.backend_service=127.0.0.1:11800 -jar demo-1.0.0.jar

启动demo2

>java -javaagent:agent/skywalking-agent.jar -Dskywalking.agent.service_name=demo2 -Dskywalking.collector.backend_service=127.0.0.1:11800 -jar spring-boot-demo-0.0.1-SNAPSHOT.jar

说明:

  • -javaagent 指定agent包位置,可以是相对路径或绝对路径。如:agent/skywalking-agent.jar或/root/project/skywalking/agent/skywalking-agent.jar
  • -Dskywalking.agent.service_name 指定服务名。
  • -Dskywalking.collector.backend_service 指定skywalking oap地址,由于在本机,地址为:127.0.0.1:11800
  • -jar 指定jar包的路径。

4.2 测试

demo项目中HttpUtilsTest有两个测试方法。

4.2.1 普通调用

执行testUrl后,可以看到demo2和访问hello。

4.2.2 链路调用

执行testUrl2后,可以看到demo2和访问hello。

在“追踪”中可以看到调用关系

4.3.3 注意

每次调用完接口,要看最新的数据,可以选择最近15分钟,刷新页面。

5、问题

5.1 skywalking应用与springcloud-gateway时无法通过gateway发现路由的服务链路?

原因: Spring Cloud Gateway 是基于 WebFlux 实现,必须搭配上apm-spring-cloud-gateway-2.1.x-plugin 和 apm-spring-webflux-x.x-plugin 两个插件(备注:一般webflux已经包含在目标路径下)

方案:将agent/optional-plugins下的两个插件 复制到 agent/plugins目录下。

Java Agent是插件化、可插拔的。Skywalking的插件分为三种:

  • 引导插件:在agent的 bootstrap-plugins 目录下
  • 内置插件:在agent的 plugins 目录下
  • 可选插件:在agent的 optional-plugins 目录下

Java Agent只会启用 plugins 目录下的所有插件,bootstrap-plugins 目录以及 optional-plugins 目录下的插件不会启用。如需启用引导插件或可选插件,只需将JAR包移到 plugins 目录下,如需禁用某款插件,只需从 plugins 目录中移除即可。

参考:

https://www.cnblogs.com/xiao987334176/p/13530575.html

https://www.cnblogs.com/kebibuluan/p/13151144.html

https://blog.csdn.net/lizz861109/article/details/107535100

 

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐