-
- JVM 기반의 애플리케이션의 Metrics 제공
- Spring Framework5, boot2 부터 Spring의 Metrics 처리
- Prometheus등 다양한 모니터링 시스템 지원
- @Timed를 제공하는 Timer를 사용하여 이벤트의 시간, 호출빈도 등을 측정가능
actuator는 시스템을 움직이거나 제어하는 장치를 말한다.
- 엔드포인트 (끝점)
컴퓨터 네트워크에 연결하고 컴퓨터 네트워크와 정보를 교환하는 물리적 디바이스로
예를 들면 모바일 디바이스, 데스크톱 컴퓨터, 가상 머신, 임베디드 디바이스, 서버 뿐만 아니라 카메라, 조명, 냉장고, 보안 시스템, 스마트 스피커, 온도 조절 장치와 같은 사물 인터넷 디바이스도 엔드포인트이다.
엔드포인트 보안이 중요하다고 말하는 것은 최전방이 중요하다는 것과 같으며
액추에이터를 잘못 사용하면 엔드포인트, 환경설정 정보들을 노출시킬 수 있으므로 보안상 위험할 수도 있다.
- Prometheus
- Metrics를 수집하고 모니터링 및 알람에 사용되는 오픈소스 애플리케이션
- pull 방식의 구조와 다양한 Metric Exporter 제공
- 시계열 DB에 Metrics 저장 -> 조회 가능(Query)
이들을 사용해서 모니터링을 해보자
1. 환경설정
- gradle 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-actuator' runtimeOnly 'io.micrometer:micrometer-registry-prometheus'
- application.yaml
management: endpoints: web: exposure: include: health, info, metrics, prometheus
위의 설정이 잘 적용되는지 확인해본다.
웹 환경에서 제공되는 엔드포인트를 확인할 수 있다.
Prometheus 메트릭 노출 Endpoint가 존재함을 확인했다.
2. 지표가 잘 나오는지 확인하기
- 아이디 중복 확인 로직이 있는 controller에 @Timed를 붙여본다.
@GetMapping("/idCheck") @Timed(value = "idCheck", longTask = true) public ResponseEntity checkLoginId(@RequestParam("loginId") String loginId) { boolean isSuccess = memberService.checkLoginId(loginId); return createResponseEntity(isSuccess); }
postman에서 idCheck를 호출하여 실행한 후 지표가 잘 나오는지 확인해 보았다.
- metics && prometheus에서 idCheck 정보를 발견
위에서 말했다시피 Actuator는 여러 정보를 노출시키므로 보안상 주의하여 사용되어야 한다.
더보기– Actuator endpoint는 all disable 상태에서 필요한 것만 include하여 화이트리스트 형태로 운영한다.
– Actuator endpoint expose(노출)가 필요한 경우, 꼭 필요한 것만 include하여 화이트리스트 형태로 운영한다. 또한 asterisk(*)를 이용하여 include하지 않는다.
– shutdown endpoint는 enable하지 않는다.
– JMX형태로 Actuator 사용이 필요하지 않을 경우, 반드시 disable한다.
– Actuator는 서비스 운영에 사용되는 포트와 다른 포트를 사용한다.
– Actuator Default 경로를 사용하지 않고, 경로를 변경하여 운영한다.
– Actuator에 접근할 때에는, 인증되었으며 권한이 있는 사용자만이 접근가능하도록 제어한다.
[ 자세한 내용은 우형기술블로그 > Actuator 안전하게 사용하기 참고 ]
참고
- 엔드포인트
- 인프런 > Spirng Cloud로 개발하는 마이크로서비스 애플리케이션 > Micrometer 구현
- 우형기술블로그 > Actuator 안전하게 사용하기
'프로젝트' 카테고리의 다른 글
prometheus와 grafana설치 후 연동 (0) 2023.04.20 서버에 스프링 애플리케이션 띄우기(scp, CentOS) (0) 2023.03.14 CentOS 설치 후 자바 설치하기 (0) 2023.03.14 Ncloud) 간단하게 테스트서버 생성, 접속해보기 (classic, Centos) (0) 2023.03.13 jpa dto와 entity 빌더 패턴으로 변환하기 (0) 2023.03.11 댓글