OAL简介在Streaming模式下,SkyWalking提供可观察性分析语言(OAL)来分析传入的数据。OAL脚本现在位于/config文件夹中,用户只需更改并重新启动服务器即可生效。但是,OAL脚本仍然是一种编译型语言,OAL运行时动态生成Java代码。您可以在系统环境上设置SW_OAL_ENGINE_DEBUG=Y以查看生成了哪些类。作用域(Scope)范围包括全局(All)、服务(Service)、服务实例(ServiceInstance)、端点(Endpoint)、服务关系(ServiceRelation)、服务实例关系(ServiceInstanceRelation)、端点关系(EndpointRelation).接下来让我仔细看看每个范围。全局(All)名称Remark是否分组键数据类型name表示每个请求对应的服务名称stringserviceInstanceName表示引用的服务实例名称stringendpoint表示每个请求的端点名称stringlatency表示耗时int(单位:毫秒)状态每个请求表示请求成功或失败的状态bool(true表示成功)responseCode如果请求是HTTP请求,则表示HTTP响应的状态码。例如,200、404、302inttype表示请求类型,例如:Database、HTTP、RPC、gRPCenum服务(Service)计算每个服务的每个请求指标。NameRemark分组键数据类型name是否表示服务的名称端点,如:完整的HTTPURIPathstringlatency表示每次请求的耗时intstatus表示请求是成功还是失败bool(true表示成功)responseCode如果请求是HTTP请求,表示响应码HTTPrequestinttype表示每个请求的类型,如:Database,HTTP,RPC,gRPCenum服务实例(ServiceInstance)根据服务实例计算每个请求的metric数据。NameRemark分组键数据类型名称是否表示服务实例的名称。现在nativeprobe使用uuid@ipv4作为服务实例名,当需要在aggregation中设置过滤器(Filter)时就没用了。stringnodeType表示服务节点或网络地址的类型,如:Normal、Database、MQ、CacheenumserviceName表示服务的名称stringendpointName表示端点的名称,如HTTPURI的完整路径。stringlatency表示每次请求的耗时intstatus表示请求是否成功Failurestatusbool(true表示成功)responseCode如果请求是HTTP请求,表示HTTP响应的状态码。例如200、404、302。inttype表示请求类型,例如:Database、HTTP、RPC、gRPCenum服务实例(ServiceInstance)次作用域当服务实例是JVM时,为服务实例计算metrics,通过java代理。1.ServiceInstanceJVMCPUNameRemark分组键数据类型名称是否表示服务实例的名称。现在nativeprobe使用uuid@ipv4作为服务实例名,当需要在aggregation中设置过滤器(Filter)时就没用了。stringserviceName服务名称stringusePercentCPU耗时百分比double2。ServiceInstanceJVMMemoryname备注分组键数据类型名称是否表示服务实例名称。现在nativeprobe使用uuid@ipv4作为服务实例名,当需要在aggregation中设置过滤器(Filter)时就没用了。stringserviceName表示服务的名称。stringheapStatus指示指示器是否为堆指示器。boolinit指的是JVM文档。longmax参考JVM文档。longused是指长期提交的JVM文档。现在nativeprobe使用uuid@ipv4作为服务实例名,当需要在aggregation中设置过滤器(Filter)时就没用了。stringserviceName表示服务的名称stringpoolType根据JVM版本,可能包括CODE_CACHE_USAGE,NEWGEN_USAGE,OLDGEN_USAGE,SURVIVOR_USAGE,PERMGEN_USAGE,METASPACE_USAGEenuminit参考JVM文档longmax参考JVM文档longused参考JVM文档longused参考JVM文档GC数据长J4。类型名称表示服务实例名称。现在nativeprobe使用uuid@ipv4作为服务实例名,当需要在aggregation中设置过滤器(Filter)时就没用了。stringserviceName表示服务的名称。stringphraseNEW/OLDEnumtimeGC耗时longcountGC次数long5。ServiceInstanceJVMThreadNameRemark分组键数据类型名称是否表示服务实例名称。现在nativeprobe使用uuid@ipv4作为服务实例名,当需要在aggregation中设置过滤器(Filter)时就没用了。stringserviceName表示服务的名称。stringliveCount指示当前活动线程数。intdaemonCount指示当前守护进程线程数。intpeakCount表示当前线程的峰值数。NameRemark分组键数据类型名称是否表示端点的名称,例如HTTPURI的完整路径。stringnodeType表示服务节点或网络地址的类型,如:Normal、Database、MQ、CacheenumserviceName表示服务的名称stringserviceInstanceName表示引用的服务实例id的名称。stringlatency表示每次请求的耗时intstatus表示请求是成功还是失败statusbool(true表示成功)responseCode如果请求是HTTP请求,则表示HTTP响应的状态码,如:200、404,302.inttype表示请求类型,例如:Database,HTTP,RPC,gRPCenum服务关系(ServiceRelation)计算服务之间的每个请求的指标。NameRemark是否分组关键数据类型sourceServiceName表示源服务名称stringsourceServiceNodeType表示源服务节点类型或网络地址,如:Normal,Database,MQ,CacheenumsourceServiceInstanceName表示源服务实例名称stringdestServiceName表示目标服务的名称stringdestServiceNodeType表示目标服务节点或网络地址类型,如:Normal,Database,MQ,CacheenumdestServiceInstanceName表示目标服务实例名称stringendpoint表示本次调用使用的端点stringcomponentId表示组件ID本次调用中使用的是stringlatency表示每次请求的耗时intstatus表示请求的成功或失败状态bool(true表示成功)responseCode如果请求是HTTP请求,则表示HTTP响应的状态码。如200、404、302。inttype表示请求类型,例如:Database、HTTP、RPC、gRPCenumdetectPoint本地请求检测点位置,例如:client、server、proxy。enumtlsMode表示源服务和目标服务之间的TLS模式,如:service_relation_mtls_cpm=from(ServiceRelation.*).filter(tlsMode=="mTLS").cpm()string服务实例关系(ServiceInstanceRelation)计算服务实例和服务实例之间的每个请求的度量。NameRemark是否分组关键数据类型sourceServiceName表示源服务实例名称stringsourceServiceNodeType表示源服务节点类型或网络地址,如:Normal,Database,MQ,CacheenumsourceServiceInstanceName表示源服务实例名称stringdestServiceName表示目标服务的名称destServiceNodeType表示目标服务节点或者网络地址的类型,如:Normal,Database,MQ,CacheenumdestServiceInstanceName表示目标服务实例名称stringendpoint表示本次调用使用的端点stringcomponentId表示组件本次调用使用的ID为stringlatency表示每次请求的耗时intstatus表示请求成功或失败的状态bool(true表示成功)responseCode如果请求是HTTP请求,则表示HTTP响应的状态码。如200、404、302。inttype表示请求类型,例如:Database、HTTP、RPC、gRPCenumdetectPoint本地请求检测点位置,例如:client、server、proxy。enumtlsMode表示源服务和目标服务之间的TLS模式,如:service_relation_mtls_cpm=from(ServiceRelation.*).filter(tlsMode=="mTLS").cpm()stringEndpointRelation计算依赖关系的metric数据在一个端点和另一个端点之间。这种关系很难检??测,并且还依赖于跟踪库来传播先前的端点。因此,端点关系范围的聚合仅在使用SkyWalking原生探针进行跟踪时有效,包括自动点探针(如Java、.NET)、OpenCensusSkyWalking导出器和传播跟踪上下文的其他实现。名称注是否为分组键数据类型endpoint表示父端点名称stringserviceName表示父端点的服务名称stringserviceNodeType表示父端点的服务节点或网络地址类型,如:Normal,Database,MQ,CacheenumchildEndpoint表示子端点名称stringchildServiceName表示子端点的服务名称stringchildServiceNodeType表示子端点的服务节点类型或网络地址,如:Normal,Database,MQ,CachestringchildServiceInstanceName表示子端点的服务实例名称childendpointstringrpcLatency表示RPC请求的耗时,不包括parentendpoint本身耗时intcomponentId表示本次调用使用的组件IDstringstatus表示请求成功还是失败statusbool(true表示成功)responseCode如果request为HTTP请求,表示HTTP响应的状态码inttype表示请求类型,例如:Database,HTTP,RPC,gRPCenumdetectPoint本地请求检测点位置,例如:client,server,proxy。就是枚举浏览器传输(BrowserAppTraffic)来计算浏览器应用每次请求的测量数据。NameRemark是否对key数据类型进行分组AJAX、RESOURCE、VUE、PROMISE、UNKNOWNenumBrowserSingleVersionTraffic(BrowserAppSingleVersionTraffic)计算浏览器应用程序中单个浏览器版本的每个请求的指标数据。NameRemark是否分组键数据类型name表示每次请求的单一版本名称stringserviceName表示浏览器应用程序的名称stringcount表示请求次数,固定为1inttrafficCategory表示传输类别,如:NORMAL,FIRST_ERROR,ERRORenumerrorCategory指示错误类别,例如:AJAX、RESOURCE、VUE、PROMISE、UNKNOWN枚举浏览器页面流量(BrowserAppPageTraffic)计算浏览器应用程序中页面的每个请求的指标数据。NameRemark是否分组键数据类型name表示每次请求的页面名称stringserviceName表示浏览器应用名称stringcount表示请求次数,固定为1inttrafficCategory表示传输类别,如:NORMAL,FIRST_ERROR,ERRORenumerrorCategory表示错误类别,如:AJAX、RESOURCE、VUE、PROMISE、UNKNOWN枚举浏览器页面耗时(BrowserAppPagePerf)计算浏览器应用中页面每次请求耗时的测量数据。NameRemark是否分组键数据类型name表示每次请求的页面名称stringserviceName表示浏览器应用名称stringredirectTime表示重定向时间int(单位:毫秒)dnsTime表示DNS查询时间int(单位:毫秒)ttfbTimeTime-从发送页面请求到接收到响应数据的第一个字节耗时int(单位:毫秒)tcpTimeTCP连接耗时int(单位:毫秒)transTime内容传输耗时int(单位:毫秒)domAnalysisTimeDOM结构解析时间-耗时int(单位:毫秒)fptTime首次渲染时间/白屏时间int(单位:毫秒)domReadyTimeDOM结构准备耗时int(单位:毫秒)loadPageTime整个页面加载时间int(毫秒)resTime页面同步加载资源timeint(单位:毫秒)sslTime仅对HTTPS有效int(单位:毫秒)ttlTime首次交互时间int(单位:毫秒)firstPackTime首包时间int(单位:毫秒)fmpTime首次有效绘制时间int(单位:毫秒)注:本文以SkyWalking8.2.0版本为例,版本不同会有细微差异。最后谢谢大家的喜欢和关注,帅气又漂亮。
