728x90
728x90

전체 글 400

[3] Application Release Model(애플리케이션 릴리스 모델) - Blue-Green Deployment (블루-그린 배포), 스크립트 실행

배포할 때마다 매번 설정 파일을 수정하고 검사하고 체크해야 하는 반복적인 프로세스를 스크립트로 자동화할 수 있습니다. 스크립트로 자동 전환1. C:\workspaces\docker\nginx에 deploy 디렉터리를 생성하고 blud-green-deploy.sh 파일을 생성합니다.C:\workspaces\docker\nginx\deployecho "Blue-Green Deployment를 시작합니다."# 설정 파일 경로CONF_FILE="../conf.d/appservers.conf"# 파일 존재 여부 확인if [ ! -f "$CONF_FILE" ]; then echo "에러 : $CONF_FILE 파일을 찾을 수 없습니다." exit 1fi# 현재 설정 확인if grep -q "dev-tra..

[2] Application Release Model(애플리케이션 릴리스 모델) - Blue-Green Deployment (블루-그린 배포)

Blue-Green Deployment (블루-그린 배포)블루-그린 배포는 구(기존) 버전으로 실행 중인 Spring Boot 애플리케이션(또는 마이크로서비스)에 있던 트래픽을 새(신규) 버전으로 전환하는 Application Release Model(애플리케이션 릴리스 모델)입니다. 새(신규) 버전을 기준으로 현재 운영 중인 버전이 구(기존) 버전이 됩니다. 새(신규) 버전은 개발되어 배포가 준비된 상태입니다.현재 운영 중인 구(기존) 버전을 Blue라 하고 새(신규) 버전을 Green이라고 합니다. 블루-그린 배포 절차현재 운영 중인 Blue와 동일한 환경으로 Green을 구성하고 애플리케이션을 배포한 후 실행합니다.Green의 헬스 체크(/actuator/health)가 정상(UP)이 될 때까지 대..

[1] Application Release Model(애플리케이션 릴리스 모델)

Application Release Model(애플리케이션 릴리스 모델)개발된 소프트웨어를 사용자에게 안전하고 효율적으로 배포하기 위한 전략을 의미합니다.시스템 가동 중단(Downtime)을 최소화하고 리스크를 줄이기 위해 사용합니다. 롤링 배포 (Rolling Deployment)구(기존) 버전으로 실행 중인 애플리케이션(또는 마이크로서비스)를 새(신규) 버전으로 하나씩 차례대로 교체하는 방식입니다.동일한 서버에서 교체하기 때문에 인프라 추가 비용이 없습니다. 시스템 중단도 없습니다. 그렇지만 배포가 완전히 끝날 때까지 두 버전이 공존합니다.신규 버전에서 계산 공식이 변경되거나 DB 테이블이 변경될 경우에는 문제가 심각해질 수 있습니다.롤백을 할 경우에는 복구가 어렵고 시간이 많이 걸립니다.OpenAI..

[15] Nginx(엔진 x) - HTTPS 설정

HTTPS 설정1. C:\workspaces\docker\nginx\docker-compose.yml 파일을 수정합니다.HTTPS 연결을 위해 포트에 443을 추가하고 볼륨에 ssl를 추가합니다.# 컨테이너 내의 서비스들 정의services: # 서비스명 nginx: # 가져올 이미지:태그(버전) image: nginx:latest # 컨테이너명 container_name: dev-nginx # 연결된 포트 (컨테이너 외부:컨테이너 내부) ports: - "80:80" - "443:443" # 볼륨 (컨테이너 외부 경로:컨테이너 내부 경로) volumes: # 설정 파일 - C:\workspaces\docker\nginx\..

[14] Nginx(엔진 x) - Win32/Win64 OpenSSL 설치 및 생성, Win64OpenSSL_Light-4_0_3

