Pinpoint๋กœ APM ๊ตฌ์ถ•ํ•˜๊ธฐ With SpringBoot

1. APM ์ด๋ž€?

APM์ด๋ž€ Application Performance Management / Application Performance Monitoring์˜ ์•ฝ์ž์ด๋‹ค.

์ฆ‰, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ๊ด€๋ฆฌ/๋ชจ๋‹ˆํ„ฐ๋ง ์„ ๋‹ด๋‹นํ•œ๋‹ค. 

 

APM ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฉ”ํŠธ๋ฆญ(CPU, Memory, Thread, Transaction, …), ์ด๋ฒคํŠธ, ๋กœ๊ทธ, ํŠธ๋žœ์žญ์…˜ ๋“ฑ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์ด๋ ‡๊ฒŒ ๋ถ„์„ํ•œ ๋ฐ์ดํ„ฐ๋Š” ์•„๋ž˜์˜ ๋ชฉ์ ์„ ์œ„ํ•ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์˜ˆ์ธกํ•˜๊ณ  ๋ฐฉ์ง€
  • ๊ณ ๊ฐ ๊ธฐ๋Œ€ ์„ฑ๋Šฅ ๋ณด์žฅ, ๊ณ ๊ฐ ๊ฒฝํ—˜ ํ–ฅ์ƒ
  • ์‘๋‹ต ์‹œ๊ฐ„ ๋ณด์žฅ
  • ๊ฐ€์šฉ์„ฑ ์ฆ๋Œ€, ๋‹ค์šดํƒ€์ž„ ๊ฐ์†Œ

 

 

 

 

 

 

 

 

 

 

2. Pinpoint ์™€ Prometheus+Grafana ์ฐจ์ด

Prometheus+Grafana๋„ ์œ ๋ช…ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ์ด๋‹ค. Pinpoint์™€ Prometheus๋Š” ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜์ง€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ชฉ์ ์—์„œ ์•ฝ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ๊ฐ–๋Š”๋‹ค. 

 

์ถ”์ 

Prometheus๋Š” ์„œ๋ฒ„์˜ ๊ฐ ์ง€ํ‘œ(metric)์„ ํ™œ์šฉํ•ด์„œ JVM Memory, ์ดˆ๋‹น ํŠธ๋žœ์žญ์…˜ ๋ฐœ์ƒ ์ˆ˜, Thread ์ƒํ™ฉ ๋“ฑ ์ž์› ์ƒํƒœ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์ข‹๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ „์ฒด์ ์ธ ์‹œ์Šคํ…œ ์ƒํƒœ๋ฅผ ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ์–ด ์ „๋ฐ˜์ ์ธ ์ž์› ๊ด€๋ฆฌ์— ์ ํ•ฉํ•˜๋‹ค. 

 

๋ฐ˜๋ฉด, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋‹จ์ˆœํžˆ ์‹œ๊ฐํ™”๋งŒ์œผ๋กœ๋Š” ์ •ํ™•ํ•œ ์›์ธ์„ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜  ์žˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๋‹จ์ˆœํžˆ ์‹œ๊ฐํ™”๋งŒ ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ ์ •ํ™•ํ•œ ์›์ธ์„ ํŒŒ์•…ํ•˜๊ธฐ ํž˜๋“ค ์ˆ˜๋„ ์žˆ๋‹ค.

 

์ด๋•Œ Pinpoint๋Š” ํŠธ๋ ˆ์ด์‹ฑ(tracing)์„ ํ†ตํ•ด ์š”์ฒญ์˜ ํ๋ฆ„์„ ์ถ”์ ํ•˜๊ณ , ํŠน์ • ๋ฌธ์ œ ์ง€์ ์„ ๋ช…ํ™•ํžˆ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. 

 

์‰ฝ๊ฒŒ ๋งํ•ด, Prometheus์™€ Grafana๋Š” ์ „์ฒด์ ์ธ ์‹œ์Šคํ…œ์˜ ์ƒํƒœ(์ˆฒ)๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ์œ ๋ฆฌํ•˜๋ฉฐ, Pinpoint๋Š” ํŠน์ • ๋ฌธ์ œ์˜ ์›์ธ(๋‚˜๋ฌด)์„ ๊นŠ์ด ๋ถ„์„ํ•˜๋Š” ๋ฐ ํšจ๊ณผ์ ์ด๋‹ค. 

 

 

 

๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์งˆ์˜

