文章40 | 阅读 30630 | 点赞0
本文主要分享运维界面的第二部分,应用实例视角。
SkyWalking WEBUI :https://github.com/apache/incubator-skywalking-ui
在我们打开 SkyWalking WEBUI 的 Instance Override
( health/health.html
) 页时,如下图:
在我们【点击任意应用实例】,打开 SkyWalking WEBUI 的 Instance
( instance/instance.html
) 页时,如下图:
同 《SkyWalking 源码分析 —— 运维界面(一)之应用视角》「2. AllInstanceLastTimeGetHandler」 相同。
org.skywalking.apm.collector.ui.jetty.handler.application.ApplicationsGetHandler
,实现 JettyHandler 接口,获得应用列表逻辑处理器。
#pathSpec()
,路径定义,"applications"
。#doGet()
方法,代码如下:
第 73 行:调用 ApplicationService#getApplications(startTime, endTime)
方法,以应用编号为聚合,获得应用实例数量数组。代码如下:
第 44 行:调用 NodeComponentEsUIDAO#load(startTime, endTime)
方法,以应用编号为聚合,获得应用实例数量 JSON 数组。
第 47 至 52 行:设置应用编码。
org.skywalking.apm.collector.ui.jetty.handler.instancehealth.InstanceHealthGetHandler
,实现 JettyHandler 接口,获得应用的应用实例健康相关信息数组。
#pathSpec()
,路径定义,"/instance/health/applicationId"
。#doGet()
方法,代码如下:
第 58 至 62 行:解析 timeBucket
参数,秒级。
第 65 至 72 行:解析 applicationIds
参数,应用编号数组。
第 75 至 79 行:返回字段设置。
第 82 至 85 行:循环应用编号数组,调用 InstanceHealthService#getInstances(timeBucket, applicationId)
方法,获得应用的应用实例健康相关信息数组。代码如下:
第 80 行:获得指定时间内的 5 秒内的数组,倒序。为什么?见下文的 InstPerformance 的查询。
第 81 至 82 行:调用 InstanceEsUIDAO#getInstances(applicationId, timeBucket)
方法,查询查询半小时内有心跳的 Instance 数组。
第 90 行:循环 Instance 数组,逐个查询应用实例的健康相关信息。
第 98 行:调用 InstPerformanceEsUIDAO#get(timeBuckets, instanceId)
方法,查询应用实例五秒内的( timeBuckets
)的 InstPerformance 累加数据。
第 100 至 105 行:基于 InstPerformance 数据,设置 tps
返回字段。
第 108 至 121 行:基于 InstPerformance 数据,设置 avg
和 healthLevel
返回数据。
第 124 至 130 行:基于 Instance 数据,设置应用实例是否存活( 两分钟内是否有心跳 )。
第 133 至 135 行:调用 GCMetricEsUIDAO#getGCCount(timeBuckets, instanceId)
方法,查询应用实例五秒内的( timeBuckets
)的 GCCount 累加数据,设置 ygc
和 ogc
返回字段。
org.skywalking.apm.collector.ui.jetty.handler.instancemetric.InstanceMetricGetRangeTimeBucketHandler
,实现 JettyHandler 接口,获得应用实例指定时间范围内的 Metric 信息。
#pathSpec()
,路径定义,"/instance/jvm/instanceId/rangeBucket"
。#doGet()
方法,代码如下:
第 60 至 74 行:解析 startTimeBucket
和 endTimeBucket
参数,秒级。
第 77 至 88 行:解析 instanceId
参数,应用实例编号。
第 84 至 92 行:解析 metricTypes
数组。
第 94 行:调用 InstanceJVMService#getInstanceJvmMetrics(instanceId, metricTypes, startTimeBucket, endTimeBucket)
方法,获得应用实例指定时间范围内的 Metric 信息,涉及 GCMetric 、InstPerformanceMetric 、MemoryMetric 、MemoryPoolMetric 数据表。代码比较简单易懂( 笔者太懒了 ),胖友自己阅读理解。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_42073629/article/details/119703719
内容来源于网络,如有侵权,请联系作者删除!