
這篇文章由Travis Keep和Sri Harsha Yayi撰寫。
【資料圖】
現(xiàn)代應(yīng)用程序體系結(jié)構(gòu)很復(fù)雜,通常由數(shù)百個(gè)以不同語(yǔ)言和不同團(tuán)隊(duì)實(shí)現(xiàn)的分布式微服務(wù)組成。作為開(kāi)發(fā)人員、站點(diǎn)可靠性工程師或 DevOps 專業(yè)人員,您負(fù)責(zé)這些復(fù)雜系統(tǒng)的可靠性和性能。借助可觀測(cè)性,可以詢問(wèn)有關(guān)系統(tǒng)的問(wèn)題,并根據(jù)系統(tǒng)生成的遙測(cè)數(shù)據(jù)獲取答案。指標(biāo)數(shù)據(jù)以及應(yīng)用程序的 Aria 操作警報(bào)可以在需要注意時(shí)通知你。分布式跟蹤可以幫助您查明故障的根本原因,并通過(guò)分析跨服務(wù)移動(dòng)的每個(gè)請(qǐng)求來(lái)識(shí)別性能瓶頸。那么,我們?nèi)绾螜z測(cè)我們的服務(wù)以發(fā)出指標(biāo)和跟蹤呢?
應(yīng)用程序的 Aria 操作?支持指標(biāo)和跟蹤的各種檢測(cè)和引入方法。現(xiàn)在這包括對(duì)OpenTelemetry?的支持,這是一個(gè)新的行業(yè)標(biāo)準(zhǔn),它合并了OpenTracing和OpenCensus項(xiàng)目,為監(jiān)控分布式系統(tǒng)提供了一個(gè)完整的遙測(cè)系統(tǒng)。OpenTelemetry 提供了一組 API、SDK 和集成,用于收集和導(dǎo)出分布式微服務(wù)?生成的指標(biāo)、跟蹤和日志,以便可以使用應(yīng)用程序的 Aria 操作等平臺(tái)對(duì)其進(jìn)行監(jiān)視和分析。您可以將應(yīng)用程序配置為使用波前代理將指標(biāo)和跟蹤數(shù)據(jù)發(fā)送到應(yīng)用程序的 Aria 操作。
不熟悉開(kāi)放遙測(cè)?不用擔(dān)心!使用開(kāi)放式遙測(cè),不需要手動(dòng)檢測(cè)。讓我們探討一下如何開(kāi)始使用應(yīng)用程序的 OpenTelemetry 和 Aria 操作,而無(wú)需手動(dòng)檢測(cè)Java 應(yīng)用程序。事實(shí)上,我們可以通過(guò)三個(gè)簡(jiǎn)單的步驟帶您到達(dá)那里。
在我們開(kāi)始之前,有幾個(gè)先決條件:
您需要一個(gè)應(yīng)用程序的 Aria 操作帳戶來(lái)可視化和監(jiān)視應(yīng)用程序運(yùn)行狀況。如果您還沒(méi)有,可以在此處注冊(cè)。碼頭工人Java 11 或更高版本馬文配置應(yīng)用程序的 Aria 操作 URL 和令牌。(如果您已注冊(cè)免費(fèi)試用版,請(qǐng)按以下步驟獲取令牌。
1.確保您具有代理權(quán)限。可以通過(guò)轉(zhuǎn)到??https://{cluster}.wavefront.com/userprofile/groups??來(lái)查看您是否具有代理管理權(quán)限。“代理”旁邊的復(fù)選框表示您擁有權(quán)限。如果您沒(méi)有在“代理”旁邊看到復(fù)選框,則您的管理員需要將此權(quán)限添加到您的用戶帳戶。
2. 如果您注冊(cè)了免費(fèi)試用版,請(qǐng)按照以下步驟獲取 API 令牌。
3. 運(yùn)行以下命令以安裝代理:
??docker run -d \?
?
??-e WAVEFRONT_URL=https://{CLUSTER}.wavefront.com/api/ \?
?
??-e WAVEFRONT_TOKEN={TOKEN} \?
?
??-e JAVA_HEAP_USAGE=512m \?
?
??-e WAVEFRONT_PROXY_ARGS="-–otlpGrpcListenerPorts 4317" \?
?
??-p 2878:2878 \?
?
??-p 4317:4317 \?
?
??wavefronthq/proxy:11.4?
?
在這里,將 {CLUSTER} 替換為您的 Wavefront 集群的名稱,并將 {TOKEN} 替換為您生成的 API 令牌。請(qǐng)注意,您至少需要 11.4 版的波前代理才能正確引入 OpenTelemetry 數(shù)據(jù)。
4. 確認(rèn)代理正在運(yùn)行。??docker ps?
?
如果未列出波前代理,則表示波前代理停止運(yùn)行。如果發(fā)生這種情況,請(qǐng)使用 查看日志并查找問(wèn)題。在步驟 3 中運(yùn)行的 docker 命令會(huì)打印出容器 ID。??docker ps?
???docker logs
?
對(duì)于檢測(cè),您可以使用 OpenTelemetry 提供的 Java 代理,該代理可以附加到任何 Java 應(yīng)用程序。此代理動(dòng)態(tài)注入字節(jié)碼以收集遙測(cè)數(shù)據(jù),開(kāi)發(fā)人員可以避免手動(dòng)檢測(cè)。
1. 克隆 Spring 寵物診所應(yīng)用程序并導(dǎo)航到目錄。
??git clone https://github.com/spring-projects/spring-petclinic.git?
?
??cd spring-petclinic?
?
2. 從項(xiàng)目的根目錄運(yùn)行。??./mvnw package?
?
3. 下載OpenTelemetry Java 代理。
4. 將文件路徑分配給JAVA_AGENT變量。??JAVA_AGENT=
?
5. 連接 Java 代理并啟動(dòng) Spring Petclinic 應(yīng)用程序。
??java -javaagent:$JAVA_AGENT -Dotel.service.name=petclinic -Dotel.resource.attributes=application=demo-petclinic -Dotel.traces.exporter=otlp -Dotel.metrics.exporter=otlp -jar target/*.jar?
?
6. 導(dǎo)航到??http://localhost:8080??并與 Petclinic 應(yīng)用程序交互以生成遙測(cè)數(shù)據(jù)。
可以通過(guò)以下方式查看分布式跟蹤數(shù)據(jù):
1. 在波前頂部的菜單欄中,轉(zhuǎn)到應(yīng)用程序 -> 跟蹤。
2.您將看到類似于以下內(nèi)容的屏幕:
如果您轉(zhuǎn)到應(yīng)用程序 ->應(yīng)用程序狀態(tài),您將看到類似于以下屏幕截圖的內(nèi)容:
如果您單擊Petclinic并從彈出菜單中選擇“查看服務(wù)儀表板”,您將看到類似于以下屏幕截圖的內(nèi)容。服務(wù)儀表板提供服務(wù)級(jí)別的運(yùn)行狀況概述。
當(dāng)從 Wavefront 代理收集的指標(biāo)數(shù)據(jù)發(fā)送到應(yīng)用程序的 Aria 操作時(shí),您可以在應(yīng)用程序的 Aria 操作用戶界面中檢查它們。
例如,查詢 ts(jvm.threads.live) 顯示 Petclinic 應(yīng)用程序中的活動(dòng)線程總數(shù)。
此查詢顯示過(guò)去 15 分鐘內(nèi) HTTP 響應(yīng)時(shí)間的第 85 個(gè)百分位數(shù):cumulativePercentile(85, mavg(15m, deriv(sum(ts(http.server.duration), le))))。在這種情況下,85% 的 HTTP 響應(yīng)時(shí)間為 98.75 毫秒或更短。
注意:此查詢最多可能需要 15 分鐘才能完成。
VMware Aria Applications Operations 的遙測(cè)數(shù)據(jù)功能提供了分布式系統(tǒng)的單一、簡(jiǎn)潔的視圖,但只有檢測(cè)的應(yīng)用程序才能實(shí)現(xiàn)。好消息是,OpenTelemetry提供了一組標(biāo)準(zhǔn)的API和庫(kù)來(lái)檢測(cè)我們的系統(tǒng),它為跨語(yǔ)言和框架自動(dòng)檢測(cè)應(yīng)用程序提供了基礎(chǔ)。
標(biāo)簽: 應(yīng)用程序 遙測(cè)數(shù)據(jù) 屏幕截圖