速查列表:Apache SkyWalking OAL 的 域(Scopes)
阅读原文时间:2021年09月03日阅读:2

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)。

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

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

全局(All)

名称

备注

是否分组键

数据类型

name

表示每个请求对应的服务名称

string

serviceInstanceName

表示引用的服务实例名称

string

endpoint

表示每个请求的端点名称

string

latency

表示每个请求的耗时

int(单位:毫秒)

status

表示请求成功还是失败的状态

bool(true 表示成功)

responseCode

如果该请求是 HTTP 请求, 则表示 HTTP 响应的状态码. 如 200, 404, 302

int

type

表示请求类型,例如: Database, HTTP, RPC, gRPC

enum

服务(Service)

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

名称

备注

是否分组键

数据类型

name

表示服务的名称

string

nodeType

表示服务节点或网络地址的类型,如:Normal, Database, MQ, Cache

enum

serviceInstanceName

表示引用的服务实例名称

string

endpointName

表示端点的名称, 如:HTTP URI的完整路径

string

latency

表示每个请求的耗时

int

status

表示请求成功还是失败的状态

bool(true 表示成功)

responseCode

如果该请求是 HTTP 请求, 表示 HTTP 请求的响应码

int

type

表示每个请求的类型, 如: Database, HTTP, RPC, gRPC

enum

服务实例(Service Instance)

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

名称

备注

是否分组键

数据类型

name

表示服务实例名称。现在原生探针使用 uuid@ipv4 作为服务实例名称, 当需要在聚合中设置过滤器(Filter)时,这个毫无用处。

string

nodeType

表示服务节点或网络地址的类型,如:Normal, Database, MQ, Cache

enum

serviceName

表示服务的名称

string

endpointName

表示端点的名称, 如 HTTP URI 的完整路径.

string

latency

表示每个请求的耗时

int

status

表示请求成功还是失败的状态

bool(true 表示成功)

responseCode

如果该请求是 HTTP 请求, 则表示 HTTP 响应的状态码. 如 200, 404, 302.

int

type

表示请求类型,例如: Database, HTTP, RPC, gRPC

enum

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

