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必读技术书籍

速查列表:Apache SkyWalking OAL 的 域(Scopes)的更多相关文章

  1. HTML速查列表

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  2. 框架、颜色、颜色名、脚本、字符实体、URL、速查列表

    一. 1.<iframe></iframe>标签设置内联框架(一个内联框架用来当前HTML文档嵌入另一个文档).[语法:<iframe src="URL&quo ...

  3. HTML 速查列表

    HTML 基本文档 <!DOCTYPE html> <html> <head> <title>文档标题</title> </head& ...

  4. 吴裕雄--天生自然HTML学习笔记:HTML 速查列表

    HTML 基本文档 <!DOCTYPE html> <html> <head> <title>文档标题</title> </head& ...

  5. CSS速查列表-3-(font)字体

    CSS Fonts(字体) CSS字体属性定义 1.字体:font-family 属性设置文本的字体系列.p{font-family:"Times New Roman", Time ...

  6. CSS速查列表-2-(text)文本

    CSS的Text属性可以改变页面中 1.文本的颜色(color). 2.字符间距(word-spacing ) 属性可以改变字(单词)之间的标准间隔.其默认值 normal 与设置值为 0 是一样的 ...

  7. CSS速查列表-1-(background)背景

    CSS 背景 CSS 属性定义背景效果: background-color background-image background-repeat background-attachment backg ...

  8. html 速查表

    HTML 速查列表 HTML 速查列表. 你可以打印它,以备日常使用. HTML 基本文档 <!DOCTYPE html> <html> <head> <ti ...

  9. Standard C 语言标准函数库速查(彩色的函数列表,十分清楚)

    Standard C 语言标准函数库速查 (Cheat Sheet) wcstombs 函数说明 #include <stdlib.h> size_t mbstowcs(wchar_t * ...

随机推荐

  1. javascript中“==”,“===”和“Object.is(a,b)”的区别

    作为两个量比较的三种方式"==","==="和"Object.is(a,b)"有一定区别,如下(具体见MDN): (1)Object.is( ...

  2. odoo controllers 中type="Json" 或type="http"

    服务端接收参考: # 导包 from odoo import http class HttpRequest(http.Controller): @http.route('/url', type='js ...

  3. [NOI 2021] 轻重边 题解

    提供一种和不太一样的树剖解法(一下考场就会做了qwq),尽量详细讲解. 思路 设重边为黑色,轻边为白色. 首先,先将边的染色转化为点的染色(即将 \(u\) 节点连向父节点的边的颜色转化为 \(u\) ...

  4. 记录一次现网MySQL内存增长超限问题定位过程

    问题现象现网物理机内存近几日内爆涨使用率超过了90%,可用内存从250G,降低到20G以下,报告警.服务器使用情况来看,并没有什么异常.除了QPS缓慢增长外. MySQL内存分配结构 定位这个问题,先 ...

  5. uTools电脑软件快速启动工具

                    uTools电脑软件快速启动工具   http://www.autoahk.com/archives/16112   https://gitee.com/weiyunw ...

  6. 洛谷P1377题解

    题面 首先他叫我们建一颗笛卡尔树,所以我们就建一颗笛卡尔树. 然后他说要生成序列中最小的.想到笛卡尔树的一条性质:左<根<右.但是根节点必须先插进去.他的两个儿子用贪心的思想就知道是先选左 ...

  7. 2020年度钻石C++C学习笔记(1)《博学谷》

    1.C语言概述 1.1 什么是C语言 一提到语言这个词语,自然会想到的是像英语.汉语等这样的自然语言,因为它是人和人交换信息不可缺少的工具. 而今天计算机遍布了我们生活的每一个角落,除了人和人的相互交 ...

  8. 剑指 Offer 32 - II. 从上到下打印二叉树 II

    剑指 Offer 32 - II. 从上到下打印二叉树 II 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,1 ...

  9. LaTex公式语法教程及手册(附emlogpro公式显示插件katex说明)

    目录 第一列 第二列 第三列 效果 求和(使用\sum标签) 文本效果 本插件简介 积分(使用\int标签) 文本大小 LaTex是什么 空格 特殊符号 LaTex公式使用教程及手册 定界符 LaTe ...

  10. 关于XSS简单介绍与waf bypass的一些思路整理

    很久没写东西了,今天整理一点儿思路 简单说一下XSS XSS(cross site script)即跨站脚本,侧重于"脚本"这一层概念,是一种常见web安全漏洞.攻击者通过往web ...