使用 New Relic 監控 Java 應用程式
1.概述
在本教程中,我們將探討如何使用New Relic監控 Java 應用程序,New Relic 是一個強大的可觀察性平台,可提供對應用程式效能的即時洞察。它可以監控回應時間、吞吐量、錯誤率等。
為了探索 New Relic 的功能,我們將建立和監控一個簡單的 Spring Boot 應用程式。
2. 項目設定
讓我們先設定一個 Spring Boot 應用程式並添加一些 REST 端點。
2.1. REST 控制器
我們將建立一個 REST 控制器並公開兩個端點:
`@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, New Relic!";
}
@GetMapping("/error")
public String error() {
throw new RuntimeException("An error occurred");
}
}`
此控制器公開一個傳回簡單訊息的端點/
hello
和一個拋出異常的端點/
error
。我們將使用這些端點來示範 New Relic 如何監控應用程式的效能和錯誤。
3.安裝New Relic
要使用 New Relic 監控我們的 Java 應用程序,我們必須註冊一個帳戶並配置 New Relic Java 代理程式。註冊是免費的,之後我們可以根據需要選擇一個計劃。
註冊後,我們就可以開始在本地設定我們的代理。
3.1. Maven 依賴項
首先,我們應該將newrelic-java Maven 依賴項作為zip
檔包含進去:
`
`
該zip
包含代理 JAR 和運行它所需的檔案。 provided
範圍確保 New Relic 代理程式在運行時可用,但不包含在我們應用程式的 JAR 檔案中。
3.2.將unpack-dependencies
目標加入 Maven Dependency 插件
我們還必須配置 Maven 依賴插件,以便在應用程式打包時解壓縮 ZIP 檔案。
為此,我們將unpack-dependencies
目標加入 Maven Dependency Plugin 中,以解壓縮 New Relic Java 代理程式:
`
`
當我們建置專案時,Maven 會下載 New Relic Java 代理程式。當我們打包應用程式時,代理程式會被解壓縮到/target
目錄中。
這將使代理在運行時在我們的類路徑上可用。
3.3.配置代理
為了自訂代理程式以使用我們的帳戶和配置,我們可以下載newrelic.yml
檔案的範本並對其進行編輯。兩個最重要的條目是app_name
和license_key
。 app_name
是將根據此應用程式的指標顯示在 New Relic 儀表板上的名稱。可以從New Relic API Keys建立/取得license_key
。
讓我們來看看所需的最小newrelic.yml
設定檔:
common: &default_settings
license_key: 'YOUR_LICENSE_KEY'
app_name: 'NewRelicApplication'
New Relic 也為上述步驟提供了引導安裝精靈。
4.運行應用程式
現在依賴項已可用,我們將代理程式新增至類別路徑以使用 New Relic 監控應用程式。我們也會向我們的 API 發出一些請求並檢查儀表板。
4.1.啟動代理
我們可以在運行應用程式時使用-javaagent
JVM 選項。
此外,如果 JAR 和設定檔不在同一個目錄中,我們必須使用-Dnewrelic.config.file
選項提供設定檔的路徑。
讓我們啟動我們的應用程式並使用 New Relic 進行檢測:
java -javaagent:path/to/newrelic.jar -Dnewrelic.config.file=path/to/newrelic.yml -jar target/my-app.jar
4.2.發出請求
具體來說,我們將使用任何瀏覽器或客戶端呼叫/hello
和/error
端點來產生監控資料。
例如,我們可以使用curl
命令發送請求:
curl http://localhost:8080/hello
curl http://localhost:8080/error
我們可以多次訪問這些端點來產生一些流量。代理程式捕獲這些請求,包括伺服器如何執行這些請求以及何時接收這些請求。
5. 監控儀表板
一旦應用程式運行並接收流量,我們就可以導航到New Relic 儀表板來查看捕獲的指標和見解。儀表板可在我們的個人資料下從與我們的許可證密鑰連接的應用程式清單中找到。
接下來,我們來看看一些 New Relic 提供的指標範例。
5.1.應用程式概述
我們可以選擇APM & Services > Summary
選項卡來概覽應用程式的效能。這包括回應時間、吞吐量、錯誤率等指標:
在這裡,我們可以看到「Web 事務時間」、「吞吐量」和「錯誤率」。
5.2.深入研究 API 效能
我們還可以深入研究特定請求以查看每個端點的詳細指標。
如果我們向下滾動,我們可以看到列出的交易:
點擊其中任何一個還將提供更詳細的指標:
最後,這有助於識別應用程式中的瓶頸並根據每個路由優化效能。
5.3. JVM 指標
另一個重要面向是監控 JVM 指標。此外,我們可以在JVM
標籤下查看 JVM 指標,例如 CPU 使用率、記憶體使用情況、堆疊記憶體、非堆疊記憶體和垃圾收集時間:
我們也可以查看JVM線程的使用情況:
這些指標特別有助於我們了解應用程式如何利用系統資源並識別任何潛在問題。
6. 結論
在本教程中,我們探討如何開始使用 New Relic 監控 Java 應用程式。我們建立了一個簡單的 Spring Boot 應用程序,配置了 New Relic Java 代理,也查看了 New Relic 儀表板上的指標。
New Relic 提供了一個強大的平台來監控和優化 Java 應用程式的效能。最後,透過利用這些見解,我們可以識別瓶頸,優化效能並確保應用程式的可靠性。
與往常一樣,本教程的程式碼可以在 GitHub 上找到