服务实例(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_USAGE

enum

init

参考 JVM 文档

long

max

参考 JVM 文档

long

used

参考 JVM 文档

long

committed

参考 JVM 文档

long

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

4. ServiceInstanceJVMGC

名称

备注

是否分组键

数据类型

name

表示服务实例名称。现在原生探针使用 uuid@ipv4 作为服务实例名称, 当需要在聚合中设置过滤器(Filter)时,这个毫无用处。

string

serviceName

表示服务的名称

string

phrase

NEW/OLD

Enum

time

GC 耗时

long

count

GC 次数

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, Cache

enum

serviceName

表示服务的名称

string

serviceInstanceName

表示引用的服务实例 id 的名称.

string

latency

表示每个请求的耗时

int

status

表示请求成功还是失败的状态

bool(true 表示成功)

responseCode

如果该请求是 HTTP 请求, 则表示 HTTP 响应的状态码,如:200, 404, 302.

int

type

表示请求类型,例如: Database, HTTP, RPC, gRPC

enum

服务关系(Service Relation)

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

名称

备注

是否分组键

数据类型

sourceServiceName

表示源服务的名称

string

sourceServiceNodeType

表示源服务节点或网络地址的类型,如:Normal, Database, MQ, Cache

enum

sourceServiceInstanceName

表示源服务实例名称

string

destServiceName

表示目标服务的名称

string

destServiceNodeType

表示目标服务节点或网络地址的类型,如:Normal, Database, MQ, Cache

enum

destServiceInstanceName

表示目标服务实例名称

string

endpoint

表示本次调用中使用的端点

string

componentId

表示本次调用中使用到的组件 ID

string

latency

表示每个请求的耗时

int

status

表示请求成功还是失败的状态

bool(true 表示成功)

responseCode

如果该请求是 HTTP 请求, 则表示 HTTP 响应的状态码. 如 200, 404, 302.

int

type

表示请求类型,例如: Database, HTTP, RPC, gRPC

enum

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, Cache

enum

sourceServiceInstanceName

表示源服务实例名称

string

destServiceName

表示目标服务的名称

destServiceNodeType

表示目标服务节点或网络地址的类型,如:Normal, Database, MQ, Cache

enum

destServiceInstanceName

表示目标服务实例名称

string

endpoint

表示本次调用中使用的端点

string

componentId

表示本次调用中使用到的组件 ID

string

latency

表示每个请求的耗时

int

status

表示请求成功还是失败的状态

bool(true 表示成功)

responseCode

如果该请求是 HTTP 请求, 则表示 HTTP 响应的状态码. 如 200, 404, 302.

int

type

表示请求类型,例如: Database, HTTP, RPC, gRPC

enum

detectPoint

本地请求探测点位置,如:client, server, proxy.

enum

tlsMode

表示源服务和目标服务之间的TLS模式,如:service_relation_mtls_cpm = from(ServiceRelation.*).filter(tlsMode == "mTLS").cpm()

string

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

端点关系(Endpoint Relation)

计算一个端点和另一个端点之间的依赖关系的度量数据。这种关系很难检测,也依赖于跟踪库来传播上一个端点。

所以端点关系范围聚合,仅仅在使用 SkyWalking 原生探针进行追踪的情况下才有效,包括自动打点探针(如 Java, .NET),

OpenCensus SkyWalking exporter以及其他传播追踪上下文的实现.

名称

备注

是否分组键

数据类型

endpoint

表示父级端点名称

string

serviceName

表示父级端点的服务名称

string

serviceNodeType

表示父级端点的服务节点或网络地址的类型,如:Normal, Database, MQ, Cache

enum

childEndpoint

表示子父级端点名称

string

childServiceName

表示子级端点的服务名称

string

childServiceNodeType

表示子级端点的服务节点或网络地址的类型,如:Normal, Database, MQ, Cache

string

childServiceInstanceName

表示子级端点的服务实例名称

string

rpcLatency

表示RPC请求的耗时,排除了父级端点自身的耗时

int

componentId

表示此调用中使用的组件ID

string

status

表示请求成功还是失败的状态

bool(true 表示成功)

responseCode

如果该请求是 HTTP 请求,则表示 HTTP 响应的状态码

int

type

表示请求类型,例如: Database, HTTP, RPC, gRPC

enum

detectPoint

本地请求探测点位置,如:client, server, proxy.

enum

浏览器传输(BrowserAppTraffic)

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

名称

备注

是否分组键

数据类型

name

表示每个请求的浏览器应用程序名称

string

count

表示请求数,固定为1

int

trafficCategory

表示传输类别,如:NORMAL, FIRST_ERROR, ERROR

enum

errorCategory

代表错误类别,如:AJAX, RESOURCE, VUE, PROMISE, UNKNOWN

enum

浏览器单一版本传输(BrowserAppSingleVersionTraffic)

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

名称

备注

是否分组键

数据类型

name

表示每个请求的单一版本名

string

serviceName

表示浏览器应用程序的名称

string

count

表示请求数,固定为1

int

trafficCategory

表示传输类别,如:NORMAL, FIRST_ERROR, ERROR

enum

errorCategory

代表错误类别,如:AJAX, RESOURCE, VUE, PROMISE, UNKNOWN

enum

浏览器页面传输(BrowserAppPageTraffic)

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

名称

备注

是否分组键

数据类型

name

表示每个请求的页面名称

string

serviceName

表示浏览器应用程序的名称

string

count

表示请求数,固定为1

int

trafficCategory

表示传输类别,如:NORMAL, FIRST_ERROR, ERROR

enum

errorCategory

代表错误类别,如:AJAX, RESOURCE, VUE, PROMISE, UNKNOWN

enum

浏览器页面耗时(BrowserAppPagePerf)

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

名称

备注

是否分组键

数据类型

name

表示每个请求的页面名称

string

serviceName

表示浏览器应用程序的名称

string

redirectTime

表示重定向的耗时

int(单位:毫秒)

dnsTime

表示DNS查询的耗时

int(单位:毫秒)

ttfbTime

发出页面请求到接收到应答数据第一个字节所花费的耗时

int(单位:毫秒)

tcpTime

TCP连接的耗时

int(单位:毫秒)

transTime

内容传输的耗时

int(单位:毫秒)

domAnalysisTime

DOM结构分析的耗时

int(单位:毫秒)

fptTime

首次渲染时间/白屏时间

int(单位:毫秒)

domReadyTime

DOM结构准备的耗时

int(单位:毫秒)

loadPageTime

整个页面加载时间

int(in ms)

resTime

页面中同步加载资源的耗时

int(单位:毫秒)

sslTime

仅对HTTPS有效

int(单位:毫秒)

ttlTime

首次交互时间

int(单位:毫秒)

firstPackTime

第一个包的时间

int(单位:毫秒)

fmpTime

首次有效绘制时间

int(单位:毫秒)

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

微信公众号:万猫学社

微信扫描二维码

关注后回复「电子书」

获取12本Java必读技术书籍