ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring boot actuator
    Java & Spring/기본 개념 정리 2021. 7. 13. 11:29
    반응형

    Spring boot actuator

    • 엔드포인트로 HTTP나 JMX를 통해서 Application을 모니터링하고 관리하는 기능 제공
      • health, Auditing, beans, ...
    • 종속성 추가
      • <dependencies>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        </dependencies>
    • 제공하는 엔트포인트
      • ID Description
        auditevents 현재 실행중인 Applicaition의 audit Event를 보여준다.
        AuditEventRepository bean이 필요
        beans 애플리케이션의 모든 Spring 빈 목록을 보여준다.
        caches 사용 가능한 캐시를 보여준다.
        conditions Configuration과 Auto-Configuration의 매칭 여부와 이유를 보여준다.
        configprops 모든 @ConfigurationProperties의 조합된 목록을 보여준다.
        env Spring의 ConfigurableEnvironment를 보여준다.
        flyway Flyway DB 마이그레이션이 적용된 모든 것을 보여준다.
        하나 이상의 Flyway bean이 필요
        health Application의 health 정보를 보여준다.
        httptrace HTTP Trace 정보를 보여준다.
        HttpTraceRepository bean이 필요.
        info 임의의 application 정보를 보여준다.
        integrationgraph Spring의 Integration(통합) 그래프를 보여준다.
        spring-integration-core 의존성 필요.
        loggers Application의 로거에 대한 구성을 보여주고, 수정한다.
        liquibase Liquibase DB 마이그레이션이 적용된 모든 것을 보여준다.
        하나 이상의 Liquibase bean이 필요.
        metrics 현재 Application에 대한 metrics 정보를 보여준다.
        mappings @RequestMapping path들을 보여준다. (모든 API 주소)
        quartz Quartz Scheduler의 jobs의 정보를 보여준다.
        scheduledtasks Application의 작업 스케쥴을 보여준다.
        sessions Allows retrieval and deletion of user sessions from a Spring Session-backed session store. Requires a Servlet-based web application using Spring Session.
        Spring Session-backed 세션 스토어에서 user 세션 검색 및 삭제를 허용. Spring Session을 사용하는 Servlet 기반 웹 Application이 필요.
        shutdown Application을 정상적으로 종료. (Default는 비활성화)
        startup ApplicationStartup에서 수집한 시작 단계 데이터를 보여준다.
        BufferingApplicationStartup로 구성된 SpringApplication 필요
        threaddump 스레드 덤프 수행
    • 웹 애플리케이션(Spring MVC, Spring WebFlux 또는 Jersey)인 경우 다음 엔드포인트를 추가 제공
      • ID Description
        heapdump hprof 힙 덤프 파일을 리턴
        HotSpot JVM 필요.
        jolokia HTTP를 통해 JMX 빈을 보여준다(Jolokia가 classpath에 있으면, WebFlux에서는 사용 불가).
        jolokia-core 의존성 필요.
        logfile 로그 파일의 내용을 return(logging.file.name or logging.file.path ..)
        HTTP Range header를 사용해서 로그 파일의 일부 내용을 검색할 수 있도록 제공
        prometheus Prometheus 서버에서 수집할 수 있는 metrices를 보여준다.
        micrometer-registry-prometheus 의존성 필요.
    • shutdown을 제외한 모든 엔드포인트는 default로 enabled 상태
      • enabled-by-default 속성을 통해 활성화 false 설정을 할 수 있고, 개별 endpoint마다 설정 가능
      • 비활성화된 엔드포인트는 Application 컨텍스트에서 완전하게 제거됨
      • management:
            endpoints:
                enabled-by-default: false
            endpoint:
                   info:
                       enabled: true
    • 엔드포인트에 대한 노출만 변경하려는 경우 include와 exclude를 활용
      • management:
          endpoints:
            jmx:
              exposure:
                include: "health,info"
      • management:
          endpoints:
            web:
              exposure:
                include: "*"
                exclude: "env,beans"
    • 이 외에도 Cors 설정이나 TTL 등 여러 기능이 존재하니 필요에 따라 검색해서 사용하면 좋을 것 같음
      • 하지만, 사용할 때 보안 이슈를 꼭 체크하고 방지하는 설정들이 꼭 필요

    Reference

    https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html

    반응형

    'Java & Spring > 기본 개념 정리' 카테고리의 다른 글

    HandlerMethodArgumentResolver  (0) 2021.07.13
    xml 설정과 Java Config 설정  (2) 2021.04.09
    Spring IoC/DI  (0) 2021.01.30

    댓글

Designed by Tistory.