Actuator, Prometheus 및 Grafana를 사용하여 최신 애플리케이션에 대한 관찰성 및 모니터링 구축
오늘날의 분산 시스템과 마이크로서비스 세계에서는 애플리케이션을 관찰하고 모니터링할 수 있도록 하는 것이 핵심 기능을 구축하는 것만큼 중요합니다. NGINX 로드 밸런서, 속도 제한기, 회로 차단기와 같은 중요한 기능을 이미 설정했습니다. 다음 단계는 관측성 및 모니터링.
이 블로그 게시물에서는 Spring Boot Actuator, Prometheus 및 Grafana를 애플리케이션에 추가하여 강력한 관찰 기능을 구축하는 방법을 살펴보겠습니다. 스택. 이는 애플리케이션의 상태를 시각화하고, 성능 지표를 추적하고, 문제를 빠르고 효율적으로 해결하는 데 도움이 됩니다.
관측성이란 무엇입니까?
관측성이란 시스템이 생성하는 데이터를 기반으로 시스템의 내부 상태를 이해하는 능력을 의미합니다. 관찰 가능성의 세 가지 요소는 다음과 같습니다.
- 측정항목: 정량화 가능한 데이터 포인트(예: 요청 비율, 메모리 사용량, CPU 사용률).
- 로그: 이벤트 기록(예: 오류, 경고 또는 비즈니스 이벤트)
- 추적: 여러 서비스를 통해 흐르는 요청을 따릅니다.
측정항목과 로그에 중점을 두어 애플리케이션의 성능과 안정성을 유지하는 강력한 대시보드와 알림을 구축할 수 있습니다.
우리 애플리케이션에서 관찰 가능성이 중요한 이유
현재 애플리케이션 아키텍처에는 이미 필수 구성 요소가 있습니다.
- NGINX 로드 밸런서: 서버 전체에 트래픽을 분산합니다.
- Rate Limiter: 요청 수를 제한하여 과부하를 방지합니다.
- 회로 차단기: 실패한 서비스에 대한 호출을 중지하여 복원력을 보장합니다.
그러나 이러한 도구는 성능과 안정성을 향상시키기는 하지만 왜 문제가 발생하는지 또는 부하 시 시스템이 어떻게 작동하는지 알려주지는 않습니다. Actuator, Prometheus 및 Grafana와 같은 관찰 도구는 다음을 수행합니다.
- 애플리케이션 상태 및 성능에 대한 실시간 지표를 추적합니다.
- 추세와 잠재적 병목 현상을 시각화하는 데 도움이 됩니다.
- 측정항목이 중요한 임계값을 초과하면 알림을 트리거합니다.
가관측성 스택
pom.xml 파일에 다음 종속성을 추가하세요.
<dependency> <groupId>io.github.resilience4j</groupId> <artifactId>resilience4j-micrometer</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>1.14.1</version> </dependency>
application.properties 구성 업데이트
resilience4j.circuitbreaker.metrics.enabled=true management.health.circuitbreakers.enabled=true management.endpoints.web.exposure.include=health,metrics,circuitbreakers,prometheus management.endpoint.health.show-details=always management.endpoint.health.access=unrestricted management.endpoint.prometheus.access=unrestricted management.prometheus.metrics.export.enabled=true
설명
management.endpoints.web.exposure.include=health,metrics,circuitbreakers,prometheus
이 줄은 Actuator의 URI를 노출하므로 다음과 같은 URI를 사용할 수 있습니다.
- 액추에이터/
- 액추에이터/건강,
- 액추에이터/메트릭스,
- 액추에이터/회로 차단기,
- 액추에이터/프로메테우스
도커와 함께 프로메테우스 사용하기
docker-compose.yaml 파일에서 prometheus에 대한 서비스를 생성합니다.
<dependency> <groupId>io.github.resilience4j</groupId> <artifactId>resilience4j-micrometer</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>1.14.1</version> </dependency>
프로메테우스 구성 파일
프로젝트 루트에 prometheus라는 폴더를 만들고 그 안에 prometheus.yaml이라는 파일을 만듭니다
resilience4j.circuitbreaker.metrics.enabled=true management.health.circuitbreakers.enabled=true management.endpoints.web.exposure.include=health,metrics,circuitbreakers,prometheus management.endpoint.health.show-details=always management.endpoint.health.access=unrestricted management.endpoint.prometheus.access=unrestricted management.prometheus.metrics.export.enabled=true
이제 실행하면:
prometheus: image: prom/prometheus:latest ports: - "9090:9090" networks: - app_network volumes: - ./prometheus/prometheus.yaml:/etc/prometheus/prometheus.yml - prometheus_data:/prometheus
prometheus 컨테이너가 시작되고 URI 액츄에이터의 측정항목/spring-boot-servers의 측정항목을 사용합니다.
http://localhost:9090/에서 대시보드를 볼 수 있습니다. 예를 들면 다음과 같습니다.
그런데 이건 별로네요. 그래프를 보고 싶어서 Grafana를 사용합니다.
그라파나 추가
Docker Compose 파일을 다른 서비스로 업데이트하세요.
global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'spring-boot-app' metrics_path: '/actuator/prometheus' static_configs: - targets: - 'spring-server-1:8080' - 'spring-server-2:8080' labels: environment: development application: spring-boot
이제 http://localhost:3000에서 grafana 대시보드에 액세스할 수 있습니다
먼저 자격 증명을 묻습니다. 사용자와 비밀번호에 admin이라고 입력하세요.
프로메테우스 구성
왼쪽 상단 메뉴에서 연결 > 새로운 연결을 추가하고 Prometheus를 검색하세요
다음과 같이 연결 URL을 구성하세요.
저장 및 테스트 버튼을 클릭하세요. 모든 것이 정상이면 대시보드를 선택할 수 있습니다.
대시보드
Grafana 대시보드로 이동하여 원하는 대시보드를 선택하세요.
이를 위해 저는 Spring Boot Resilience4j Circuit Breaker(3.x)를 선택했습니다
모든 것이 제대로 작동하면 다음과 같은 내용이 표시됩니다.
다른 대시보드도 자유롭게 찾아보세요.
마지막 한마디
Actuator, Prometheus 및 Grafana를 애플리케이션에 통합함으로써 우리는 관찰성이 뛰어난 시스템을 구축하는 데 큰 진전을 이루었습니다. 측정항목, 로깅, 모니터링을 통해 다음을 수행할 수 있습니다.
- 애플리케이션과 인프라에 대한 완전한 가시성을 확보하세요.
- 문제를 사전에 감지하고 해결합니다.
- 성능과 안정성을 최적화하세요.
이러한 도구를 사용하면 시스템을 효과적으로 모니터링할 뿐만 아니라 향후 자신 있게 확장할 수 있는 기반을 마련할 수 있습니다.
? 참조
- 그라파나 문서
- 프로메테우스 문서
? 프로젝트 저장소
- Github의 프로젝트 저장소
? 나에게 말을 걸어
- 링크드인
- 깃허브
- 포트폴리오
위 내용은 Actuator, Prometheus 및 Grafana를 사용하여 최신 애플리케이션에 대한 관찰성 및 모니터링 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











