1. 概述
本文主要分享运维界面的第四部分,操作视角。
SkyWalking WEBUI :https://github.com/apache/incubator-skywalking-ui
在我们打开 SkyWalking WEBUI 的 Service Tree
( service/serviceTree.html
) 页时,如下图:
- 以操作为维度进行展示。
- 黄色部分,时间进度条,调用 「2. AllInstanceLastTimeGetHandler」 接口,获得应用实例最后心跳时间。大多情况下,我们进入该界面,看的是从最后心跳时间开始的操作情况。
- 红色部分,应用筛选器,调用 「3. ApplicationsGetHandler」 接口,获得应用列表。
- 紫色部分,入口操作( EntryService )分页列表,调用 「4. EntryServiceGetHandler」 接口,获得数据。
- 蓝色部分,【点击单个操作】,获得指定操作的关联操作调用统计树列表,调用 「5. ServiceTreeGetByIdHandler」 接口,获得数据。
基情提示:运维界面相关 HTTP 接口,逻辑简单易懂,笔者写的会比较简略一些。
2. AllInstanceLastTimeGetHandler
同《SkyWalking 源码分析 —— 运维界面(一)之应用视角》「2. AllInstanceLastTimeGetHandler」 相同。
3. ApplicationsGetHandler
同《SkyWalking 源码分析 —— 运维界面(二)之应用实例视角》「3. ApplicationsGetHandler」 相同。
4. EntryServiceGetHandler
org.skywalking.apm.collector.ui.jetty.handler.servicetree.EntryServiceGetHandler
,实现 JettyHandler 接口,获得入口操作( EntryService )分页列表的逻辑处理器。
- #pathSpec() ,路径定义,"/service/entry" 。
- 响应示例:
-
#doGet() 方法,代码如下:
-
第 66 至 71 行:解析
applicationId
参数。 -
第 73 至 85 行:解析
startTime
和endTime
参数。 -
第 88 至 99 行:解析
from
和size
分页参数。-
第 73 行:调用 ServiceTreeService#loadEntryService(...) 方法,获得入口操作( EntryService )分页列表。代码如下:
- 第 44 行:调用 ServiceEntryEsUIDAO#load(...) 方法,查询 ServiceEntry 分页 JSON 数组。
- 第 63 至 69 行:设置应用编码。
-
5. ServiceTreeGetByIdHandler
org.skywalking.apm.collector.ui.jetty.handler.servicetree.ServiceTreeGetByIdHandler
,实现 JettyHandler 接口,获得指定操作的关联操作调用统计树列表的逻辑处理器。
- #pathSpec() ,路径定义,"/service/tree/entryServiceId" 。
- 响应示例:
-
#doGet() 方法,代码如下:
-
第 61 至 66 行:解析
entryServiceId
参数。 -
第 60 至 74 行:解析
startTime
和endTime
参数。 -
第 94 行:调用 ServiceTreeService#loadServiceTree(entryServiceId, startTime, endTime) 方法,获得指定操作的关联操作调用统计树列表,涉及 ServiceReference 数据表。代码比较简单易懂( 笔者太懒了 ),胖友自己阅读理解。