๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[AWS] deploy.sh log๋ฅผ Crontab ์Šค์ผ€์ฅด๋ง์œผ๋กœ AWS S3์— ์ €์žฅํ•˜๊ธฐ ๋ณธ๋ฌธ

๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ด๐Ÿ’ป/๐€๐–๐’

[AWS] deploy.sh log๋ฅผ Crontab ์Šค์ผ€์ฅด๋ง์œผ๋กœ AWS S3์— ์ €์žฅํ•˜๊ธฐ

๐ŸคRyusun๐Ÿค 2024. 2. 23. 00:37

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰์ค‘, CodeDeploy log ๋ฅผ S3 ๋ฒ„ํ‚ท ์ƒ์„ฑํ›„ ํ•ด๋‹น ๋ฒ„ํ‚ท์— ์ €์žฅํ•ด๋ณด๋ผ๋Š” ๊ณผ์ œ๊ฐ€ ์ฃผ์–ด์กŒ๋‹ค.

์‰˜์Šคํฌ๋ฆฝํŠธ + crontab์„ ํ†ตํ•ด s3์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ณต์œ ํ•ด๋ณธ๋‹ค.

 

์šฐ์„  ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ๋ฐฐํฌ ๊ตฌ์ถ• ํ™˜๊ฒฝ์„ ์„ค๋ช…ํ•˜์ž๋ฉด, 

์  ํ‚จ์Šค๋กœ CI ๊ตฌ์ถ• + AWS CodeDeploy๋ฅผ ํ†ตํ•ด ์ž๋™ CD ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜์˜€๋‹ค.

์Šคํ”„๋ง๋ถ€ํŠธ์— deploy.sh ํŒŒ์ผ์„ ์ƒ์„ฑํ›„ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•ด ๋ฐฐํฌ๋ฅผ ์ž๋™ํ™”ํ–ˆ๋‹ค. 

 

1. deploy.sh ํŒŒ์ผ ์ƒ์„ฑ

