오늘날의 분산 시스템과 마이크로서비스 세계에서는 애플리케이션을 관찰하고 모니터링할 수 있도록 하는 것이 핵심 기능을 구축하는 것만큼 중요합니다. NGINX 로드 밸런서, 속도 제한기, 회로 차단기와 같은 중요한 기능을 이미 설정했습니다. 다음 단계는 관측성 및 모니터링.
이 블로그 게시물에서는 Spring Boot Actuator, Prometheus 및 Grafana를 애플리케이션에 추가하여 강력한 관찰 기능을 구축하는 방법을 살펴보겠습니다. 스택. 이는 애플리케이션의 상태를 시각화하고, 성능 지표를 추적하고, 문제를 빠르고 효율적으로 해결하는 데 도움이 됩니다.
관측성이란 시스템이 생성하는 데이터를 기반으로 시스템의 내부 상태를 이해하는 능력을 의미합니다. 관찰 가능성의 세 가지 요소는 다음과 같습니다.
측정항목과 로그에 중점을 두어 애플리케이션의 성능과 안정성을 유지하는 강력한 대시보드와 알림을 구축할 수 있습니다.
현재 애플리케이션 아키텍처에는 이미 필수 구성 요소가 있습니다.
그러나 이러한 도구는 성능과 안정성을 향상시키기는 하지만 왜 문제가 발생하는지 또는 부하 시 시스템이 어떻게 작동하는지 알려주지는 않습니다. 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를 애플리케이션에 통합함으로써 우리는 관찰성이 뛰어난 시스템을 구축하는 데 큰 진전을 이루었습니다. 측정항목, 로깅, 모니터링을 통해 다음을 수행할 수 있습니다.
이러한 도구를 사용하면 시스템을 효과적으로 모니터링할 뿐만 아니라 향후 자신 있게 확장할 수 있는 기반을 마련할 수 있습니다.
위 내용은 Actuator, Prometheus 및 Grafana를 사용하여 최신 애플리케이션에 대한 관찰성 및 모니터링 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!