在 Java Spring Boot 伺服器上安裝 New Relic (APM)
本文由 AI 輔助翻譯自韓文原文。 閱讀韓文原文 →

目標
在 Java Spring Boot 伺服器上安裝 New Relic,透過 APM 來監控 transaction(交易)與 error(錯誤)。
部署情況
假設有多個 repository(儲存庫),並且混合使用以下兩種方式:
- Docker on EC2
- ECS & Code Deploy
安裝
註冊會員後,按照 New Relic 提供的 guide(指南)依序進行。
- 選擇 APM 後,再選擇 Java
- 點擊 Begin installation 按鈕
- 點擊右下角的 Other Java installation options

- 在第 1 步填寫應用程式名稱。
- 在第 2 步點擊 Download 按鈕,下載 newrelic.yml 檔案。

- 在第 3 步點擊 Copy to clipboard 複製 curl 指令,並在 shell 中貼上以下載 newrelic-java.zip。
- 在第 4 步選擇 Spring Boot。
- 之後的步驟可以忽略。以第 6 步來說,如果想檢查 Docker 的 condition,可以登入 AWS console 輸入指令。不過,因為 New Relic 每月免費額度 100G 超過後,每 1G 需要支付 $0.25,所以建議用其他監控工具來確認。
- 將下載的 newrelic-java.zip 解壓縮後,放在 Spring project 的 root(根目錄)正下方。這時可以更改資料夾名稱等,確保 jar 檔都配置在 newrelic 資料夾底下。
- 透過 git push 反映到 repository 中。大部分開發者會將 jar 檔設為 git ignore,所以要使用 force add。
git add <blar>.jar -f
- 進行一次部署,讓 newrelic 檔案上傳到伺服器。
如果是 Docker on EC2
- 打開自己系統中的 docker-compose.yml,並修改如下:
- 在 entrypoint 中加入了 -javaagent:/newrelic/newrelic.jar。-javaagent 指令必須放在 -jar 前面。
- 在 volumes 中加入了 ./newrelic:/newrelic/。如果在上方 entrypoint 執行 javaagent 的部分寫成 -javaagent:/app/newrelic/newrelic.jar,就不需要 mount。
maven:
build:
context: ./
dockerfile: Dockerfile
args:
PROCESS: test
environment:
- PROCESS=test
container_name: maven
expose: [ 8080 ]
ports:
- 8080:8080
entrypoint: java -javaagent:/newrelic/newrelic.jar -Dnewrelic.environment=test -jar -DSpring.profiles.active=test /app/target/test-0.0.1-SNAPSHOT.jar
depends_on:
volumes:
- ./:/app
- ./newrelic:/newrelic/
- git push 後進行部署。
如果是 ECS & Code Deploy
- 前往 AWS 的 ECS,點擊任務定義(Task Definitions)。
- 選擇要套用 New Relic 的伺服器,然後點擊建立新修訂版本(修訂版本的英文是 revision)。
- 在建立新修訂版本頁面中移到最下方,點擊磁碟區的「透過 JSON 設定」按鈕。
- 將 JSON 中的 command 部分修改如下。這和使用 EC2 時寫在 entrypoint 裡的內容一樣。修改後點擊儲存按鈕。
- 雖然嘗試過 mount,但沒有如預期運作,所以放棄了。
"command": [
"java",
"-javaagent:/app/newrelic/newrelic.jar",
"-jar",
"-DSpring.profiles.active=release",
"/app/target/test-0.0.1-SNAPSHOT.jar"
],
- 點擊建立按鈕來產生新修訂版本。
- 進行部署。