链路追踪

文章40 |   阅读 30636 |   点赞0

来源:https://blog.csdn.net/weixin_42073629/category_9940428.html

SkyWalking 源码分析 —— 运维界面(四)之操作视角

x33g5p2x  于2021-12-21 转载在 其他  
字(1.6k)|赞(0)|评价(0)|浏览(699)

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 数据表。代码比较简单易懂( 笔者太懒了 ),胖友自己阅读理解。

相关文章