速查列表: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)。

接下來我來詳細了解一下每個作用域。

文章持續更新,微信搜索「萬貓學社」第一時間閱讀,關注后回復「電子書」,免費獲取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必讀技術書籍


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM