You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
build.gradle에서 springBoot { buildInfo() } 추가 시 생성됨
git
git 정보.
git.properties 파일이 필요함
build.gradle의 플러그인 추가가 필요함
로거
loggers 엔드포인트를 사용하면 로깅과 관련된 정보를 확인하고, 또 실시간으로 변경할 수 있음
개발 서버는 보통 debug로그를 사용하지만, 운영 서버는 보통 요청이 아주 많다. 따라서 로그도 너무 많이 남기 때문에 DEBUG 로그까지 모두 출력하게 되면 성능이나 디스크에 영향을 주게 된다. 그래서 운영서버는 중요하다고 판단되는 INFO 로그 레벨을 사용한다. 그런데 서비스 운영중에 문제가 있어서 급하게 DEBUG나 TRACE로그를 남겨서 확인하고 싶다면 어떻게 해야할까? 일반적으로는 로깅 설정을 변경하고, 서버를 다시 시작해야 한다.
loggers 엔드포인트를 사용하면 애플리케이션을 다시 시작하지 않고, 실시간으로 로그 레벨을 변경할 수 있다.
이 인메모리 구현체는 최대 100개의 HTTP 요청을 제공함. 최대 요청이 넘어가면 과거 요청을 삭제함. setCapacity()를 통해서 최대 요청수를 변경할 수 있음.
이 기능은 매우 단순하고 기능에 제한이 많기 때문에 개발 단계에서만 사용하고, 실제 운영 서비스에서는 모니터링 툴이나 핀포인트, Zipkin같은 다른 기술을 사용하는 것이 좋다.
액츄에이터와 보안
액츄에이터가 제공하는 기능들은 우리 애플리케이션의 내부 정보를 너무 많이 노출함. 그래서 외부 인터넷 망이 공개된 곳에 액츄에이터의 엔드포인트를 공개하는 것은 보안상 좋은 방안이 아니다. 액츄에이터의 엔드포인트들은 외부 인터넷에서 접근이 불가능하게 막고, 내부에서만 접근 가능하도록 사용하는 것이 안전함.
액츄에이터를 다른 포트에서 실행
외부 인터넷 망에서 8080 포트에만 접근할 수 있고, 다른 포트는 내부망에서만 접근할 수 있다면 액츄에이터에 다른 포트를 설정하면 된다.
액츄에이터의 기능을 애플리케이션 서버와는 다른 포트에서 실행하려면 다음과 같이 설정한다.
management.server.port=9292
액츄에이터 URL경로에 인증 설정
포트를 분리하는 것이 어렵고 어쩔 수 없이 외부 인터넷 망을 통해서 접근해야 한다면 /actuator 경로에 서블릿 필터, 스프링 인터셉터 또는 스프링 시큐리티를 통해서 인증된 사용자만 접근 가능하도록 추가 개발이 필요함.
엔드포인트 경로 변경
management.endpoints.web.base-path: “/management”처럼 기본 경로를 변경할 수 있음
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Acutator
서비스할때 필요한 모니터링 기능들을
프로덕션 준비 기능이라고 함. 배포할때 준비해야하는 비 기능적인 요소들을 뜻함스프링 부트가 제공하는 액츄에이터는 이런 프로덕션 준비 기능을 편리하게 사용할 수 있는 편의 기능을 제공함.
마이크로미터, 프로메테우스, 그라파나 같은 모니터링 시스템과 쉽게 연동할 수 있음
Prerequisite
다음의 의존성을 추가한다
implementation 'org.springframework.boot:spring-boot-starter-actuator'이후 http://localhost:8080/actuator 으로 접속하면 다음과 같이 확인된다.
/health는 현재 서버가 잘 동작하고 있는지 어플리케이션의 헬스 상태를 나타냄application.yml을 추가해서 액츄에이터가 제공하는 기능을 설정할 수 있다.
엔드포인트 설정
엔드포인트를 활성화하고 추가로 HTTP를 통해서 웹에 노출할지, 아니면 JMX를 통해서 노출할지 두 위치에 모두 노출할지 노출 위치를 지정해주어야 한다.
엔드포인트의 대두분은 기본으로 활성화되어있으며, 노출 되어 있지 않은 상태이다. 어떤 엔드포인트를 노출할지 선택하면 된다.
HTTP와 JMX를 선택할 수 있는데, 보통 JMX는 잘 사용하지 않으므로 HTTP에 어떤 엔드포인트를 노출할지 선택하면 됨.
*옵션은 모든 엔드포인트를 노출하며, shutdown 엔드포인트는 기본으로 활성화되지 않으므로 노출되지 않음.Actuator가 제공하는 엔드포인트
헬스 정보
헬스 정보를 활용하여 애플리케이션의 문제 발생 시 빠르게 인지할 수 있음
http://localhsot:8080/actuator/health
헬스 정보는 단순히 애플리케이션이 요청에 응답할 수 있는지 판단하는 것을 넘어서 애플리케이션이 사용하는 데이터베이스가 응답하는지, 디스크 사용량에 문제가 없는지 등 다양한 정보를 포함함
헬스 컴포넌트에서 한개라도 DOWN이 있다면, 전체 상태는 DOWN이 된다.
애플리케이션 정보
info 엔드포인트는 애플리케이션의 기본 정보를 노출함
로거
loggers 엔드포인트를 사용하면 로깅과 관련된 정보를 확인하고, 또 실시간으로 변경할 수 있음
개발 서버는 보통 debug로그를 사용하지만, 운영 서버는 보통 요청이 아주 많다. 따라서 로그도 너무 많이 남기 때문에 DEBUG 로그까지 모두 출력하게 되면 성능이나 디스크에 영향을 주게 된다. 그래서 운영서버는 중요하다고 판단되는 INFO 로그 레벨을 사용한다. 그런데 서비스 운영중에 문제가 있어서 급하게 DEBUG나 TRACE로그를 남겨서 확인하고 싶다면 어떻게 해야할까? 일반적으로는 로깅 설정을 변경하고, 서버를 다시 시작해야 한다.
loggers 엔드포인트를 사용하면 애플리케이션을 다시 시작하지 않고, 실시간으로 로그 레벨을 변경할 수 있다.
HTTP 요청 응답 기록
HTTP 요청과 응답의 과거 기록을 확인하기 위해
httpexchange엔드포인트를 사용함HttpExchangeRepository 인터페이스의 구현체를 빈으로 등록해야만 함
스프링 부트는 기본적으로 InMemoryHttpExchangeRepository를 제공함
이 인메모리 구현체는 최대 100개의 HTTP 요청을 제공함. 최대 요청이 넘어가면 과거 요청을 삭제함. setCapacity()를 통해서 최대 요청수를 변경할 수 있음.
이 기능은 매우 단순하고 기능에 제한이 많기 때문에 개발 단계에서만 사용하고, 실제 운영 서비스에서는 모니터링 툴이나 핀포인트, Zipkin같은 다른 기술을 사용하는 것이 좋다.
액츄에이터와 보안
액츄에이터가 제공하는 기능들은 우리 애플리케이션의 내부 정보를 너무 많이 노출함. 그래서 외부 인터넷 망이 공개된 곳에 액츄에이터의 엔드포인트를 공개하는 것은 보안상 좋은 방안이 아니다. 액츄에이터의 엔드포인트들은 외부 인터넷에서 접근이 불가능하게 막고, 내부에서만 접근 가능하도록 사용하는 것이 안전함.
외부 인터넷 망에서 8080 포트에만 접근할 수 있고, 다른 포트는 내부망에서만 접근할 수 있다면 액츄에이터에 다른 포트를 설정하면 된다.
액츄에이터의 기능을 애플리케이션 서버와는 다른 포트에서 실행하려면 다음과 같이 설정한다.
management.server.port=9292포트를 분리하는 것이 어렵고 어쩔 수 없이 외부 인터넷 망을 통해서 접근해야 한다면
/actuator경로에 서블릿 필터, 스프링 인터셉터 또는 스프링 시큐리티를 통해서 인증된 사용자만 접근 가능하도록 추가 개발이 필요함.management.endpoints.web.base-path: “/management”처럼 기본 경로를 변경할 수 있음Beta Was this translation helpful? Give feedback.
All reactions