-
Notifications
You must be signed in to change notification settings - Fork 8
스프링 메트릭 모니터링 구축 방법
김경미 edited this page Aug 9, 2024
·
1 revision
스프링 메트릭은 프로메테우스, 그라파나을 이용해서 구현
해당 위키에서는 구축 방법에 대해 이야기하고자 함
더 자세한 이야기는 해당 디스커션에서 확인해주세요
스프링에서 제공하는 Spring Boot Actuator를 통해 스프링 애플리케이션의 메트릭을 쉽게 수집하고 모니터링할 수 있다.
implementation 'org.springframework.boot:spring-boot-starter-actuator'
management:
endpoints:
web:
exposure:
include: health,info,metrics,prometheus # 어떤 메트릭 데이터를 보고 싶은지
endpoint:
health:
show-details: always
health,info,metrics,prometheus 정보를 가져온다
spring:
profiles:
active:
- local
- db
- actuator
http://localhost:8080/actuator
[서버URL]/actuator
다양한 모니터링 시스템이 많은데 각 모니터링 시스템마다 원하는 메트릭의 형태가 다르다.
Micrometer는 이 메트릭을 추상화했기 때문에, 사용할 모니터링 시스템에 맞는 Micrometer 구현체를 사용하면 그 시스템에 맞는 메트릭을 제공해준다.
그러면 , 애플리케이션의 메트릭을 마이크로미터가 정한 표준 방법으로 모아서 제공해준다.
implementation 'io.micrometer:micrometer-registry-prometheus'
프로메테우스 : 메트릭 데이터저장소
오픈소스 모니터링 및 경고 툴로, 시계열 데이터베이스를 사용하여 메트릭을 수집하고 저장합니다.
global:
scrape_interval: 15s # 어떤 시간에 한번씩
scrape_configs:
- job_name: 'code-zap-spring'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['host.docker.internal:8080'] # 메트릭을 보고 싶은 서버
docker-compose.yml 파일과 동일한 폴더에서 prometheus-config 만들고 생성
version: '3'
services:
prometheus:
image: prom/prometheus
container_name: prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus-config:/etc/prometheus
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--web.external-url=/prometheus"
restart: unless-stopped
프로메테우스 - 9090 포트에서 실행
docker-compose up -d
docker-compose.yml 파일 위치에서 명령어 실행
localhost:9090/prometheus
그라파나 : 시각화 도구
version: '3'
services:
grafana:
image: grafana/grafana
container_name: grafana
ports:
- "3000:3000"
restart: unless-stopped
그라파나 - 3000 포트에서 실행
docker-compose up -d
docker-compose.yml 파일 위치에서 명령어 실행
localhost:3000/prometheus
http://host.docker.internal:9090/prometheus
test 성공 시 보여지는 알림창에서 buildings a dashboard 선택
-> 대시보드 제작 창 생성
- 백엔드 코드 컨벤션
- 백엔드 기술 스택 및 선정 이유
- 각종 인스턴스 설정 파일 및 구성 위치 가이드
- ERD (24.09.27)
- 백엔드 CI CD 동작 프로세스
- 로컬 DB 환경 설정
- 백엔드 로깅 전략
- 백엔드 로그 모니터링 구성도
- 스프링 메트릭 모니터링 구성도
- Flyway 로 스키마 관리
- 코드잽 서버 구성도
- Git Submodule 사용 메뉴얼
- 프론트엔드 코드 컨벤션
- 프론트엔드 기술 스택 및 선정 이유
- 프론트엔드 서비스 타겟 환경 및 브라우저 지원 범위 선정
- 프론트엔드 모니터링 및 디버깅 환경 구축
- 프론트엔드 테스트 목록
- 프론트엔드 라이브러리 기술 검토
- 프론트엔드 개발서버, 운영서버 빌드 및 배포 환경 구분
- 목표했던 타겟 환경과 디바이스에서 서비스 핵심 기능 동작 확인
- 프론트엔드 접근성 개선 보고서
- EC2 로그 확인 방법
- VSCode를 통한 EC2 인스턴스 SSH 연결 방법
- 터미널을 통한 EC2 인스턴스 SSH 연결 방법
- NGINX 설정 파일 접근 및 적용 방법
- DB 접속 및 백업 방법
- [QA] 배포 전 체크리스트
- CI 파이프라인 구축
- CD 파이프라인 구축
- 백엔드 CI CD 트러블슈팅
- Lombok Annotation Processor 의존성을 추가한 이유
- 2차 스프린트 기준 ERD
- DTO 검증하기
- ProblemDetail
- Fork된 레포지토리 PR에서 CI Secrets 접근 문제 해결
- AWS CloudWatch 모니터링
- 스프링 메트릭 모니터링 구축 방법
- 로깅과 Logback에 대해 알아보아요.
- 백엔드 CD 파이프라인 Ver.2
- 요청, 응답 로그에 correlationId 를 추가하자!
- 3차 스프린트 기준 ERD
- 더미데이터 생성하고 실행하기
- 쿼리 성능 개선 결과
- 테이블별 인덱스 설정 목록
- 사용자 증가 시 발생할 수 있는 문제 상황과 개선 방안
- k6를 사용한 서버 부하 테스트
- 6차 스프린트 기준 ERD
- Query Performance Improvement Results
- 테스트 전략 및 CI 설정
- CI CD 구조
- 배포 전, 로컬에서 로그인 기능 포함 테스트해보는 법
- stylelint 적용기
- 내 작업 브랜치 중간에 Merge된 동료의 작업물을 넣고 싶다면 pull vs rebase
- [TS] Webpack config
- [TS] Webpack 환경에서 MSW v2 이슈
- [TS] webpack에서 react‐router‐dom 적용 안됨
- 2024.07.28 새 기획 회의
- 2024.07.26 2차 데모데이 후 회의
- 2024.07.11 백엔드 논의 좀 할게요
- 2024.07.11 백엔드 ERD 회의
- 2024.07.09 깃 브랜치 전략, PR 템플릿 회의
- 2024.07.03 주제 선정 회의
- 2023.07.03 팀빌딩데이 킥오프 회의
- 2023.08.07 3차 스프린트 중간회고