ติดตั้ง Newrelic (APM) บนเซิร์ฟเวอร์ Java Spring Boot
บทความนี้แปลจากต้นฉบับภาษาเกาหลีโดยใช้ AI ช่วย อ่านต้นฉบับภาษาเกาหลี →

เป้าหมาย
ติดตั้ง Newrelic บนเซิร์ฟเวอร์ Java Spring Boot เพื่อมอนิเตอร์ Transaction และ Error ผ่าน APM
สถานการณ์การ Deploy
สมมติว่ามีหลาย Repository และใช้งานผสมผสานกันระหว่าง 2 รูปแบบด้านล่างนี้
- Docker on EC2
- ECS & Code Deploy
การติดตั้ง
หลังจากสมัครสมาชิกแล้ว ให้ทำตาม Guide ที่ Newrelic มีให้ตามลำดับ
- เลือก 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 ถ้าอยากเช็ก Condition ของ Docker ให้เข้าไปพิมพ์คำสั่งใน AWS Console แต่เนื่องจาก Newrelic จะคิดเงิน $0.25 ต่อ 1GB หากใช้เกินโควตาฟรี 100GB ต่อเดือน จึงขอแนะนำให้ใช้เครื่องมือมอนิเตอร์ตัวอื่นเช็กแทน
- แตกไฟล์ newrelic-java.zip ที่ได้มา แล้วนำไปวางไว้ใต้ Root ของโปรเจกต์ Spring โดยตรง ตอนนี้อาจจะต้องเปลี่ยนชื่อโฟลเดอร์นิดหน่อยเพื่อให้ไฟล์ jar ต่างๆ เข้าไปอยู่ใต้โฟลเดอร์ newrelic
- ทำ git push เพื่ออัปเดตลง Repository นักพัฒนาส่วนใหญ่มักจะตั้งค่า ignore ไฟล์ jar ไว้ใน git ดังนั้นให้ใช้คำสั่ง force add
git add <blar>.jar -f- ลอง Deploy ดูหนึ่งรอบเพื่อให้ไฟล์ของ Newrelic ขึ้นไปอยู่บนเซิร์ฟเวอร์
กรณีใช้ Docker on EC2
- เปิดไฟล์ docker-compose.yml ในระบบของคุณแล้วแก้ไขตามนี้
- เพิ่ม -javaagent:/newrelic/newrelic.jar เข้าไปใน entrypoint โดยคำสั่ง -javaagent จะต้องอยู่หน้า -jar เสมอ
- เพิ่ม ./newrelic:/newrelic/ เข้าไปใน volumes ถ้าใน 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 แล้วทำการ Deploy ได้เลย
กรณีใช้ ECS & Code Deploy
- เข้าไปที่ ECS ของ AWS แล้วคลิกที่ Task Definitions
- เลือกเซิร์ฟเวอร์ที่ต้องการติดตั้ง Newrelic แล้วกด Create new revision
- ในหน้าสร้าง Revision ใหม่ ให้เลื่อนลงมาล่างสุด ตรงส่วน Volumes ให้กดปุ่ม "Configure via JSON"
- ใน JSON ให้เปลี่ยนตรงส่วน command ตามด้านล่างนี้ ซึ่งจะเหมือนกับที่เขียนใน entrypoint ตอนใช้ EC2 เลย แก้เสร็จแล้วกดปุ่ม Save
- ลองพยายาม Mount ดูแล้วแต่ไม่เป็นไปตามที่คิด เลยล้มเลิกไป
"command": [
"java",
"-javaagent:/app/newrelic/newrelic.jar",
"-jar",
"-DSpring.profiles.active=release",
"/app/target/test-0.0.1-SNAPSHOT.jar"
],- กดปุ่ม Create เพื่อสร้าง Revision ใหม่
- ทำการ Deploy