diff --git a/.github/workflows/deploy-admin-docker.yml b/.github/workflows/deploy-admin-docker.yml index 7eea527b..916204cd 100644 --- a/.github/workflows/deploy-admin-docker.yml +++ b/.github/workflows/deploy-admin-docker.yml @@ -48,7 +48,7 @@ jobs: run: ./gradlew clean :nowait-app-admin-api:bootJar -x test - name: Login to DockerHub - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }} @@ -70,6 +70,12 @@ jobs: - name: Checkout uses: actions/checkout@v3 + - name: Set Prometheus YML + run: | + echo "${{ secrets.PROMETHEUS_DEV_ADMIN_YML }}" \ + | base64 --decode \ + > prometheus-admin.yml + - name: Copy docker-compose.admin.yml to EC2 uses: appleboy/scp-action@master with: @@ -80,6 +86,26 @@ jobs: source: "docker-compose.admin.yml" target: ${{ env.EC2_DEPLOY_PATH }} + - name: Copy docker-compose.admin-monitoring.yml to EC2 + uses: appleboy/scp-action@master + with: + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USER }} + key: ${{ secrets.EC2_SSH_KEY }} + port: ${{ secrets.EC2_PORT }} + source: "docker-compose.admin-monitoring.yml" + target: ${{ env.EC2_DEPLOY_PATH }} + + - name: Copy prometheus-admin.yml to EC2 + uses: appleboy/scp-action@master + with: + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USER }} + key: ${{ secrets.EC2_SSH_KEY }} + port: ${{ secrets.EC2_PORT }} + source: "prometheus-admin.yml" + target: ${{ env.EC2_DEPLOY_PATH }} + - name: Copy deploy-admin-docker.sh to EC2 uses: appleboy/scp-action@master with: @@ -91,7 +117,7 @@ jobs: target: "${{ env.EC2_DEPLOY_PATH }}" - name: Login to DockerHub - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }} diff --git a/.github/workflows/deploy-user-docker.yml b/.github/workflows/deploy-user-docker.yml index 026d69f7..3d8e442e 100644 --- a/.github/workflows/deploy-user-docker.yml +++ b/.github/workflows/deploy-user-docker.yml @@ -69,16 +69,9 @@ jobs: - name: Set Prometheus YML run: | - echo "${{ secrets.PROMETHEUS_DEV_YML }}" \ + echo "${{ secrets.PROMETHEUS_DEV_USER_YML }}" \ | base64 --decode \ - > prometheus.yml - - - name: Debug workspace - run: | - echo "현재 작업 디렉터리: $(pwd)" - echo "파일 목록 전체:" - ls -l scripts - + > prometheus-user.yml - name: Copy docker-compose.user.yml to EC2 uses: appleboy/scp-action@master @@ -107,7 +100,7 @@ jobs: username: ${{ secrets.EC2_USER }} key: ${{ secrets.EC2_SSH_KEY }} port: ${{ secrets.EC2_PORT }} - source: "prometheus.yml" + source: "prometheus-user.yml" target: ${{ env.EC2_DEPLOY_PATH }} - name: Copy deploy-user-docker to EC2 diff --git a/docker-compose.admin-monitoring.yml b/docker-compose.admin-monitoring.yml new file mode 100644 index 00000000..414f1404 --- /dev/null +++ b/docker-compose.admin-monitoring.yml @@ -0,0 +1,27 @@ +services: + prometheus: + image: prom/prometheus:latest + container_name: prometheus-admin + ports: + - "9091:9090" + volumes: + - ./prometheus-admin.yml:/etc/prometheus/prometheus.yml:ro + command: + - '--config.file=/etc/prometheus/prometheus.yml' + depends_on: + - nowait-app-admin-api + restart: always + + grafana: + image: grafana/grafana:latest + container_name: grafana-admin + ports: + - "3004:3000" + volumes: + - grafana-admin-data:/var/lib/grafana + depends_on: + - prometheus + restart: always + +volumes: + grafana-admin-data: diff --git a/docker-compose.user-monitoring.yml b/docker-compose.user-monitoring.yml index 282170f9..c92dc1e5 100644 --- a/docker-compose.user-monitoring.yml +++ b/docker-compose.user-monitoring.yml @@ -1,11 +1,11 @@ services: prometheus: image: prom/prometheus - container_name: prometheus + container_name: prometheus-user ports: - "9090:9090" volumes: - - ./prometheus.yml:/etc/prometheus/prometheus.yml + - ./prometheus-user.yml:/etc/prometheus/prometheus.yml:ro command: - '--config.file=/etc/prometheus/prometheus.yml' depends_on: @@ -14,14 +14,14 @@ services: grafana: image: grafana/grafana - container_name: grafana + container_name: grafana-user ports: - "3003:3000" volumes: - - grafana_data:/var/lib/grafana + - grafana-user-data:/var/lib/grafana depends_on: - prometheus restart: always volumes: - grafana_data: + grafana-user-data: diff --git a/nowait-app-admin-api/build.gradle b/nowait-app-admin-api/build.gradle index 9fba398d..b2b40a9c 100644 --- a/nowait-app-admin-api/build.gradle +++ b/nowait-app-admin-api/build.gradle @@ -70,6 +70,12 @@ dependencies { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' + // actuator + implementation 'org.springframework.boot:spring-boot-starter-actuator' + + // prometheus + implementation 'io.micrometer:micrometer-registry-prometheus' + testImplementation 'org.springframework.boot:spring-boot-starter-test' } diff --git a/scripts/deploy-admin-docker.sh b/scripts/deploy-admin-docker.sh index bbb99588..6decd539 100644 --- a/scripts/deploy-admin-docker.sh +++ b/scripts/deploy-admin-docker.sh @@ -7,18 +7,26 @@ START_LOG="$REPOSITORY/start.log" echo "1. find container id" CONTAINER_ID=$(docker ps -q --filter "name=nowait-app-admin-api") +CONTAINER_PROMETHEUS_ID=$(docker ps -aq --filter "name=prometheus-admin") +CONTAINER_GRAFANA_ID=$(docker ps -aq --filter "name=grafana-admin") echo "2. stop container" if [ -n "$CONTAINER_ID" ]; then echo "Stopping container $CONTAINER_ID" docker rm -f "$CONTAINER_ID" + + echo "Stopping container $CONTAINER_PROMETHEUS_ID" + docker rm -f "$CONTAINER_PROMETHEUS_ID" + + echo "Stopping container $CONTAINER_GRAFANA_ID" + docker rm -f "$CONTAINER_GRAFANA_ID" else echo "No admin container found." fi echo "3. start container" -sudo docker-compose -f docker-compose.admin.yml -p nowait_dev pull nowait-app-admin-api -sudo docker-compose -f docker-compose.admin.yml -p nowait_dev up -d nowait-app-admin-api +sudo docker-compose -f docker-compose.admin.yml -f docker-compose.admin-monitoring.yml -p nowait_dev pull nowait-app-admin-api prometheus-admin grafana-admin +sudo docker-compose -f docker-compose.admin.yml -f docker-compose.admin-monitoring.yml -p nowait_dev up -d nowait-app-admin-api prometheus-admin grafana-admin echo "4. check container status" NEW_CONTAINER_ID=$(docker ps -q --filter "name=nowait-app-admin-api") diff --git a/scripts/deploy-user-docker.sh b/scripts/deploy-user-docker.sh index 0df38526..b4ff5f96 100644 --- a/scripts/deploy-user-docker.sh +++ b/scripts/deploy-user-docker.sh @@ -7,8 +7,8 @@ START_LOG="$REPOSITORY/start.log" echo "1. find container id" CONTAINER_ID=$(docker ps -q --filter "name=nowait-app-user-api") -CONTAINER_PROMETHEUS_ID=$(docker ps -q --filter "name=prometheus") -CONTAINER_GRAFANA_ID=$(docker ps -q --filter "name=grafana") +CONTAINER_PROMETHEUS_ID=$(docker ps -aq --filter "name=prometheus-user") +CONTAINER_GRAFANA_ID=$(docker ps -aq --filter "name=grafana-user") echo "2. stop container" if [ -n "$CONTAINER_ID" ]; then @@ -18,15 +18,15 @@ if [ -n "$CONTAINER_ID" ]; then echo "Stopping container $CONTAINER_PROMETHEUS_ID" docker rm -f "$CONTAINER_PROMETHEUS_ID" - echo "Stopping container $CONTAINER_GRAFANA_ID" - docker rm -f "$CONTAINER_GRAFANA_ID" + echo "Stopping container $CONTAINER_GRAFANA_ID" + docker rm -f "$CONTAINER_GRAFANA_ID" else echo "No user container found." fi echo "3. start container" -sudo docker-compose -f docker-compose.user.yml -f docker-compose.user-monitoring.yml -p nowait_dev pull nowait-app-user-api prometheus grafana -sudo docker-compose -f docker-compose.user.yml -f docker-compose.user-monitoring.yml -p nowait_dev up -d nowait-app-user-api prometheus grafana +sudo docker-compose -f docker-compose.user.yml -f docker-compose.user-monitoring.yml -p nowait_dev pull nowait-app-user-api prometheus-user grafana-user +sudo docker-compose -f docker-compose.user.yml -f docker-compose.user-monitoring.yml -p nowait_dev up -d nowait-app-user-api prometheus-user grafana-user echo "4. check container status" NEW_CONTAINER_ID=$(docker ps -q --filter "name=nowait-app-user-api")