#!/bin/bash
BUILD_JAR=$(ls /home/ubuntu/app/build/libs/*.jar)
JAR_NAME=$(basename $BUILD_JAR)
echo "> build : $JAR_NAME" >> /home/ubuntu/applog/applog.log

echo "> build ํŒŒ์ผ ๋ณต์‚ฌ" >> /home/ubuntu/applog/applog.log
DEPLOY_PATH=/home/ubuntu/
cp $BUILD_JAR $DEPLOY_PATH

echo "> ์‹คํ–‰์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ pid ํ™•์ธ" >> /home/ubuntu/applog/applog.log
CURRENT_PID=$(pgrep -f $JAR_NAME)

if [ -z $CURRENT_PID ]
then
  echo "> ์‹คํ–‰์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์—†์œผ๋ฏ€๋กœ ์ข…๋ฃŒํ•˜์ง€ ์•Š์Œ" >> /home/ubuntu/applog/applog.log
else
  echo "> kill -9 $CURRENT_PID" >> /home/ubuntu/applog/applog.log
  kill -9 $CURRENT_PID
  sleep 10
fi
# deploy

DEPLOY_JAR=$DEPLOY_PATH$JAR_NAME
echo "> DEPLOY_JAR ๋ฐฐํฌ"    >> /home/ubuntu/applog/applog.log
nohup java -jar $DEPLOY_JAR >> /home/ubuntu/applog/applog.log 2>/home/ubuntu/applog/errlog.log &

 

ํ•„์ž๋Š” ๋ฐฐํฌ ์„ฑ๊ณต ๋กœ๊ทธ๋ฅผ ec2๋‚ด /home/ubuntu/applog/applog.log ํŒŒ์ผ์— ์ €์žฅ, ์‹คํŒจ๋กœ๊ทธ๋Š” errlog.log์— ์ €์žฅ๋˜๊ฒŒ ํ•˜์˜€๋‹ค. 

์‰˜ ์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋…, ์ž‘์„ฑ ๋ฐฉ๋ฒ•, ์ฝ”๋“œ๋Š” ์•„๋ž˜ ๋ธ”๋กœ๊ทธ์—์„œ ์ž์„ธํ•˜๊ฒŒ ๋‚˜์™€์žˆ์–ด ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ•˜๊ธธ ์ถ”์ฒœํ•œ๋‹ค.

 

https://velog.io/@mooh2jj/์‰˜-์Šคํฌ๋ฆฝํŠธ๋ž€

 

์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ž€(+deploy.sh)

์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ž€ SHELL์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋“ค์˜ ์กฐํ•ฉ์œผ๋กœ ๋ชจ์•„์„œ ๋งŒ๋“  ๋ฐฐ์น˜(Batch)ํŒŒ์ผ์ด๋‹ค. ์šด์˜์ฒด์ œ์˜ Shell์„ ์ด์šฉํ•˜์—ฌ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ์œผ๋ฉด์„œ ๋ช…๋ น์–ด๋“ค์„ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์˜

velog.io

https://kim6394.tistory.com/268

 

[AWS] ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ

[AWS] ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ AWS์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ณผ์ •์€ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ˆ˜์ •ํ•  ๋•Œ๋งˆ๋‹ค ๋˜‘๊ฐ™์€ ์ผ์„ ๋ฐ˜๋ณตํ•ด์•ผํ•œ๋‹ค. ํ”„๋กœ์ ํŠธ ๋ฐฐํฌ ๊ณผ์ • git pull๋กœ ํ”„๋กœ์ ํŠธ ์—…๋ฐ์ดํŠธ gradle ํ”„๋กœ์ ํŠธ

kim6394.tistory.com

 

 

2. EC2 ๋‚ด log_back.sh ์ƒ์„ฑ

ec2์— ์ ‘์†ํ•œํ›„, log_back.sh ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.

vi log_back.sh

 

ํ•ด๋‹น ์‰˜ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์—์„œ ์•„๋ž˜์˜ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ec2๋‚ด์— ์žˆ๋Š” app_log์™€ err_log๋ฅผ zip ํŒŒ์ผ๋กœ ๋งŒ๋“ ํ›„ s3 ๋กœ ๋ณต์‚ฌํ•œํ›„, app_log์™€ err_log ๋‚ด์šฉ์„ clear ํ• ๊ฒƒ์ด๋‹ค.

 

#!/bin/bash
# ํ˜„์žฌ ๋‚ ์งœ
DATE=$(date +"%Y%m%d")

# ์ƒˆ๋กœ์šด ํŒŒ์ผ ์ด๋ฆ„ ์„ค์ •
APP_LOG="applog-$DATE.zip"
ERR_LOG="errlog-$DATE.zip"

# zip -r ์ƒˆ๋กœ์šด_ํŒŒ์ผ_๊ฒฝ๋กœ ์••์ถ•ํ• _ํŒŒ์ผ_๊ฒฝ๋กœ
zip -r ~/applog/$APP_LOG ~/applog/applog.log
zip -r ~/applog/$ERR_LOG ~/applog/errlog.log

#s3 ๋ฒ„ํ‚ท์œผ๋กœ ๋ณต์‚ฌํ•˜๊ธฐ
#aws s3 cp ์—…๋กœ๋“œํ• _ํŒŒ์ผ_๊ฒฝ๋กœ s3://์—…๋กœ๋“œํ•  ๋ฒ„ํ‚ท ์ด๋ฆ„/๊ฒฝ๋กœ
aws s3 cp ~/applog/$APP_LOG s3://S3๋ฒ„ํ‚ท์ด๋ฆ„/applog/$APP_LOG
aws s3 cp ~/applog/$ERR_LOG s3://S3๋ฒ„ํ‚ท์ด๋ฆ„/errlog/$ERR_LOG

#๋กœ๊ทธ ํŒŒ์ผ ํด๋ฆฌ์–ด
clear ~/applog/applog.log
clear ~/applog/errlog.log

 

3. ํฌ๋ก  ์„ค์ •

crontab -e

ํฌ๋ก ํƒญ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์†Œ๋กœ ๊ฐ„๋‹ค.

 

0 0 * * * bash /home/ubuntu/log_back.sh > /home/ubuntu/log_back_log.log 2>&1

ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

ํ•„์ž๋Š” ๋งค์ผ ์˜ค์ „ 12์‹œ์— log_backup.sh๋ฅผ ์‹คํ–‰, ํ•ด๋‹น ์‰˜ ์Šคํฌ๋ฆฝํŠธ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ ๋กœ๊ทธ๋ฅผ log_back_log.log์— ์ •์ƒ ๋กœ๊ทธ์™€ ์—๋Ÿฌ ๋กœ๊ทธ ๋ชจ๋‘ ์ €์žฅํ•˜๊ฒŒ ํ–ˆ๋‹ค.

 

crontab -l

crontab ์„ค์ • ํ™•์ธํ•˜๊ธฐ

 

 

S3์— ๊ฐ€์„œ ์ž˜ ์‹คํ–‰๋๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋ฉด 

applog, errlog ๋ชจ๋‘ ๋‚ ์งœ ํ˜•์‹์— ๋งž๊ฒŒ zip ํŒŒ์ผ๋กœ ์ž˜ ์ €์žฅ๋˜์—ˆ๋‹ค!!

์žฌ๋ฐ‹์—‡์ง€๋งŒ ์–ด๋ ค์›Ÿ๋‹ค..

ํœด...^^ 

๋!

 

 

 

 

 

 

 

 

์ฐธ๊ณ 

https://hee611.tistory.com/50

https://vanillacreamdonut.tistory.com/367

https://jojoldu.tistory.com/472

 

[Linux] log ํŒŒ์ผ s3 ์—…๋กœ๋“œ ์Šค์ผ€์ค„๋ง ์„ค์ •ํ•˜๊ธฐ (feat. crontab)

๐Ÿซฅ ๊ฐœ์š” ๋™์‹œ์— ๋ฐฑ์—”๋“œ, ํ”„๋ก ํŠธ๊ฐ€ ๊ฐœ๋ฐœ์„œ๋ฒ„์— ๋ฐฐํฌ๋ฅผ ํ•˜์˜€๊ณ , github actions์—๋„ ๋ฉ€์ฉกํžˆ ์ดˆ๋ก์ƒ‰ ๋ถˆ์ด ๋– ์„œ ์„œ๋ฒ„์—๋„ ๋ฐฐํฌ๊ฐ€ ์ž˜๋œ์ค„ ์•Œ์•˜๋‹ค. ๊ทผ๋ฐ ์•„์ง ํ•ด๊ฒฐ์ด ๋˜์ง€ ์•Š์•„ ์—ฅ?ํ•˜๊ณ  codedeploy๋ฅผ ๋ดค๋”๋‹ˆ

vanillacreamdonut.tistory.com

 

CronTab ์„ ์‚ฌ์šฉํ•ด Shell Script ์‹คํ–‰

์ง„ํ–‰OS KT Cloud ์‚ฌ์šฉ ์ค€๋น„๋ฌผ 1. ์„œ๋ฒ„ 1๋Œ€ 2. MySQL ์„ค์น˜ ํ™˜๊ฒฝ ใ„ดํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ํ•˜๋‚˜ ์ด์ƒ์˜ Database๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. (ํฌ์ŠคํŒ…์—์„œ๋Š” DB Dump ๋ฐฑ์—…์„ ์˜ˆ์‹œ๋กœ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค. / DB Dump ๋ฐฑ์—…์ด ์•„๋‹ˆ๋ผ๋ฉด, DB๊ฐ€ ๊ตณ

hee611.tistory.com

 

Linux์—์„œ crontab ์‹คํ–‰์‹œ ๋ช…๋ น์–ด ์ฐพ์ง€ ๋ชปํ• ๋•Œ

crontab์˜ ๊ธฐ๋ณธ PATH๋Š” /usr/bin ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ์ฆ‰, /usr/local/bin ๋“ฑ ๋‹ค๋ฅธ ๊ฒฝ๋กœ์— ์žˆ๋Š” command์— ๋Œ€ํ•ด์„œ๋Š” crontab ์ด ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š”๋ฐ์š”. ๋งŒ์•ฝ aws cli๋ฅผ pip๋กœ ์„ค์น˜ํ–ˆ๋‹ค๋ฉด ๊ทธ ๊ฒฝ๋กœ๋Š” /usr/local/bin/aws๊ฐ€ ๋˜๊ธฐ

jojoldu.tistory.com