Prometheus๋Š” ๋‚ด์žฅ๋œ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์— ์ˆ˜์ง‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , PromQL์„ ํ†ตํ•ด ์งˆ์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Pinpoint์—์„œ๋Š” Elasticsearch์™€ HBase์™€ ๊ฐ™์€ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ณ , Kibana๋ฅผ ํ†ตํ•ด ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‹œ๊ฐํ™”ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

 

์ˆ˜์ง‘ ๋ฐฉ์‹

๋‘ APM ๋„๊ตฌ๋Š” ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐฉ์‹์— ๋”ฐ๋ฅธ ํ™•์žฅ์„ฑ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

 

Prometheus๋Š” Exporter๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฉ”ํŠธ๋ฆญ ๋ฐ์ดํ„ฐ๋ฅผ Pull ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ง‘ํ•˜๊ธฐ ๋•Œ๋ฌธ ๋ถ„์‚ฐ ์„œ๋ฒ„์— ์ ์šฉํ•˜๊ธฐ์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

 

Pinpoint๋Š” Prometheus๋ž‘ ๋‹ค๋ฅด๊ฒŒ Push ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ Collector์— ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„์‚ฐ ์„œ๋ฒ„์—์„œ๋„ ์ž˜ ๋™์ž‘ํ•œ๋‹ค.

 

ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘์—ˆ๊ณ , ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ฆ๊ฐ€ํ•ด๋„ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

 

 

  • Pinpoint Agent - ์• ํ”Œ๋ฆฌ์ผ€์ž‡๋…€์˜ ์„ฑ๋Šฅ ๊ด€๋ จ ์ง€ํ‘œ ์ˆ˜์ง‘ ๋ฐ ์ „๋‹ฌ
  • Pinpoint Collector - Agent์—์„œ ๋ฐ›์€ ์ •๋ณด๋ฅผ HBase์— ์ ์žฌ
  • Pinpoint Web UI - ์ˆ˜์ง‘๋œ ์ •๋ณด๋ฅผ ํ™”๋ฉด์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค.(์„ฑ๋Šฅ, ๋ชจ๋‹ˆํ„ฐ๋ง, ์ง€ํ‘œ)

 

 

 

 

 

 

 

 

 

 

 

3. Pinpoint ๋„์šฐ๊ธฐ

 

ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด 2๊ฐœ์˜ ๊ฐ€์ƒ ์„œ๋ฒ„๋ฅผ ๋„์› ๊ณ ,

Server1์—” SpringBoot + Agent

Server2์—” HBase, Collector, Pinpoint Web์„ ๋„์šธ ๊ฒƒ์ด๋‹ค. 

 

Server1 ํ™˜๊ฒฝ์€ SpringBoot Application์„ ๋„์šฐ๊ธฐ ์œ„ํ•œ Docker, Java21, .. ์„ ์„ค์น˜ํ•ด๋’€๊ณ 

Server2 ํ™˜๊ฒฝ์—” Java8 ๋งŒ ์„ค์น˜ํ•ด๋’€๋‹ค. 

 

Pinpoint์˜ ๋ฒ„์ „์€ Pinpoint Github์—์„œ ๋ณธ์ธ์—๊ฒŒ ๋งž์ถฐ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

๋‚˜๋Š” SpringBoot 3.x, Java21 ์— 

Agent: 3.0.1 (3 ์ดํ•˜ ๋ฒ„์ „์ด Agent๋Š” Java21๊ณผ ํ˜ธํ™˜X)

HBase: 1.2.7

Collector: 2.2.2

Web: 2.2.2

๋ฒ„์ „์„ ์‚ฌ์šฉํ•ด์„œ ๋„์› ๊ณ  ๋ฌธ์ œ ์—†์ด ๋™์ž‘ํ–ˆ๋‹ค. 

 

 

 

 

 

Server2 (APM ํ™˜๊ฒฝ ์„ธํŒ…)

Pinpoint๋Š” Hbase 1.2.X ๋ฒ„์ „์— ์ตœ์ ํ™”๋˜์–ด์žˆ๋‹ค๊ณ  ํ•ด์„œ 1.2.7์„ ์„ค์น˜ํ–ˆ๋‹ค.

 

HBase ์„ค์น˜

wget https://archive.apache.org/dist/hbase/1.2.7/hbase-1.2.7-bin.tar.gz

tar xzvf hbase-1.2.7-bin.tar.gz

vi ./hbase-1.2.7/conf/hbase-env.sh

// ์ด ์˜ต์…˜์„ ์ฃผ์„์ฒ˜๋ฆฌ ํ•˜์ง€ ์•Š์œผ๋ฉด hbase ์‹คํ–‰์‹œ warning ์ด ๋œธ
# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
# export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"

