Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Elasticsearch
- 공부
- 정보처리기사 실기 기출문제
- 코틀린 코루틴의 정석
- AI
- aws
- Kubernetes
- Java
- kotlin
- kotlin spring
- CKA
- kotlin querydsl
- CKA 기출문제
- AWS EKS
- CloudWatch
- Pinpoint
- 정보처리기사 실기
- minikube
- 티스토리챌린지
- mysql 튜닝
- kotlin coroutine
- 오블완
- APM
- Spring
- MySQL
- PETERICA
- 기록으로 실력을 쌓자
- 정보처리기사실기 기출문제
- IntelliJ
- Linux
Archives
- Today
- Total
피터의 개발이야기
[Spring] Pinpoint 활용한 bootJar 실행 Shellscript 정리 본문
반응형
로컬에 개발환경을 구축하면서 사용하였던 bootJar 실행 shell문을 정리하였습니다.
로컬환경 세팅 이유
Intellij에서 개발한 것을 개발계에 올리기 직전에 로컬에서 테스트하기 위해 환경을 구성하였습니다.
로컬에 PinPoint를 구축하여서,
프론트개발자가 로컬에서 테스트 진행 시 모니터링 및 버그확인이 아주 쉬웠습니다.
로컬 빌드 방법
Intellij에서 bootJar 빌드를 마치면 jar파일이 생성되고,
쉘을 통해 jar 복사 및 SpringBoot 재가동하는 쉘을 만들었습니다.
Shell의 개요
크게 3개 파트로 구성하였습니다.
- 재사용을 위한 환경세팅 부분,
- function 선언부분
- case문으로 실행 분기를 하는 부분입니다.
bootJar.sh의 내용
#!/bin/bash
# app 구분자
readonly APP_NAME="appName"
#jar
readonly DAEMON="/Users/deseo/server/bootJar.jar"
# pinpoint 설정
readonly PINPOINT_APP_NAME="app_name"
readonly PINPOINT_APP_GROUP="app_group"
readonly AGENT_PATH="/Users/deseo/study/pinpoint/pinpoint-agent"
# spring 설정
readonly SPRING_PROFILE="dev"
readonly JAVA_OPT="-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=1024m"
# log 설정
readonly LOCAL_LOG_NAME="app.log"
# 시작
# 이미 작동 중이면 stop을 실행한다.
start()
{
echo "----------------------"
echo "Starting $APP_NAME"
if [ -n $(get_status) ]; then
echo "$APP_NAME is already running"
echo "try kill server..."
stop
fi
# nohup java -jar -Dspring.profiles.active=$SPRING_PROFILE $JAVA_OPT $DAEMON > /dev/null 2>&1 &
nohup java -jar -javaagent:$AGENT_PATH/pinpoint-bootstrap-1.8.4.jar \
-Dpinpoint.agentId=$PINPOINT_APP_GROUP \
-Dpinpoint.applicationName=$PINPOINT_APP_NAME \
-Dspring.profiles.active=$SPRING_PROFILE \
-Dserver.port=7070 -Dprofile=real \
-Dproc.name=$APP_NAME $JAVA_OPT \
$DAEMON >> $LOCAL_LOG_NAME 2>&1 &
INDEX=10
while [ -z $(get_status) ]
do
sleep 1;
echo ${get_status}
INDEX=$((INDEX - 1))
echo "$INDEX 가동 대기중"
if [ ${INDEX} -eq 0 ]; then
break
fi
done
if [ -n $(get_status) ]; then
echo " - Starting..."
echo " - Created Process ID in $(get_status)"
echo " - PID is $(get_status)"
else
echo " - failed to start."
fi
}
# 중지
stop(){
echo "----------------------"
echo "Stoping $APP_NAME"
local PID=$(get_status)
if [ -z ${PID} ];
then
echo "$APP_NAME was not running."
else
kill -15 $PID
sleep 3
echo " Shutdown ...."
fi
}
# 상태확인
status()
{
# echo "[$(get_status)]";
local PID=$(get_status)
if [ -z ${PID} ];
then
echo "$APP_NAME is stopped"
else
echo "$APP_NAME is running"
fi
}
# 프로세스 확인
get_status()
{
ps ux | grep $APP_NAME | grep -v grep | awk '{print $2}'
}
get_jar()
{
# jar 복사 경로
cp ~/git/project/build/libs/bootJar.jar /Users/deseo/server/bootJar.jar
echo "copy done"
}
case "$1" in
start)
start
sleep 4
;;
stop)
stop
status
;;
restart)
get_jar
stop
start
sleep 10
status
;;
status)
status
;;
copy)
get_jar
;;
*)
echo "Usage: $0 {start | stop | status | restart | copy }"
esac
exit 0
실행방법
sh test.sh status
소스는 여기에
반응형
'DevOps > Pinpoint' 카테고리의 다른 글
[docker] PinPoint(v2.3.0) docker image만들기 (0) | 2023.08.03 |
---|---|
[docker] PinPoint(v1.8.4) docker image만들기 (0) | 2021.02.12 |
[APM] PinPoint 설치 - 4편 - Agent (0) | 2020.12.16 |
[APM] PinPoint 설치 - 3편 - Web, Collector (0) | 2020.12.15 |
[APM] PinPoint 설치 - 2편 - hbase 스키마 생성 (0) | 2020.12.14 |
Comments