일부 애플리케이션이 제대로 작동하지 않는 회사의 보안 소프트웨어에 대한 문제 해결 및 솔루션. 많은 회사들이 내부 네트워크 보안을 보장하기 위해 보안 소프트웨어를 배포 할 것입니다. ...

시스템 도킹의 필드 매핑 처리 시스템 도킹을 수행 할 때 어려운 문제가 발생합니다. 시스템의 인터페이스 필드를 효과적으로 매핑하는 방법 ...

많은 응용 프로그램 시나리오에서 정렬을 구현하기 위해 이름으로 이름을 변환하는 솔루션, 사용자는 그룹으로, 특히 하나로 분류해야 할 수도 있습니다.

데이터베이스 작업에 MyBatis-Plus 또는 기타 ORM 프레임 워크를 사용하는 경우 엔티티 클래스의 속성 이름을 기반으로 쿼리 조건을 구성해야합니다. 매번 수동으로 ...

IntellijideAultimate 버전을 사용하여 봄을 시작하십시오 ...

Java 객체 및 배열의 변환 : 캐스트 유형 변환의 위험과 올바른 방법에 대한 심층적 인 논의 많은 Java 초보자가 객체를 배열로 변환 할 것입니다 ...

전자 상거래 플랫폼에서 SKU 및 SPU 테이블의 디자인에 대한 자세한 설명이 기사는 전자 상거래 플랫폼에서 SKU 및 SPU의 데이터베이스 설계 문제, 특히 사용자 정의 판매를 처리하는 방법에 대해 논의 할 것입니다 ...

Redis 캐싱 솔루션은 제품 순위 목록의 요구 사항을 어떻게 인식합니까? 개발 과정에서 우리는 종종 a ... 표시와 같은 순위의 요구 사항을 처리해야합니다.