./hbase-1.2.7/bin/start-hbase.sh

 

 

HBase ์™€ JAVA Version ํ˜ธํ™˜์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

 

 

 

 

PinPoint ์ •๋ณด๋ฅผ ๋‹ด์„ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

# ์Šคํฌ๋ฆฝํŠธ ๋‹ค์šด
wget https://raw.githubusercontent.com/pinpoint-apm/pinpoint/master/hbase/scripts/hbase-create.hbase

# ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
./hbase-1.2.7/bin/hbase shell hbase-create.hbase

 

 

 

 

 

Pinpoint Collector ์„ค์น˜

// jar ํŒŒ์ผ ๋‹ค์šด
wget https://github.com/pinpoint-apm/pinpoint/releases/download/v2.2.2/pinpoint-collector-boot-2.2.2.jar

// ์‹คํ–‰๊ถŒํ•œ
chmod +x pinpoint-collector-boot-2.2.2.jar

// ์‹คํ–‰
nohup java -jar -Dpinpoint.zookeeper.address=localhost pinpoint-collector-boot-2.2.2.jar > collector.log 2> collector-error.log &

 

 

 

 

 

Pinpoint Web ์„ค์น˜

# jar ํŒŒ์ผ ๋‹ค์šด
wget https://github.com/pinpoint-apm/pinpoint/releases/download/v2.2.2/pinpoint-web-boot-2.2.2.jar

# ์‹คํ–‰ ๊ถŒํ•œ ๋ถ€์—ฌ
chmod +x pinpoint-web-boot-2.2.2.jar

# ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰
nohup java -jar -Dpinpoint.zookeeper.address=localhost pinpoint-web-boot-2.2.2.jar > web.log 2> web-error.log &

 

 

 

 

Server1 (SpringBoot + Agent)

 

Agent ์„ค์น˜

# agent ์„ค์น˜
wget https://repo1.maven.org/maven2/com/navercorp/pinpoint/pinpoint-agent/3.0.1/pinpoint-agent-3.0.1.tar.gz

# ์••์ถ• ํ•ด์ œ
tar xvzf pinpoint-agent-3.0.1.tar.gz

# config ํŒŒ์ผ ์ˆ˜์ •
sudo vi pinpoint-root.config

# ์•ž์—์„œ ๊ตฌ์„ฑํ•œ monitoring EC2์˜ ip๋กœ ์ˆ˜์ •
profiler.transport.grpc.collector.ip=pinpoint ip๋กœ ๋ณ€๊ฒฝ

 

 

Agent๋Š” Java21 ๊นŒ์ง€ ์ง€์› ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

 

 

 

 

Spring Boot Dockerfile ์ž‘์„ฑ

# Java 21 OpenJDK ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค์ •
FROM eclipse-temurin:21-jdk-jammy

# ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ •
WORKDIR /app

# JAR ํŒŒ์ผ ๋ณต์‚ฌ
COPY build/libs/arch-unit-test-0.0.1-SNAPSHOT.jar app.jar

EXPOSE 8080

# ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ๋ช…๋ น
ENTRYPOINT ["java", "-jar","-javaagent:/pinpoint/pinpoint-bootstrap-3.0.1.jar", "-Dpinpoint.agentId=appDev","-Dpinpoint.applicationName=app1","-Dpinpoint.config=/pinpoint/pinpoint-root.config", "-Duser.timezone=Asia/Seoul", "/app/app.jar"]

 

์‹คํ–‰ ๋ช…๋ น์„ ๋ณด๋ฉด /pinpoint ํ•˜์œ„์—์„œ pinpoint ๊ด€๋ จํ•ด์„œ ์ ‘๊ทผํ•˜๊ณ  ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ € ๋‚ด์šฉ๋“ค์„ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์œผ๋กœ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ ์‹œ์ผœ์ค˜์•ผ ํ•œ๋‹ค. 

 

 

 

 

Spring Boot Docker ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

sudo docker run -d -p 8080:8080 -v /home/js.kim/pinpoint/pinpoint-agent-3.0.1:/pinpoint --network pinpoint --name app1 app1

 

SpringBoot ์‹คํ–‰ ์ „ ์•„๋ž˜์™€ ๊ฐ™์ด PINPOINT๊ฐ€ ๋จผ์ € ๋œฌ๋‹ค. 

 

 

 

 

 

Postgres DB ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

docker run -d --network pinpoint --name postgres -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=testDB -p 15432:5432 postgres

 

 

 

 

 

 

 

 

 

4. Pinpoint ๊ธฐ๋Šฅ

