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

萬貓學社發表於2021-09-03

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)

相關文章