> Java > java지도 시간 > Actuator, Prometheus 및 Grafana를 사용하여 최신 애플리케이션에 대한 관찰성 및 모니터링 구축

Actuator, Prometheus 및 Grafana를 사용하여 최신 애플리케이션에 대한 관찰성 및 모니터링 구축

Linda Hamilton
풀어 주다: 2025-01-05 06:15:42
원래의
684명이 탐색했습니다.

오늘날의 분산 시스템과 마이크로서비스 세계에서는 애플리케이션을 관찰하고 모니터링할 수 있도록 하는 것이 핵심 기능을 구축하는 것만큼 중요합니다. NGINX 로드 밸런서, 속도 제한기, 회로 차단기와 같은 중요한 기능을 이미 설정했습니다. 다음 단계는 관측성 및 모니터링.

이 블로그 게시물에서는 Spring Boot Actuator, PrometheusGrafana를 애플리케이션에 추가하여 강력한 관찰 기능을 구축하는 방법을 살펴보겠습니다. 스택. 이는 애플리케이션의 상태를 시각화하고, 성능 지표를 추적하고, 문제를 빠르고 효율적으로 해결하는 데 도움이 됩니다.


관측성이란 무엇입니까?

관측성이란 시스템이 생성하는 데이터를 기반으로 시스템의 내부 상태를 이해하는 능력을 의미합니다. 관찰 가능성의 세 가지 요소는 다음과 같습니다.

  1. 측정항목: 정량화 가능한 데이터 포인트(예: 요청 비율, 메모리 사용량, CPU 사용률).
  2. 로그: 이벤트 기록(예: 오류, 경고 또는 비즈니스 이벤트)
  3. 추적: 여러 서비스를 통해 흐르는 요청을 따릅니다.

측정항목과 로그에 중점을 두어 애플리케이션의 성능과 안정성을 유지하는 강력한 대시보드와 알림을 구축할 수 있습니다.


우리 애플리케이션에서 관찰 가능성이 중요한 이유

현재 애플리케이션 아키텍처에는 이미 필수 구성 요소가 있습니다.

  • NGINX 로드 밸런서: 서버 전체에 트래픽을 분산합니다.
  • Rate Limiter: 요청 수를 제한하여 과부하를 방지합니다.
  • 회로 차단기: 실패한 서비스에 대한 호출을 중지하여 복원력을 보장합니다.

그러나 이러한 도구는 성능과 안정성을 향상시키기는 하지만 문제가 발생하는지 또는 부하 시 시스템이 어떻게 작동하는지 알려주지는 않습니다. Actuator, PrometheusGrafana와 같은 관찰 도구는 다음을 수행합니다.

  • 애플리케이션 상태 및 성능에 대한 실시간 지표를 추적합니다.
  • 추세와 잠재적 병목 현상을 시각화하는 데 도움이 됩니다.
  • 측정항목이 중요한 임계값을 초과하면 알림을 트리거합니다.

가관측성 스택

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/에서 대시보드를 볼 수 있습니다. 예를 들면 다음과 같습니다.

Building Observability and Monitoring for Modern Applications with Actuator, Prometheus and Grafana

Prometheus의 대시보드

그런데 이건 별로네요. 그래프를 보고 싶어서 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을 구성하세요.

Building Observability and Monitoring for Modern Applications with Actuator, Prometheus and Grafana

Grafana에서 Prometheus 구성

저장 및 테스트 버튼을 클릭하세요. 모든 것이 정상이면 대시보드를 선택할 수 있습니다.

대시보드

Grafana 대시보드로 이동하여 원하는 대시보드를 선택하세요.

이를 위해 저는 Spring Boot Resilience4j Circuit Breaker(3.x)를 선택했습니다

모든 것이 제대로 작동하면 다음과 같은 내용이 표시됩니다.

Building Observability and Monitoring for Modern Applications with Actuator, Prometheus and Grafana

차단기 그래프

다른 대시보드도 자유롭게 찾아보세요.


마지막 한마디

Actuator, PrometheusGrafana를 애플리케이션에 통합함으로써 우리는 관찰성이 뛰어난 시스템을 구축하는 데 큰 진전을 이루었습니다. 측정항목, 로깅, 모니터링을 통해 다음을 수행할 수 있습니다.

  • 애플리케이션과 인프라에 대한 완전한 가시성을 확보하세요.
  • 문제를 사전에 감지하고 해결합니다.
  • 성능과 안정성을 최적화하세요.

이러한 도구를 사용하면 시스템을 효과적으로 모니터링할 뿐만 아니라 향후 자신 있게 확장할 수 있는 기반을 마련할 수 있습니다.


? 참조

  • 그라파나 문서
  • 프로메테우스 문서

? 프로젝트 저장소

  • Github의 프로젝트 저장소

? 나에게 말을 걸어

  • 링크드인
  • 깃허브
  • 포트폴리오

위 내용은 Actuator, Prometheus 및 Grafana를 사용하여 최신 애플리케이션에 대한 관찰성 및 모니터링 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