Server2์— ๋„์› ๋˜ Pinpoint Web ์ฃผ์†Œ [ip]:8080 ๋กœ ์ ‘๊ทผํ•ด๋ณด๋ฉด Agent์™€ ํ•จ๊ป˜ ์‹คํ–‰์‹œ์ผฐ๋˜ SpringBoot Application์ด ๋œฌ๋‹ค. 

 

 

 

 

Postman์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๋ณด๋ฉด ์ด๋Ÿฐ์‹์œผ๋กœ ServerMap์ด ์ œ๊ณต๋˜๊ณ  ํ˜ธ์ถœ ํšŸ์ˆ˜ ๋˜ํ•œ ๋ณด์—ฌ์ง„๋‹ค. 

 

 

 

 

 

์šฐ์ธก ํŒจ๋„ ๋งจ ์œ„์— Scatter Chart๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ RealTime Scatter Graph๋ฅผ ๋“œ๋ž˜๊ทธํ•˜์—ฌ ๋“ค์–ด๊ฐ€๋ฉด, Pinpoint CallStack ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

 

์„œ๋ฒ„ Inspector ์ •๋ณด๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์•„๋ž˜์™€ ๊ฐ™์€ ์ •๋ณด๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

  • Heap Usage: JVM์˜ Heap ์ •๋ณด์™€ Major Garbage Collection์— ์†Œ์š”๋œ ์‹œ๊ฐ„.
  • Non-Heap Usage: JVM์˜ Non-Heap ๋ฉ”๋ชจ๋ฆฌ ์ •๋ณด์™€ Major Garbage Collection์— ์†Œ์š”๋œ ์‹œ๊ฐ„.
  • JVM/System CPU Usage: JVM๊ณผ ์‹œ์Šคํ…œ์˜ CPU ์‚ฌ์šฉ๋Ÿ‰. ๋ฉ€ํ‹ฐ์ฝ”์–ด CPU์˜ ๊ฒฝ์šฐ ์ „์ฒด ์ฝ”์–ด ์‚ฌ์šฉ๋Ÿ‰์˜ ํ‰๊ท  ๊ฐ’.
  • Transactions Per Second: ์„œ๋ฒ„๋กœ ์œ ์ž…๋œ ์ดˆ๋‹น ํŠธ๋žœ์žญ์…˜ ์ˆ˜.
  • Active Requests: ์‚ฌ์šฉ์ž ์š”์ฒญ์„ ์ฒ˜๋ฆฌ ์ค‘์ธ Agent์˜ ํ™œ์„ฑ ์š”์ฒญ ํ˜„ํ™ฉ.
  • Total Threads: Agent๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ „์ฒด ์“ฐ๋ ˆ๋“œ ์ˆ˜.
  • Response Time: Agent์˜ ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„.
  • Open File Descriptors: ํ˜„์žฌ ์—ด๋ ค ์žˆ๋Š” File Descriptor์˜ ๊ฐœ์ˆ˜ ๋ฐ ์ƒํƒœ.
  • Direct Buffer Count: Agent์˜ Direct Buffer ๊ฐœ์ˆ˜.
  • Direct Buffer Memory: Agent์˜ Direct Buffer ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ํ˜„ํ™ฉ.
  • Mapped Buffer Count: Agent์˜ Mapped Buffer ๊ฐœ์ˆ˜.
  • Loaded Classes: Agent์— ๋กœ๋“œ๋œ ํด๋ž˜์Šค์˜ ์ด ๊ฐœ์ˆ˜.

 

 

 

 

 

 

 

 

 

 

5. ๋งˆ์น˜๋ฉฐ

Pinpoint๋Š” ๋ณ‘๋ชฉ ๊ตฌ๊ฐ„์„ ํŒŒ์•…ํ•˜๊ฑฐ๋‚˜ ๋น„ํšจ์œจ์ ์ธ ๋ฉ”์†Œ๋“œ์™€ ์ฟผ๋ฆฌ๋ฅผ ๋ถ„์„ํ•˜๊ธฐ์— ์ ํ•ฉํ•ด๋ณด์˜€๋‹ค. ๋˜ํ•œ Zipkin ์ฒ˜๋Ÿผ ๋ถ„์‚ฐ ์ถ”์ ๋„ ๊ฐ€๋Šฅํ•  ๋ฟ๋”๋Ÿฌ JVM ๊ด€๋ จํ•œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ์ •๋ณด ๋˜ํ•œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

