速查列表:Apache SkyWalking OAL 的 域(Scopes)

OAL简介

在流模式(Streaming mode)下,SkyWalking 提供了 观测分析语言(Observability Analysis Language,OAL) 来分析流入的数据。

OAL脚本现在位于/config文件夹,用户可以简单地改变和重新启动服务器,使其有效。

但是,OAL脚本仍然是编译语言,OAL运行时动态生成Java代码。可以在系统环境上设置SW_OAL_ENGINE_DEBUG=Y,查看生成了哪些类。

作用域(Scope)

作用域包括全局(All)、服务(Service)、服务实例(Service Instance)、端点(Endpoint)、服务关系(Service Relation)、服务实例关系(Service Instance Relation)、端点关系(Endpoint Relation)。

接下来我来详细了解一下每个作用域。

全局(All)

名称备注是否分组键数据类型
name表示每个请求对应的服务名称string
serviceInstanceName表示引用的服务实例名称string
endpoint表示每个请求的端点名称string
latency表示每个请求的耗时int(单位:毫秒)
status表示请求成功还是失败的状态bool(true 表示成功)
responseCode如果该请求是 HTTP 请求, 则表示 HTTP 响应的状态码. 如 200, 404, 302int
type表示请求类型,例如: Database, HTTP, RPC, gRPCenum

服务(Service)

按照服务计算每个请求的度量数据。

名称备注是否分组键数据类型
name表示服务的名称string
nodeType表示服务节点或网络地址的类型,如:Normal, Database, MQ, Cacheenum
serviceInstanceName表示引用的服务实例名称string
endpointName表示端点的名称, 如:HTTP URI的完整路径string
latency表示每个请求的耗时int
status表示请求成功还是失败的状态bool(true 表示成功)
responseCode如果该请求是 HTTP 请求, 表示 HTTP 请求的响应码int
type表示每个请求的类型, 如: Database, HTTP, RPC, gRPCenum

服务实例(Service Instance)

按照服务实例计算每个请求的度量数据。

名称备注是否分组键数据类型
name表示服务实例名称。现在原生探针使用 uuid@ipv4 作为服务实例名称, 当需要在聚合中设置过滤器(Filter)时,这个毫无用处。string
nodeType表示服务节点或网络地址的类型,如:Normal, Database, MQ, Cacheenum
serviceName表示服务的名称string
endpointName表示端点的名称, 如 HTTP URI 的完整路径.string
latency表示每个请求的耗时int
status表示请求成功还是失败的状态bool(true 表示成功)
responseCode如果该请求是 HTTP 请求, 则表示 HTTP 响应的状态码. 如 200, 404, 302.int
type表示请求类型,例如: Database, HTTP, RPC, gRPCenum

服务实例(Service Instance)二级作用域

当服务实例是一个 JVM 并且通过 javaagent 收集时,计算服务实例的度量指标。

1. ServiceInstanceJVMCPU
名称备注是否分组键数据类型
name表示服务实例名称。现在原生探针使用 uuid@ipv4 作为服务实例名称, 当需要在聚合中设置过滤器(Filter)时,这个毫无用处。string
serviceName表示服务的名称string
usePercent表示 CPU 耗时百分比double
2. ServiceInstanceJVMMemory
名称备注是否分组键数据类型
name表示服务实例名称。 现在原生探针使用 uuid@ipv4 作为服务实例名称, 当需要在聚合中设置过滤器(Filter)时,这个毫无用处。string
serviceName表示服务的名称string
heapStatus表示该指标是否是堆的指标bool
init参考 JVM 文档long
max参考 JVM 文档long
used参考 JVM 文档long
committed参考 JVM 文档long
3. ServiceInstanceJVMMemoryPool
名称备注是否分组键数据类型
name表示服务实例名称。现在原生探针使用 uuid@ipv4 作为服务实例名称, 当需要在聚合中设置过滤器(Filter)时,这个毫无用处。string
serviceName表示服务的名称string
poolType根据不同的 JVM 版本, 可能包括 CODE_CACHE_USAGE, NEWGEN_USAGE, OLDGEN_USAGE, SURVIVOR_USAGE, PERMGEN_USAGE, METASPACE_USAGEenum
init参考 JVM 文档long
max参考 JVM 文档long
used参考 JVM 文档long
committed参考 JVM 文档long
4. ServiceInstanceJVMGC
名称备注是否分组键数据类型
name表示服务实例名称。现在原生探针使用 uuid@ipv4 作为服务实例名称, 当需要在聚合中设置过滤器(Filter)时,这个毫无用处。string
serviceName表示服务的名称string
phraseNEW/OLDEnum
timeGC 耗时long
countGC 次数long
5. ServiceInstanceJVMThread
名称备注是否分组键数据类型
name表示服务实例名称。现在原生探针使用 uuid@ipv4 作为服务实例名称, 当需要在聚合中设置过滤器(Filter)时,这个毫无用处。string
serviceName表示服务的名称string
liveCount表示活跃线程的当前数量int
daemonCount表示当前守护进程线程的数量int
peakCount表示当前峰值线程数int

