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 行:设置应用编码。
- 第 44 行:调用
- 第 66 至 71 行:解析
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 数据表。代码比较简单易懂( 笔者太懒了 ),胖友自己阅读理解。
- 第 61 至 66 行:解析