Cài đặt Newrelic (APM) cho server Java Spring Boot
Bài viết này được dịch từ bản gốc tiếng Hàn với sự hỗ trợ của AI. Đọc bản gốc tiếng Hàn →

Mục tiêu
Cài đặt Newrelic lên server Java Spring Boot để giám sát transaction và error thông qua APM.
Môi trường triển khai
Giả sử chúng ta có nhiều repository và đang sử dụng kết hợp hai phương thức dưới đây.
- Docker on EC2
- ECS & Code Deploy
Cài đặt
Sau khi đăng ký tài khoản, hãy làm theo hướng dẫn của Newrelic theo thứ tự.
- Chọn APM rồi chọn Java
- Click nút Begin installation
- Click vào Other Java installation options ở góc dưới bên phải

- Bước 1: Nhập tên ứng dụng.
- Bước 2: Nhấn nút Download để tải file newrelic.yml về.

- Bước 3: Nhấn Copy to clipboard để copy lệnh curl, sau đó paste vào shell để tải newrelic-java.zip.
- Bước 4: Chọn Spring Boot.
- Các bước sau đó có thể bỏ qua. Ở bước 6, nếu muốn kiểm tra condition của Docker, bạn có thể truy cập AWS console và nhập lệnh. Tuy nhiên, Newrelic chỉ miễn phí 100G mỗi tháng, nếu vượt quá sẽ phải trả $0.25 cho mỗi 1G, nên mình khuyên bạn dùng công cụ giám sát khác cho phần này.
- Giải nén file newrelic-java.zip vừa tải về và đặt ngay dưới thư mục root của project Spring. Lúc này, hãy đổi tên thư mục sao cho các file jar nằm ngay trong thư mục newrelic.
- Thực hiện git push để cập nhật lên repository. Hầu hết các lập trình viên đều đưa file jar vào git ignore, nên bạn cần force add.
git add <blar>.jar -f - Tiến hành deploy một lần để file newrelic được đẩy lên server.
Trường hợp dùng Docker trên EC2
- Mở file docker-compose.yml trên hệ thống của bạn và chỉnh sửa như sau:
- Thêm -javaagent:/newrelic/newrelic.jar vào entrypoint. Lệnh -javaagent bắt buộc phải nằm trước -jar.
- Thêm ./newrelic:/newrelic/ vào volumes. Nếu ở phần chạy javaagent trong entrypoint ở trên bạn để là -javaagent:/app/newrelic/newrelic.jar thì không cần mount nữa.
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/ - Sau khi git push thì tiến hành deploy.
Trường hợp dùng ECS & Code Deploy
- Vào ECS của AWS và click vào Task Definitions.
- Chọn server muốn áp dụng Newrelic và nhấn Create new revision.
- Ở trang tạo revision mới, kéo xuống dưới cùng và nhấn nút "Configure via JSON" ở phần Volumes.
- Trong file JSON, sửa phần command như bên dưới. Nó giống hệt với những gì đã viết ở entrypoint khi dùng EC2. Sửa xong thì nhấn nút lưu.
- Mình đã thử mount nhưng không được như ý nên đành bỏ cuộc.
"command": [ "java", "-javaagent:/app/newrelic/newrelic.jar", "-jar", "-DSpring.profiles.active=release", "/app/target/test-0.0.1-SNAPSHOT.jar" ], - Nhấn nút Create để tạo revision mới.
- Tiến hành deploy.