Win32/Win64 OpenSSL 설치 프로젝트는 Windows용 OpenSSL을 간편하게 설치할 수 있도록 지원합니다.컴파일이나 복잡한 과정 없이 몇 번의 클릭만으로 설치가 완료되어 바로 작업에 집중할 수 있습니다. Win32/Win64 OpenSSL 다운로드 및 설치1. (https://slproweb.com/products/Win32OpenSSL.html)에 접속합니다. 2. 맨 위에 있는 Win64 OpenSSL v4.0.3 Light에 있는 EXE(Win64OpenSSL_Light-4_0_3.exe)를 클릭하여 다운로드합니다. 3. OpenSSL 4.0.3 Light를 설치합니다.동의하고 [Next] 버튼을 누릅니다. 설치 경로를 설정하고 [Next] 버튼을 누릅니다. DDL들을 /bin 디렉..

[13] Nginx(엔진 x) - openSSL 설치 및 생성

Nginx 컨테이너에서 직접 SSL를 생성하고 적용하겠습니다. openSSL 설치1. 실행 중인 Nginx 컨테이너에서 Bash 쉘을 실행합니다.docker exec -it dev-nginx bash 2. apt-get 명령어로 패키지 목록을 최신으로 업데이트(apt-get update)하고 openssl 소프트웨어를 설치(apt-get install)합니다.apt-get update && apt-get install -y openssl 설치된 openssl 버전을 확인합니다.openssl version -a SSL/TLS 인증서 만들기1. /etc/nginx 디렉터리에서 mkdir 명령어로 ssl 디렉터리를 생성합니다.root@0bb65423296f:/# cd /etc/nginxroot@0bb6542..

[3] CoreDNS - Chrome/Windows DNS 캐시 제거

DNS 캐시 제거 방법 크롬 브라우저 DNS 캐시 제거웹 브라우저에서 자체적으로 DNS 캐시를 유지하고 있습니다. 1. 모든 클롬 브라우저를 종료하고 새로운 클롬 브라우저에서 chrome://net-internals/?#dns를 입력합니다. 2. [Clear host cache] 버튼을 눌러 브라우저에서 저장 중인 캐시를 제거합니다. 3. 클롬 브라우저를 종료하고 다시 클롬 브라우저를 실행하면 됩니다. Windows DNS 캐시 제거로컬 PC 자체에서 DNS 캐시 유지하고 있습니다. 1. CMD를 관리자 권한으로 실행합니다.저장된 DNS 캐시를 강제로 삭제(초기화)하는 명령어를 실행합니다.ipconfig /flushdns 캐시가 지워져도 이전 DNS 정보가 유지되는 경우도 있습니다.그래서 테스트할 때..

[2] CoreDNS - host 설정

DNS 서버를 사용하여 내부 IP(도커 내부 네트워크 IP)와 도메인을 연결하겠습니다. hosts plugin내부 IP와 도메인 매핑 정보를 읽어옵니다. hosts을 활성화합니다.내부 IP와 도메인 매핑 정보를 직접 관리하고 내부 테스트용 도메인을 임시로 설정할 때도 유용합니다.hosts [FILE [ZONES...]] { [INLINE] ttl SECONDS no_reverse reload DURATION fallthrough [ZONES...] fallthrough_unsupported}아무런 옵션을 설정하지 않으면 서버에 있는 /etc/hosts 파일에서 내부 IP와 도메인 매핑 정보를 읽어옵니다. 서버에 있는 /etc/hosts 파일 내용입니다.127.0.0.1 l..

[1] CoreDNS

CoreDNS클라우드 네이티브 환경(쿠버네티스)에서 가장 널리 사용되는 오픈소스 DNS 서버입니다.Go 언어로 작성된 DNS 서버입니다. 유연성이 뛰어나 다양한 환경에서 사용할 수 있습니다.(Apache License Version 2에 따라 배포되며 오픈 소스입니다.) 가장 큰 특징은 모든 기능이 Plugin(플러그인) 구조로 되어 있다는 점입니다.설정 파일인 Corefile 파일에 어떤 Plugin을 사용하여 체인처럼 연결하느냐에 따라 단순한 DNS 서버가 될 수도 있고 Kubernetes(쿠버네티스)의 Service Discovery(서비스 디스커버리)가 될 수도 있습니다. https://coredns.io/ 단순한 DNS 서버 만들기1. C:\workspaces\docker에 coredns 디렉..

[7] Nginx 모니터링 - NGINX Prometheus Exporter

NGINX Prometheus ExporterNGINX 또는 NGINX Plus에서 메트릭을 가져와 Prometheus 메트릭 유형으로 변환하여 HTTP 서버를 통해 Prometheus에서 수집할 수 있도록 노출합니다. https://github.com/nginx/nginx-prometheus-exporter 도커 컨테이너를 생성하고 실행1. nginx-prometheus-exporter로 도커 컨테이너를 생성하고 실행합니다.docker run -d --name dev-nginx-prometheus-exporter --restart unless-stopped --network dev-network -p 9113:9113 nginx/nginx-prometheus-exporter:latest --nginx..

[12] Nginx(엔진 x) - Load Balancing(로드 밸런싱), Passive Health Checks(수동형 헬스 체크, 상태 검사)

Passive Health Checks(수동형 헬스 체크, 상태 검사)Nginx의 리버스 프록시 구현에는 수동형 서버 상태 확인 기능이 포함되어 있습니다.특정 서버의 응답이 오류가 발생하면 Nginx는 해당 서버를 실패(fails) 상태로 표시하고 일정 기간 동안 이후 요청에 대해 해당 서버를 선택하지 않도록 처리합니다. Failover(장애 조치) 설정최대 실패 수 설정 (기본값 1)server address [parameters];max_fails=number0으로 설정하면 해당 서버에 대한 상태 확인을 하지 않습니다. 실패 시간 설정 (기본값 10초)fail_timeout=timefail_timeout 시간 동안 서버와 통신이 max_fails 만큼 연속적으로 실패하면 해당 서버에 장애가 발생한 ..

[11] Nginx(엔진 x) - Load Balancing(로드 밸런싱), Least Time(최소 시간)

Least Time(최소 시간)적은 활성 연결 수와 평균 응답 시간이 가장 짧은 서버로 요청을 보내는 방식입니다. Least Time(최소 시간) 설정1. C:\workspaces\docker\nginx\conf\upstream.conf 파일을 수정합니다.Least Connections를 위해 upstream 블록을 추가합니다.:# Least Timeupstream backend_servers_leasttime { least_time last_byte; server dev-transmission:8080; server dev-transmission-second:8080;}저는 도커 컨테이너로 실행하기 때문에 IP 대신 컨테이너 이름으로 설정하였습니다. upstream 블록 안에 leas..

[10] Nginx(엔진 x) - Load Balancing(로드 밸런싱), IP Hash(IP 해시), Session persistence(세션 지속)

IP Hash(IP 해시) - Session persistence(세션 지속)클라이언트의 IP 주소를 기반으로 Hashing(해싱, 해시 함수로 계산)하여 특정 서버로 계속 요청을 보내는 방식입니다.클라이언트가 항상 같은 서버로 요청을 보내는 것을 보장합니다. 해싱하기 위한 해시 키IPv4 주소 : 클라이언트 IP 주소의 3번째 옥텟(Octet)까지 해싱 키로 사용합니다.IPv6 주소 : 클라이언트 IP 주소 전체를 해싱 키로 사용합니다. IP Hash(IP 해시) 설정1. C:\workspaces\docker\nginx\conf\upstream.conf 파일을 수정합니다.IP Hash를 위해 upstream 블록을 추가합니다.:# IP Hashupstream backend_servers_iphash ..

[9] Nginx(엔진 x) - Load Balancing(로드 밸런싱), Least Connections(최소 연결)

Least Connections(최소 연결)현재 활성 연결(active connections) 수가 가장 적은 서버(대기하는 요청 수가 적은 서버)로 우선적으로 요청을 보내는 방식입니다.특정 서버에서 요청에 대한 처리 시간이 길어져 연결 수가 줄지 않을 경우(요청 많이 지연될 경우) 요청을 보내지 않아 좋습니다. Least Connections(최소 연결) 설정1. C:\workspaces\docker\nginx\conf\upstream.conf 파일을 수정합니다.Least Connections를 위해 upstream 블록을 추가합니다.:# Least Connectionsupstream backend_servers_leastconn { least_conn; server dev-transmi..

[8] Nginx(엔진 x) - Load Balancing(로드 밸런싱), Weighted Round Robin(가중치 라운드 로빈)

Weighted Round Robin(가중치 라운드 로빈)운영하는 서버마다 스펙이 다를 수 있습니다. 그래서 스펙이 좋은 서버에 높은 가중치(Weight, 웨이트)를 부여하여 더 많은 요청을 보내는 방식입니다. Weighted Round Robin(가중치 라운드 로빈) 설정1. C:\workspaces\docker\nginx\conf\upstream.conf 파일을 수정합니다.Weighted Round Robin를 위해 upstream 블록을 추가합니다.여러 개의 upstream 블록을 정의하여 사용할 수 있습니다.# Round Robinupstream backend_servers { server dev-transmission:8080; server dev-transmission-second:..

[7] Nginx(엔진 x) - Load Balancing(로드 밸런싱), Round Robin(라운드 로빈)

Spring Boot 애플리케이션에 수천~수만 명이 동시에 접속한다면 Tomcat Thread Pool(톰캣 스레드 풀) 설정만 늘리면 해결될까요? 결론부터 말씀드리면 불가능합니다. 서버의 자원이 한정되어 있기 때문에 Tomcat Thread Pool(톰캣 스레드 풀) 설정 값을 무한정 올릴 수 없습니다.스레드당 고유한 스택 메모리가 할당되기 때문에 스레드가 과도하게 증가하면 메모리가 부족(OOM, Out Of Memory)이 발생합니다.CPU 코어에서 수많은 스레드를 번갈아 처리하느라 컨텍스트 스위칭(Context Switching) 오버헤드가 발생합니다. (실제 비즈니스 로직을 처리하는 것보다 스레드를 전환하는 데 더 많은 시간이 사용됩니다.)데이터베이스 커넥션 풀의 한계치에 도달하여 많은 요청들이 ..

[1] Spring Boot 설정 - 동시 접속자 처리, Tomcat Thread Pool 설정

Spring Boot 애플리케이션에 수백 명이 동시에 접속한다면 어떻게 해야 할까요?서버 성능이 충분히 받쳐준다면 Tomcat Thread Pool(톰캣 스레드 풀) 설정만으로도 해결이 가능합니다. 스레드 풀(Thread Pool)클라이언트의 요청마다 매번 새로운 스레드를 생성(Thread-per-request)하고 소멸시키면 서버의 CPU와 메모리 자원이 낭비될 뿐만 아니라 동시에 수천~수만개의 클라이언트가 요청한다면 스레드 폭증으로 인해 서버가 다운될 위험이 있습니다.이를 해결하기 위해 스레드를 미리 생성하여 보관해 두고 클라이언트 요청이 들어올 때마다 준비된 스레드를 할당해 사용한 뒤 다시 반환하게 합니다. 이처럼 스레드를 효율적으로 관리하는 메커니즘을 스레드 풀(Thread Pool)이라고 합니..

[6] Nginx(엔진 x) - 콘텐츠 캐시(Content Cache), 성능 개선 설정

캐시 성능을 위한 추가 설정 캐시 환경 설정 (proxy_cache_path에 추가)1. 캐시 파일을 저장할 하위 디렉터리 계층 구조를 설정합니다.[levels=levels] 단계는 최대 3단계까지 설정할 수 있습니다.단계 별 디렉터리 이름 길이는 1 또는 2만 지정할 수 있습니다.levels=2:2:2 캐시 파일이 한 디렉터리에 몰리지 않도록 3단계 하위 디렉터리 구조로 나누어 저장하게 했습니다. 캐시 파일이 53e7658dcfe7a42a9b26451cd3a61bde이라면 끝에서부터 역순으로 디렉터리를 생성합니다.최종 경로는 /var/cache/nginx/de/1b/a6/53e7658dcfe7a42a9b26451cd3a61bde이 됩니다. 2. 캐시 파일을 디스크에 저장할 때 임시 디렉터리를 거칠지 여..

[5] Nginx(엔진 x) - 콘텐츠 캐시(Content Cache), 캐시 볼륨 시 오류

Docker 컨테이너로 Nginx를 실행할 때 캐시 디렉터리를 볼륨(Volume) 마운트하면 파일을 읽지 못하는 오류가 발생합니다. [docker-compose.yml 파일]services: nginx: # 볼륨 (컨테이너 외부 경로:컨테이너 내부 경로) volumes: # 캐시 디렉터리 - C:\workspaces\docker\nginx\cache:/var/cache/nginx 캐시 파일들이 저장될 디스크 경로를 기본 경로(/var/cache/nginx)로 설정하였습니다. [Nginx 로그][crit] 22#22: *1 fstat() "/var/cache/nginx/53e7658dcfe7a42a9b26451cd3a61bde.0000000001" failed (2: No s..

[4] Nginx(엔진 x) - 콘텐츠 캐시(Content Cache)

Content Cache(콘텐츠 캐싱)WAS가 생성한 응답을 Nginx에 저장해서 동일한 요청이 들어왔을 때 WAS로 가지 않고 Nginx가 바로 응답을 하게하는 기능입니다. 이 기능을 사용하면 WAS와 데이터베이스의 부하를 줄여 전체 성능을 높이고, 콘텐츠 전송 속도를 개선할 수 있습니다. Nginx는 WAS가 생성한 응답(헤더와 바디)을 파일로 만들어 디스크에 저장합니다. 이때 요청을 구분하기 위해 $scheme$proxy_host$request_uri 조합으로 캐시 키(Cache Key)를 생성합니다.이후 동일한 요청이 들어오면 이 캐시 키를 이용해 디스크에 저장된 파일을 찾아서 응답을 전달합니다. 이를 캐시 히트(Cache Hit)라고 합니다. OpenAI로 생성한 이미지입니다. 캐시 키와 캐시 ..

[3] Nginx(엔진 x) - 정적 파일 분리

Spring Boot 애플리케이션 내부에 있는 정적 파일(HTML, CSS, JavaScript, 이미지 등)을 Nginx가 직접 처리하도록 하겠습니다.Spring Boot 애플리케이션을 빌드할 때 정적 파일이 포함되지 않게 설정합니다.정적 파일을 Nginx에서 처리되게 설정합니다. 정적 파일을 제외하여 WAR로 빌드transmission 프로젝트에서 정적 파일은 css, scripts 디렉터리에 있습니다. 1. pom.xml 파일의 에 maven-war-plugin 설정에 warSourceExcludes 속성을 추가합니다.warSourceDirectory(src/main/webapp)에서 WAR 파일로 생성할 때 제외할 파일이나 디렉터리를 쉼표(,)로 구분하여 설정합니다. (현재 images 디렉터리..

[2] Nginx(엔진 x) - 리버스 프록시 (Reverse Proxy)

리버스 프록시(Reverse Proxy)클라이언트와 WAS(Web Application Server, 웹 애플리케이션 서버)사이에 위치하여 클라이언트의 요청을 받아 내부 WAS로 전달하고 WAS의 응답을 다시 클라이언트에게 보내주는 중개자 역할을 합니다. OpenAI로 생성한 이미지입니다. 클라이언트와 WAS사이에서 요청과 응답을 중개하는 것을 프록시(Proxy)라고 하고 이 역할을 하는 시스템을 프록시 서버라고 합니다. Nginx는 웹 서버이면서 리버스 프록시 서버입니다. 리버스 프록시를 사용하면 클라이언트의 요청이 Nginx를 거쳐 내부 WAS로 전달되기 때문에 내부 WAS의 IP, PORT의 정보가 외부로 노출되지 않아 보안이 강화됩니다. Nginx(엔진 x)와 Spring Boot 애플리케이션 ..

[1] Nginx(엔진 x) - HTTP 웹 서버

Nginx(엔진 x)고성능 웹 서버 소프트웨어로 HTTP 웹 서버 역할뿐만 아니라 리버스 프록시, 콘텐츠 캐시, 로드 밸런싱, TCP/UDP 프록시 및 메일 프록시 역할을 수행합니다.HTTP 웹 서버(Web Server) : 정적 파일(HTML, CSS, JavaScript, 이미지 등)을 클라이언트의 요청을 받아 전달(웹 서비스 운영)리버스 프록시(Reverse Proxy) : 클라이언트의 요청을 받아 백엔드 서버로 전달하고 결과를 다시 클라이언트에 전달콘텐츠 캐시(Content Cache) : 데이터 캐싱(서버로부터 받은 응답을 서버 로컬 디스크에 저장하여 동일한 요청이 들어올 때 서버를 거치지 않고 바로 응답)을 통한 응답 속도 향 및 서버 부하 개선로드 밸런싱(Load Balancing) : 여러..

[6] Docker - 윈도우(WSL) 가상 디스크 파일 용량 실제 줄이기

VHDX 파일 압축도커 이미지(docker image)를 삭제해도 윈도우의 가상 디스크 파일(.vhdx) 크기는 자동으로 줄어들지 않습니다.그래서 윈도우 내장 디스크 관리 도구인 diskpart를 사용하여 디스크 용량을 줄어보겠습니다. 도커에는 2개의 가상 디스크 파일(VHDX)이 있습니다.%LOCALAPPDATA%\Docker\wsl\disk\docker_data.vhdx ← 도커 이미지, 도커 컨테이너, 볼륨 등이 저장%LOCALAPPDATA%\Docker\wsl\main\ext4.vhdx ← 도커 시스템 관련 데이터 저장실제로 도커 이미지, 도커 컨테이너, 볼륨 등이 저장되는 docker_data.vhdx 파일을 압축해서 파일 용량 크기를 줄여보겠습니다. Docker Desktop가 실행 중이라면..

[6] Spring Boot App 모니터링 - Scouter로 모니터링, 최신 버전으로 도커 이미지 생성

GitHub에 있는 최신 버전으로 도커 이미지를 생성하여 Scouter Server로 사용하겠습니다. 다운로드 한 압축 파일(scouter-all-2.21.3.tar.gz)로 도커 이미지 생성1. Scouter 프로젝트 GitHub Releases (https://github.com/scouter-project/scouter/releases)에 접속합니다. 2. Assest에서 scouter-all-2.21.3.tar.gz를 클릭하여 다운로드 받습니다.(Spring Boot 3.x 기반이라면 이전에 다운로드하였습니다.) 3. C:\workspaces\docker\scouter에 scouter-build 디렉터리를 생성하고 scouter-all-2.21.3.tar.gz 파일을 복사해서 붙여넣기합니다.C:\..

[5] Spring Boot App 모니터링 - Scouter로 모니터링, Host Agent

Scouter Host Agent는 도커 컨테이너 내부가 아닌 호스트에서 실행해야 합니다. Host Agent도 이전에 다운로드 받은 scouter-all-2.21.3.tar.gz (또는 scouter-all-2.17.1.tar.gz) 파일에 포함되어 있습니다. 다운로드하지 않았다면, Scouter 프로젝트 GitHub Releases (https://github.com/scouter-project/scouter/releases)에 접속해서 버전을 선택하여 Assest에 있는 scouter-all-2.x.x.tar.gz 파일을 다운로드 하시기 바랍니다.Spring Boot 3.x 기반이라면 Release list에서 최신 버전인 v2.21.3를 다운로드하시기 바랍니다. Host Agent 설치1. C:..

[4] Spring Boot App 모니터링 - Scouter로 모니터링, Scouter Paper

Scouter Paper오픈 소스 APM인 Scouter Web API를 활용하여 수집된 성능 데이터를 웹에서 대시보드로 확인할 수 있도록 제공하는 소프트웨어입니다. Scouter Paper 설치1. 도커 컨테이너를 중지하고 삭제합니다.docker compose stopdocker compose rm 2. C:\workspaces\docker\scouter\docker-compose.yml 파일을 수정합니다.# 컨테이너 내의 서비스들 정의services: # 서비스명 scouter: # 가져올 이미지:태그(버전) image: scouterapm/scouter-server:2.17.1 # 컨테이너명 container_name: dev-scouter # 연결된 포트 (컨테이너 ..

Windows에서 특정 포트를 사용하는 프로세스 확인 및 종료

1. 특정 포트를 사용하는 PID(Process ID) 확인netstat -ano | findstr netstat : 네트워크에 연결되어 열려 있는 주소:포트, 상태를 출력합니다. -a(All) : 모든(연결 및 수신 대기) 주소:포트를 출력합니다.-n(Numerical) : 이름으로 출력되는 주소를 숫자 형식(IP 형식)으로 표시합니다.-o(Owning) : 주소:포트를 사용하고 있는 PID를 출력합니다. 8080 포트를 사용하는 PID(Process ID) 확인합니다.netstat -ano | findstr 8080 TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 25424 TCP [::]:8080 ..

[3] Spring Boot App 모니터링 - Scouter로 모니터링, Scouter Collector (Server), Scouter Agent, Docker Image

Scouter(스카우터)Java기반의 오픈소스 APM(Application Performance Monitoring) 솔루션으로 서버 인프라 자원(CPU/메모리 사용량, Heap Memory 상태, GC(Garbage Collection) 발생 횟수 등)과 JVM 환경에서 실행되는 애플리케이션의 성능을 실시간으로 모니터링합니다. 성능 지표 모니터링과 실시간 트랜잭션 추적을 통해 병목 구간과 오류를 찾아냅니다. OpenAI로 생성한 이미지입니다. Scouter Agent : 모니터링 대상 서버에 설치되어 성능 데이터를 수집한 뒤 Scouter Collector (Server)로 전송합니다.- Host Agent : OS 자원(CPU, 메모리, 디스크 등) 수집- Java Agent : JVM 환경 내부 트..

[2] Spring Boot App 모니터링 - Prometheus, Grafana로 모니터링

Prometheus(프로메테우스)와 Grafana(그라파나) Prometheus(프로메테우스)는 주기적으로 서버나 애플리케이션의 엔드포인트(endpoint)에 접속해 정보 데이터를 수집하여 시간 순서대로(시계열) 저장합니다. 자체 쿼리 언어인 PromQL(Prometheus Query Language)을 사용해 수집된 시계열 데이터를 실시간으로 조회하고 집계할 수 있는 오픈소스 모니터링 도구입니다. Grafana(그라파나)는 Prometheus(프로메테우스)와 연동하여 데이터를 대시보드로 시각화해 주는 오픈소스 데이터 시각화 및 모니터링 도구입니다. Gemini AI와 OpenAI로 생성한 이미지입니다. Docker Compose로 Prometheus(프로메테우스)와 Grafana(그라파나) 설치1. ..

728x90
728x90