스프링 부트 액츄에이터

2023. 3. 4. 23:38·개발/Spring Boot
반응형

액츄에이터 Actuator

스프링 부트가 제공하는 액츄에이터는 지표, 추적, 감사, 모니터링과 같은 프로덕션 준비 기능을 매우 편리하게 사용할 수 있는

다양한 편의 기능을 제공한다. 나아가서 다양한 모니터링 시스템과 매우 쉽게 연동할 수 있는 기능도 제공한다.

액츄에이터 의존성 추가

아래 의존성을 build.gradle에 추가해야지 액츄에이터를 사용할 수 있다.

 implementation 'org.springframework.boot:spring-boot-starter-actuator' // actuator 추가

액츄에이터 기능 사용

액추에이터를 사용하려면 애플리케이션의 main() 메서드를 실행시키고 /actuator 경로로 접근해야 한다.

/actuator 경로

/actuator 경로를 통해 액츄에이터가 제공하는 수 많은 기능을 확인할 수 있다.

액츄에이터가 제공하는 기능 하나하나를 엔드포인트라 한다.

각각의 엔드포인트는 /actuator/{엔드포인트명}과 같은 형식으로 접근할 수 있다.

엔드포인트 설정

엔드 포인트를 사용하려면 엔드 포인트 활성화, 엔드 포인트 노출 2가지 과정이 필요하다.

엔드포인트는 대부분 기분으로 활성화 되어 있다. 그러므로 엔드포인트를 노출할지 선택하면 된다.

참고로 HTTP와 JMX를 사용할 수 있는데 보통 JMX는 잘 사용하지 않는다.

 

액츄에이터 기능을 제어하려면 application.yml or application.properties에서 설정 값을 작성하는 게 효율적이다.

아래는 모든 엔드포인트를 웹에 노출하는 application.yml 파일이다.

management:
  endpoints:
    web:
      exposure:
        include: "*"

다양한 엔드포인트

스프링 부트가 제공하는 다양한 엔드포인트를 통해 개발자는 애플리케이션의 수 많은 기능을 관리하고 모니터링할 수 있다.

몇 가지만 살펴보자.

 

  • beans: 스프링 컨테이너에 등록된 스프링 빈을 보여준다.
  •  configprops: @ConfigurationProperties를 보여준다.
  • health: 애플리케이션 헬스 정보를 보여준다.
  • httpexchanges: HTTPS 호출 응답 정보를 보여준다.
  • info: 애플리케이션 정보르 보여준다.
  • threaddump: 쓰레드 덤프를 실행해서 보여준다.
  • shutdown: 애플리케이션을 종료한다. 이 기능은 기본적으로 비활성화 되어 있다.

헬스 정보를 더 자세히 보려면 아래와 같이 yml 파일에 내용을 추가해야 한다.

management:
  endpoint:
    health:
      show-details: always

info 엔드포인트는 java, os, env, build, git과 같은 다양한 애플리케이션 기본 정보를 노출한다.

env, java,os는 기본적으로 비활성화 되어 있다. build와 git 내용만 살펴보겠다.

 

빌드 정보를 노출하려면 빌드 시점에 META-INF/build-info.properties 파일을 만들어야 한다.

gradle을 사용하면 다음 내용을 추가하면 된다.

//build.gradle에 빌드 정보를 추가
springBoot {
      buildInfo()
}

이렇게 하고 빌드를 해보면 build 폴더안에 resources/main/META-INF/build-info.properties 파일을 확인할 수 있다.

 

git 정보도 비슷하다. git.properties 파일이 필요하다. 

plugins {
    ..
    id "com.gorylenko.gradle-git-properties" version "2.4.1" //git info
}

위 내용을 추가하고 빌드를 하면 동일하게 build 폴더 안에서 git.properties를 찾을 수 있다.

로거

loggers 엔드포인트를 사용하면 로깅과 관련된 정보를 확인하고 또 실시간으로 변경할 수 있다.

 

실시간으로 로깅 레벨을 변경하는 방법에 대해 살펴보자.

 

  1. POSTMAN과 같은 프로그램으로 POST로 요청을 보내야한다.
     
  2.  http://localhost:8080/actuator/loggers/{로깅 레벨을 변경할 대상} URL로 POST 방식으로 JSON 형태로 담아서 요청을 해야 한다.
  3. JSON 요청 예시는 아래와 같다. 요청이 성공하면 204가 내려온다.
{
      "configuredLevel": "TRACE"
}

HTTP 요청 응답 기록

httpexchanges 엔드 포인트를 사용해 HTTP 요청과 응답의 과거 기록을 확인할 수 있다.

조건으로는 반드시 HttpExchangeRepository 인터페이스의 구현체를 빈으로 등록해야 한다.

 

액츄에이터는 반드시 외부 인터넷에서 접근이 불가능하게 막고, 내부에서만 접근 가능하도록 구성해야 한다.

 

이상으로 포스팅을 마칩니다. 감사합니다.

 

 

참고 자료

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%ED%95%B5%EC%8B%AC%EC%9B%90%EB%A6%AC-%ED%99%9C%EC%9A%A9/dashboard

 

스프링 부트 - 핵심 원리와 활용 - 인프런 | 강의

실무에 필요한 스프링 부트는 이 강의 하나로 모두 정리해드립니다., - 강의 소개 | 인프런

www.inflearn.com

 

반응형
'개발/Spring Boot' 카테고리의 다른 글
  • 스프링 부트 자동 구성
  • 서블릿 컨테이너, 내장 톰캣과 스프링 부트
  • @Value, @ConfigurationProperties, @Profile
  • 외부설정과 프로필
Debin
Debin
공부 기록을 남기며 게시글 리팩토링을 진행하는 블로그입니다.
  • Debin
    리팩토링하는 블로그
    Debin
  • 전체
    오늘
    어제
    • 분류 전체보기
      • DB
        • DB 기초
        • MySQL
        • SQL 튜닝
      • OS
      • Network
      • Git
      • 디지털콘텐츠기획
      • 소프트웨어공학
      • 코딩테스트
        • 프로그래머스
        • 백준
        • 인프런
      • 공부 일지
      • 독서
        • 클린코드
        • 일상 속 사물이 알려주는 웹 API 디자인
        • 토비의 스프링
        • 객체지향의 사실과 오해
        • 자바 잘 읽는 법
      • 기록 및 회고
      • Cloud
        • AWS
      • 개발
        • Java
        • Spring Core
        • Spring MVC
        • Spring DB
        • Spring Boot
        • Spring Security
        • Spring Batch
        • JPA
        • Test
        • Android
      • 대외활동
        • UMC SERVER
        • 카엔프 SW 아카데미
      • 프로젝트
      • Docker
      • Gradle
      • ELK
      • 실무 이야기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

    • 본인 깃허브입니다!
  • 인기 글

  • 태그

    객체
    리눅스
    데이터베이스
    인덱스
    스프링
    AOP
    innodb
    도커
    AWS
    container
    운영체제
    자바
    docker
    mysql
    SQL
    객체지향
    프록시
    JPA
    spring
    코딩 #개발자 #노마드북클럽 #노개북
    스프링 부트
    test
    Java
    트랜잭션
    spring mvc
    토비의 스프링
    컨테이너
    ORM
    redis
    spring boot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
Debin
스프링 부트 액츄에이터
상단으로

티스토리툴바