端点(Endpoint)

计算服务中每个端点请求的度量指标。

名称备注是否分组键数据类型
name表示端点的名称, 如 HTTP URI 的完整路径.string
nodeType表示服务节点或网络地址的类型,如:Normal, Database, MQ, Cacheenum
serviceName表示服务的名称string
serviceInstanceName表示引用的服务实例 id 的名称.string
latency表示每个请求的耗时int
status表示请求成功还是失败的状态bool(true 表示成功)
responseCode如果该请求是 HTTP 请求, 则表示 HTTP 响应的状态码,如:200, 404, 302.int
type表示请求类型,例如: Database, HTTP, RPC, gRPCenum

服务关系(Service Relation)

计算服务与服务之间每个请求的度量指标。

名称备注是否分组键数据类型
sourceServiceName表示源服务的名称string
sourceServiceNodeType表示源服务节点或网络地址的类型,如:Normal, Database, MQ, Cacheenum
sourceServiceInstanceName表示源服务实例名称string
destServiceName表示目标服务的名称string
destServiceNodeType表示目标服务节点或网络地址的类型,如:Normal, Database, MQ, Cacheenum
destServiceInstanceName表示目标服务实例名称string
endpoint表示本次调用中使用的端点string
componentId表示本次调用中使用到的组件 IDstring
latency表示每个请求的耗时int
status表示请求成功还是失败的状态bool(true 表示成功)
responseCode如果该请求是 HTTP 请求, 则表示 HTTP 响应的状态码. 如 200, 404, 302.int
type表示请求类型,例如: Database, HTTP, RPC, gRPCenum
detectPoint本地请求探测点位置,如:client, server, proxy.enum
tlsMode表示源服务和目标服务之间的TLS模式,如:service_relation_mtls_cpm = from(ServiceRelation.*).filter(tlsMode == "mTLS").cpm()string

服务实例关系(Service Instance Relation)

计算服务实例与服务实例之间每个请求的度量指标。

名称备注是否分组键数据类型
sourceServiceName表示源服务的名称string
sourceServiceNodeType表示源服务节点或网络地址的类型,如:Normal, Database, MQ, Cacheenum
sourceServiceInstanceName表示源服务实例名称string
destServiceName表示目标服务的名称
destServiceNodeType表示目标服务节点或网络地址的类型,如:Normal, Database, MQ, Cacheenum
destServiceInstanceName表示目标服务实例名称string
endpoint表示本次调用中使用的端点string
componentId表示本次调用中使用到的组件 IDstring
latency表示每个请求的耗时int
status表示请求成功还是失败的状态bool(true 表示成功)
responseCode如果该请求是 HTTP 请求, 则表示 HTTP 响应的状态码. 如 200, 404, 302.int
type表示请求类型,例如: Database, HTTP, RPC, gRPCenum
detectPoint本地请求探测点位置,如:client, server, proxy.enum
tlsMode表示源服务和目标服务之间的TLS模式,如:service_relation_mtls_cpm = from(ServiceRelation.*).filter(tlsMode == "mTLS").cpm()string

端点关系(Endpoint Relation)

计算一个端点和另一个端点之间的依赖关系的度量数据。这种关系很难检测,也依赖于跟踪库来传播上一个端点。
所以端点关系范围聚合,仅仅在使用 SkyWalking 原生探针进行追踪的情况下才有效,包括自动打点探针(如 Java, .NET),
OpenCensus SkyWalking exporter以及其他传播追踪上下文的实现.

名称备注是否分组键数据类型
endpoint表示父级端点名称string
serviceName表示父级端点的服务名称string
serviceNodeType表示父级端点的服务节点或网络地址的类型,如:Normal, Database, MQ, Cacheenum
childEndpoint表示子父级端点名称string
childServiceName表示子级端点的服务名称string
childServiceNodeType表示子级端点的服务节点或网络地址的类型,如:Normal, Database, MQ, Cachestring
childServiceInstanceName表示子级端点的服务实例名称string
rpcLatency表示RPC请求的耗时,排除了父级端点自身的耗时int
componentId表示此调用中使用的组件IDstring
status表示请求成功还是失败的状态bool(true 表示成功)
responseCode如果该请求是 HTTP 请求,则表示 HTTP 响应的状态码int
type表示请求类型,例如: Database, HTTP, RPC, gRPCenum
detectPoint本地请求探测点位置,如:client, server, proxy.enum

