스프링 actuator

김종하·2023년 8월 30일
0

Spring boot booster

목록 보기
13/13

스프링 actuator 활성화

// yml 에 추가
// shutdown 엔드포인트 활성화 예시
management:
  endpoint: 
    shutdown:
      enabled: true 

스프링 actuator 노출

// yml 에 추가
// 모든 endpoints 들을 web (http) 에 노출 예시 
management:
  endpoints:
    web:
      exposure: 
        include: "*"

스프링 actuator endpoints

  1. beans : 스프링 컨테이너에 등록된 스프링 빈을 보여준다.
  2. conditions : condition 을 통해서 빈을 등록할 때 평가 조건과 일치하거나 일치하지 않는 이유를 표시한다.
  3. configprops : @ConfigurationProperties 를 보여준다.
  4. env : Environment 정보를 보여준다.
  5. health : 애플리케이션 헬스 정보를 보여준다.
  6. httpexchanges : HTTP 호출 응답 정보를 보여준다. HttpExchangeRepository 를 구현한 빈을 7. 별도로등록해야 한다.
  7. info : 애플리케이션 정보를 보여준다.
  8. loggers : 애플리케이션 로거 설정을 보여주고 변경도 할 수 있다.
  9. metrics : 애플리케이션의 메트릭 정보를 보여준다.
  10. mappings : @RequestMapping 정보를 보여준다.
  11. threaddump : 쓰레드 덤프를 실행해서 보여준다.
  12. shutdown : 애플리케이션을 종료한다. (default = 비활성화)

health

애플리케이션 헬스 정보 상세히 보기

// yml 에 추가
management:
  endpoint:
    health:
      show-details: always

info

os, java 정보 확인

// yml 에 추가
management:
  info:
    java:
      enabled: true
    os:
      enabled: true

build 정보 확인

// build.gradle 에 추가
 springBoot {
      buildInfo()
}

현재 build 된 git 정보 확인

// build.gradle 에 plugin 추가
plugins { 
        id "com.gorylenko.gradle-git-properties" version "2.4.1"
    }

loggers

실시간 로그레벨 변경 가능

post 요청을 통해 실시간으로 로그레벨을 변경 가능하다.
url : http://localhost:8080/actuator/loggers/me.jaden.actuator.controller
body(json) :
{
    "configuredLevel" : "TRACE"
}

액츄에이터 엔드포인트 접근 포트번호 변경

// yml에 추가
management:
  server:
    port: 9292

마이크로미터

마이크로미터를 통해 매트릭 등록

MeterRegistry

마이크로미터 기능을 제공하는 컴포넌트
스프링을 통해 주입받아 카운터, 게이지등을 등록한다.

  • 비즈니스 로직에 직접 카운터 기능 추가
    @Override
    public void order() {
        log.info("주문");
        stock.decrementAndGet();

        Counter.builder("my.order")
                .tag("class", this.getClass().getName())
                .tag("method", "order")
                .description("order")
                .register(meterRegistry)
                .increment();

    }
  • AOP 애노테이션을 활용한 카운터 기능 추가
  1. CountedAspect 빈 등록
    @Bean
    public CountedAspect countedAspect(MeterRegistry meterRegistry) {
        return new CountedAspect(meterRegistry);
    }
  1. 비즈니스 로직에 애노테이션 추가
    @Override
    @Counted("my.order")
    public void order() {
        log.info("주문");
        stock.decrementAndGet();
    }

프로매태우스 설정

설치 URL
https://prometheus.io/download

  1. application 에 의존성 추가
//  yml에 추가
implementation 'io.micrometer:micrometer-registry-prometheus'
  1. promethus.yml 설정
    # 추가
    - job_name: "spring-actuator"
      metrics_path: '/actuator/prometheus' // 메트릭 경로 설정 
      scrape_interval: 1s // 수집주기 설정 (일반적으로 10 ~ 15s) 
      static_configs:
        - targets: ['localhost:8080'] // 타겟 서버경로
  1. counter 와 gauage
    값이 실시간으로 변화하는 gauage 는 그래프로 그대로 시각화 해도 의미파악이
    쉽다.
    그에 반해 counter 는 값이 지속적으로 증가만 함으로 그래프로 시각화 할 때는 increase(), rate() 같은 함수와 같이 사용해주어야 의미파악이 쉽게된다.

그라파나

설치 URL
https://grafana.com/grafana/download

10.1.0 버전 설치
curl -O https://dl.grafana.com/enterprise/release/grafana-enterprise-10.1.0.darwin-amd64.tar.gz

그라파나 공유대시보드 (스프링)
https://grafana.com/grafana/dashboards/11378-justai-system-monitor/

0개의 댓글