diff --git a/deploy/shared/system-monitor.sh b/deploy/shared/system-monitor.sh index 923e3873..9b7a6f60 100644 --- a/deploy/shared/system-monitor.sh +++ b/deploy/shared/system-monitor.sh @@ -1,12 +1,15 @@ #!/bin/bash +set -e ENV=${1:-dev} -WORK_DIR="/home/ubuntu/souzip" +if [ "$ENV" = "prod" ]; then + WORK_DIR="/home/souzip-prod/souzip" +else + WORK_DIR="/home/souzip-dev/souzip" +fi DEPLOY_DIR="$WORK_DIR/deploy/$ENV" -HEALTH_CHECK_URL="http://localhost:8080/actuator/health" STATUS_FILE="$DEPLOY_DIR/.system-status" - DISK_THRESHOLD=80 MEMORY_THRESHOLD=90 MAX_HEALTH_FAILURES=3 @@ -30,6 +33,24 @@ else CONTAINER_WARNING_SENT=false fi +if [ "$ENV" = "dev" ]; then + HEALTH_CHECK_URL="http://localhost:8080/actuator/health" + CONTAINER_NAME="souzip-api" +else + CONTAINER_NAME="souzip-api-${CONTAINER_COLOR:-blue}" + case "$CONTAINER_COLOR" in + blue) + HEALTH_CHECK_URL="http://localhost:8081/actuator/health" + ;; + green) + HEALTH_CHECK_URL="http://localhost:8082/actuator/health" + ;; + *) + HEALTH_CHECK_URL="http://localhost:8081/actuator/health" + ;; + esac +fi + if curl -f -s --max-time 5 $HEALTH_CHECK_URL > /dev/null 2>&1; then if [ "$HEALTH_STATUS" = "down" ]; then if [ ! -z "$HEALTH_DOWN_SINCE" ]; then @@ -37,12 +58,10 @@ if curl -f -s --max-time 5 $HEALTH_CHECK_URL > /dev/null 2>&1; then UP_TIMESTAMP=$(date +%s) DOWN_DURATION=$(( UP_TIMESTAMP - DOWN_TIMESTAMP )) DOWNTIME_MIN=$(( DOWN_DURATION / 60 )) - if [ ! -z "$DISCORD_WEBHOOK_URL" ]; then - notify_server_up "${DOWNTIME_MIN}분" + notify_server_up "${DOWNTIME_MIN}분" "$ENV" fi fi - HEALTH_STATUS="up" HEALTH_FAILURE_COUNT=0 HEALTH_DOWN_SINCE="" @@ -51,24 +70,21 @@ if curl -f -s --max-time 5 $HEALTH_CHECK_URL > /dev/null 2>&1; then fi else HEALTH_FAILURE_COUNT=$((HEALTH_FAILURE_COUNT + 1)) - if [ $HEALTH_FAILURE_COUNT -ge $MAX_HEALTH_FAILURES ] && [ "$HEALTH_STATUS" = "up" ]; then HEALTH_STATUS="down" HEALTH_DOWN_SINCE=$(date '+%Y-%m-%d %H:%M:%S') - if [ ! -z "$DISCORD_WEBHOOK_URL" ]; then - notify_server_down + notify_server_down "$ENV" fi fi fi DISK_USAGE=$(df -h / | awk 'NR==2 {print $3 " / " $2}') DISK_PERCENT=$(df / | awk 'NR==2 {print int($5)}') - if [ $DISK_PERCENT -ge $DISK_THRESHOLD ]; then if [ "$DISK_WARNING_SENT" = "false" ]; then if [ ! -z "$DISCORD_WEBHOOK_URL" ]; then - notify_disk_warning "$DISK_USAGE" "$DISK_PERCENT" + notify_disk_warning "$DISK_USAGE" "$DISK_PERCENT" "$ENV" fi DISK_WARNING_SENT=true fi @@ -78,11 +94,10 @@ fi MEMORY_USAGE=$(free -h | awk 'NR==2 {print $3 " / " $2}') MEMORY_PERCENT=$(free | awk 'NR==2 {print int($3/$2 * 100)}') - if [ $MEMORY_PERCENT -ge $MEMORY_THRESHOLD ]; then if [ "$MEMORY_WARNING_SENT" = "false" ]; then if [ ! -z "$DISCORD_WEBHOOK_URL" ]; then - notify_memory_warning "$MEMORY_USAGE" "$MEMORY_PERCENT" + notify_memory_warning "$MEMORY_USAGE" "$MEMORY_PERCENT" "$ENV" fi MEMORY_WARNING_SENT=true fi @@ -90,18 +105,11 @@ else MEMORY_WARNING_SENT=false fi -if [ "$ENV" = "dev" ]; then - CONTAINER_NAME="souzip-api" -else - CONTAINER_NAME="souzip-api-prod" -fi - CONTAINER_RUNNING=$(docker ps --filter "name=$CONTAINER_NAME" --filter "status=running" -q) - if [ -z "$CONTAINER_RUNNING" ]; then if [ "$CONTAINER_WARNING_SENT" = "false" ]; then if [ ! -z "$DISCORD_WEBHOOK_URL" ]; then - notify_container_stopped + notify_container_stopped "$ENV" fi CONTAINER_WARNING_SENT=true fi @@ -116,4 +124,4 @@ HEALTH_DOWN_SINCE="$HEALTH_DOWN_SINCE" DISK_WARNING_SENT=$DISK_WARNING_SENT MEMORY_WARNING_SENT=$MEMORY_WARNING_SENT CONTAINER_WARNING_SENT=$CONTAINER_WARNING_SENT -EOF +EOF \ No newline at end of file