Spring Boot Actuator
http://localhost:8080/actuator/
위 링크 접속시 아래처럼 각 항목별 상세 링크 정보를 알려준다
이러한 방식을 HATEOAS 방식이라고 한다
각각의 url은 endpoint라고 부른다
self -> http://127.0.0.1:8080/actuator
health -> http://127.0.0.1:8080/actuator/health
health-path -> http://127.0.0.1:8080/actuator/health/{*path}
의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-actuator'
핵심 라이브러리인 micrometer-core
를 살펴보면 spring boot가 구동되는 application의 health, info, metric 정보들을 수집하는 역할을 하는 binder 클래스들이 아주 많이 구현되어 있다
해당 클래스들은 spring-boot-actuator-autoconfigure
라이브러리에서 특정 클래스를 사용 시에 자동으로 bean으로 등록해준다
Endpoints
기본 제공 endpoints 목록
https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.endpoints
- 각 endpoint는 활성화 여부와 노출 여부 설정을 할 수 있으며, 2가지 모두 켜져야 외부로 노출된다
현재 dev 기준 설정management.endpoints.web.exposure.include=* management.endpoint.health.show-details=always
** 활성화 설정, 노출 설정을 모두 on 했더라도 추가 설정이 더 필요한 endpoint 존재
Custom endpoint 추가
Endpoint 클래스
@Endpoint(id = "exampleInfo")
public class ExampleEndpoint {
@Data
@AllArgsConstructor
private static class SomeInfo {
private String code;
private int count;
}
@ReadOperation
public List<SomeInfo> getSomeInfos() {
return List.of(
new SomeInfo("AA", 10),
new SomeInfo("BB", 20)
);
}
}
빈 등록
@Configuration
public class EndpointConfig {
@Bean
ExampleEndpoint exampleEndpoint() {
return new ExampleEndpoint();
}
}
결과
** Endpoint는 결국 rest controller와 다를바 없다
Metrics endpoint
- cpu, mem, disk usage, thread count, cache 용량 등의 정보는 대부분 제공된다
외부 모니터링 시스템과의 연동
- 액츄에이터가 metric 정보 수집해서 web endpoint로 제공
- datadog, elastic, prometheus, influx와 같은 모니터링 연관 시스템에서 metric 정보를 읽고 해당 시스템 스토리지에 저장
- grafana, kibana와 같은 GUI 툴을 통해 시간대별 metric 값의 변화를 차트로 보여준다
NSC에서는 Elastic을 사용할 예정이므로 아래 설정을 해준다면 될 것이다.
https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.metrics.export.elastic
MetricsEndpoint 클래스
- MeterRegistry 필드를 상속받는 meter는 80개 가량이다
- 이중에서 이름 매칭을 통해 적절한 meter를 찾은 후 상세 정보를 가져온다
Custom Metrics
MeterRegistry에 meter를 등록하려면 MeterBinder를 bean으로 등록해야 한다
Micrometer
아래 개념들에 대한 이해를 하면 좋을 듯 하다
- Registry
- Meters
- Tag
- Counters
- Gauges
- Timers
자세한 내용은 공식 문서를 참고하도록 하자
https://micrometer.io/docs/concepts
참조
'개발' 카테고리의 다른 글
단위 테스트에서 Mockito 잘 활용하기 (0) | 2023.09.22 |
---|---|
Feign Client 커스텀 하기 (0) | 2023.07.05 |
Kafka를 이용해 '실시간' 데이터 처리가 가능한가? (0) | 2022.12.11 |
2. Apis - 요약 (0) | 2022.12.04 |
1. Getting Started - 요약 (0) | 2022.12.04 |