浏览器传输(BrowserAppTraffic)

计算浏览器应用程序的每个请求的度量数据。

名称备注是否分组键数据类型
name表示每个请求的浏览器应用程序名称string
count表示请求数,固定为1int
trafficCategory表示传输类别,如:NORMAL, FIRST_ERROR, ERRORenum
errorCategory代表错误类别,如:AJAX, RESOURCE, VUE, PROMISE, UNKNOWNenum
浏览器单一版本传输(BrowserAppSingleVersionTraffic)

计算浏览器应用程序中浏览器单一版本的每个请求的度量数据。

名称备注是否分组键数据类型
name表示每个请求的单一版本名string
serviceName表示浏览器应用程序的名称string
count表示请求数,固定为1int
trafficCategory表示传输类别,如:NORMAL, FIRST_ERROR, ERRORenum
errorCategory代表错误类别,如:AJAX, RESOURCE, VUE, PROMISE, UNKNOWNenum
浏览器页面传输(BrowserAppPageTraffic)

计算浏览器应用程序中页面的每个请求的度量数据。

名称备注是否分组键数据类型
name表示每个请求的页面名称string
serviceName表示浏览器应用程序的名称string
count表示请求数,固定为1int
trafficCategory表示传输类别,如:NORMAL, FIRST_ERROR, ERRORenum
errorCategory代表错误类别,如:AJAX, RESOURCE, VUE, PROMISE, UNKNOWNenum
浏览器页面耗时(BrowserAppPagePerf)

计算浏览器应用程序中页面的每个请求耗时的度量数据。

名称备注是否分组键数据类型
name表示每个请求的页面名称string
serviceName表示浏览器应用程序的名称string
redirectTime表示重定向的耗时int(单位:毫秒)
dnsTime表示DNS查询的耗时int(单位:毫秒)
ttfbTime发出页面请求到接收到应答数据第一个字节所花费的耗时int(单位:毫秒)
tcpTimeTCP连接的耗时int(单位:毫秒)
transTime内容传输的耗时int(单位:毫秒)
domAnalysisTimeDOM结构分析的耗时int(单位:毫秒)
fptTime首次渲染时间/白屏时间int(单位:毫秒)
domReadyTimeDOM结构准备的耗时int(单位:毫秒)
loadPageTime整个页面加载时间int(in ms)
resTime页面中同步加载资源的耗时int(单位:毫秒)
sslTime仅对HTTPS有效int(单位:毫秒)
ttlTime首次交互时间int(单位:毫秒)
firstPackTime第一个包的时间int(单位:毫秒)
fmpTime首次有效绘制时间int(单位:毫秒)

注:本文以SkyWalking的8.2.0版本为例进行介绍,如果版本不同会略有差异。


文章持续更新,微信搜索「万猫学社」第一时间阅读。
关注后回复「电子书」,免费获取12本Java必读技术书籍。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
Apache SkyWalking 是一个开源的应用性能监控和观测平台,它支持分布式系统、微服务架构和容器化环境的性能监控。通过监控系统的请求流和调用链,它可以帮助开发者和运维人员快定位和解决性能问题,提高应用的稳定性和可靠性。 《Apache SkyWalking实战PDF》是一本关于使用 Apache SkyWalking 进行应用性能监控实践的电子书。该书通过详细介绍 SkyWalking 的工作原理、部署和配置方法,以及如何使用 SkyWalking 进行性能监控和问题排,帮助读者全面了解和掌握 SkyWalking的使用技巧。 《Apache SkyWalking实战PDF》主要包括以下内容: 1. Apache SkyWalking 的概述和特性:介绍了 SkyWalking 的基本原理和功能,包括请求追踪、性能指标监控、告警和日志分析等。 2. SkyWalking 的部署和配置:详细介绍了如何在各种环境下(包括单机和分布式环境)部署和配置 SkyWalking,包括安装和运行 SkyWalking 服务器和探针。 3. 实践案例和示例:通过实际的案例和示例,展示了如何使用 SkyWalking 进行性能监控和问题排。包括如何分析请求的调用链、如何根据性能指标进行优化、如何发现和解决性能瓶颈等。 4. SkyWalking 的进阶内容:介绍了 SkyWalking 的高级功能和扩展,如分布式追踪、服务拓扑图、故障定位和容量规划等。 通过阅读《Apache SkyWalking实战PDF》,读者可以了解如何快搭建和使用 SkyWalking 进行应用性能监控,提高应用的性能和可靠性,解决和预防性能问题。这对于开发者、运维人员和系统架构师来说都是一本实用的参考书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万猫学社

您的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值