ํŠนํžˆ, Agent ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ PUSH ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— MSA ํ™˜๊ฒฝ์—์„œ๋„ ์ ํ•ฉํ–ˆ๊ณ , Product ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด ๊ตฌ์ถ•์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์ด ํฐ ์žฅ์ ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

 

์•Œ๋ฆผ ๊ธฐ๋Šฅ์€ ๋‹ค๋ค„๋ณด์ง€ ์•Š์•˜์ง€๋งŒ ์ด๋ฉ”์ผ, SMS, ์›นํ›…์„ ํ†ตํ•ด ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์ค€๋‹ค. 

 

 

 

 

 

 

 

 

 

 

+ ๋ชจ๋‹ˆํ„ฐ๋ง, WAS๋ฅผ ํ•˜๋‚˜์˜ ์„œ๋ฒ„์—์„œ ๊ตฌ์ถ•ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

Pinpoint ๋ฅผ ๋„์ž…ํ•˜๊ธฐ ์œ„ํ•ด์„  Java ๋ฒ„์ „์ด ๊ต‰์žฅํžˆ ์ค‘์š”ํ•˜๋‹ค. 

์ด๊ฒƒ์ €๊ฒƒ ๋‹ค ํ…Œ์ŠคํŠธํ•ด๋ณธ ๊ฒฐ๊ณผ Java8๋กœ ๋„์šฐ๋Š”๊ฒŒ Hbase, Pinpoint(Collector, Web)์ด๋ž‘ ์ฐฐ๋–ก์ด๋‹ค. 

 

ํ•˜๋‚˜์˜ ์„œ๋ฒ„์—์„œ Pinpoint ํˆด๊ณผ WAS๋ฅผ ๋„์šฐ๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด Java Version์„ ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ./hbase-1.2.7/bin/start-hbase.sh

 

start-hbase.sh ๊ฐ™์ด ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์ƒ๋‹จ์— JAVA_HOME์„ ๋”ฐ๋กœ ์ง€์ •ํ•ด์ค˜๋„ ๋˜‘๊ฐ™์ด ๋™์ž‘ํ•œ๋‹ค. 

 

 

 

 

๋‚˜๋Š” Pinpoint์— ํ•„์š”ํ•œ ์•ฑ๋“ค์„ ์‹คํ–‰ํ•˜๋Š” start-pinpoint-monitoring.sh ๋ผ๋Š” ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋ ค ํ•œ๋‹ค. 

#!/bin/bash

# Java 8 ๊ฒฝ๋กœ ์„ค์ •
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JAVA_HOME
export PATH=$JAVA_HOME/bin:$PATH

# ๋กœ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ
LOG_DIR="./logs"
mkdir -p $LOG_DIR

# 1. Start HBase
echo "Starting HBase..."
JAVA_HOME=$JAVA_HOME ./hbase-1.2.7/bin/start-hbase.sh > $LOG_DIR/hbase-start.log 2>&1
if [ $? -ne 0 ]; then
  echo "HBase failed to start. Check the log: $LOG_DIR/hbase-start.log"
  exit 1
fi
echo "HBase started successfully."

# 2. Run HBase shell to create tables
echo "Running HBase shell for table creation..."
JAVA_HOME=$JAVA_HOME ./hbase-1.2.7/bin/hbase shell hbase-create.hbase > $LOG_DIR/hbase-create.log 2>&1
if [ $? -ne 0 ]; then
  echo "HBase shell execution failed. Check the log: $LOG_DIR/hbase-create.log"
  exit 1
fi
echo "HBase tables created successfully."

# 3. Start Pinpoint Collector
echo "Starting Pinpoint Collector..."
nohup $JAVA_HOME/bin/java -jar -Dpinpoint.zookeeper.address=localhost pinpoint-collector-boot-2.2.2.jar > $LOG_DIR/collector.log 2> $LOG_DIR/collector-error.log &
if [ $? -ne 0 ]; then
  echo "Pinpoint Collector failed to start. Check the log: $LOG_DIR/collector-error.log"
  exit 1
fi
echo "Pinpoint Collector started successfully."

# 4. Start Pinpoint Web
echo "Starting Pinpoint Web..."
nohup $JAVA_HOME/bin/java -jar -Dpinpoint.zookeeper.address=localhost pinpoint-web-boot-2.2.2.jar > $LOG_DIR/web.log 2> $LOG_DIR/web-error.log &
if [ $? -ne 0 ]; then
  echo "Pinpoint Web failed to start. Check the log: $LOG_DIR/web-error.log"
  exit 1
fi
echo "Pinpoint Web started successfully."

echo "All services started successfully."

 

 

์ฐธ๊ณ ๋กœ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.