스프링 액츄에이터
- 스프링 부트에서 제공되는 라이브러리
- 애플리케이션의 모니터링이나 매트릭(측정 지표)과 같은 기능을 JMX와 HTTP 엔드 포인트를 통해 제공함
- JVM(Java Management Extenstions)은 Java 응용 프로그램의 모니터링과 관리 기능을 제공
- yml 파일과 gradle 추가로 적용시킬 수 있음
마이크로미터
- 서비스를 운영할 때는 애플리케이션의 CPU, 메모리, 커넥션 사용, 고객 요청 수 같은 많은 지표들을 확인하는 것이 필요
- 그래야 어디에 어떤 문제가 발생했는지 사전에 대응도 할 수 있고, 실제 문제가 발생해도 원인을 빠르게 파악하여 대처할 수 있음
- 예를 들어, 메모리 사용량이 가득 찼다면 메모리 문제와 관련있는 곳을 빠르게 찾아 대응할 수 있음
- 세상에는 수 많은 모니터링 툴이 있고, 시스템의 다양한 정보를 이 모니터링 툴에 전달하여 사용하게 됨
- 이런 모니터링 툴이 작동하려면 시스템의 다양한 지표들을 각각의 모니터링 툴에 맞도록 만들어서 보내줘야 함
모니터링 툴에 지표 전달
- 예를 들어서 CPU, JVM, 커넥션 정보 등을 JMX 툴에 전달한다고 가정한다면, 각각의 정보를 JMX 모니터링 툴이 정한 포맷에 맞추어 측정하고 전달해야 함
모니터링 툴 변경
- 문제가 발생하는 부분
- 기존에 측정했던 코드를 모두 변경한 툴에 맞도록 다시 변경해야 함
- 개발자 입장에서는 단순히 툴 하나를 변경했을 뿐인데, 측정하는 코드까지 모두 변경해야 하는 문제가 발생하게 됨
- 이런 문제를 해결하는 것이
마이크로미터(Micrometer)
라는 라이브러리
마이크로미터 추상화
마이크로미터 전체 그림
- 마이크로미터(애플리케이션 메트릭 파사드)는 애플리케이션의 메트릭(측정 지표)을 마이크로미터가 정한 표준 방법으로 모아서 제공해줌
- 즉, 마이크로미터가 추상화를 통해서 구현체를 쉽게 갈아끼울 수 있도록 해준 것
- 보통은 스프링이 이런 추상화를 직접 만들어서 제공하지만, 마이크로미터라는 이미 잘 만들어진 추상화가 있기 때문에 스프링은 이것을 활용함
- 스프링 부트 액츄에이터는 마이크로미터를 기본으로 내장해서 사용함
프로메테우스
- 애플리케이션에서 발생한 메트릭을 그 순간만 확인하는 것이 아니라 과거 이력까지 함께 확인하려면 메트릭을 보관하는 DB가 필요
- 이렇게 하려면 어디선가 메트릭을 지속해서 수집하고 DB에 저장해야 함
- 프로메테우스가 바로 이런 역할을 담당함
그라파나
- 프로메테우스가 DB라고 하면, 이 DB에 있는 데이터를 불러서 사용자가 보기 편하게 보여주는 대시보드가 필요함
- 그라파나는 매우 유연하고, 데이터를 그래프로 보여주는 툴임
- 수 많은 그래프를 제공하고, 프로메테우스를 포함한 다양한 데이터 소스를 지원함
전체 구조
- 스프링 부트 액츄에이터와 마이크로미터를 사용하면 수 많은 메트릭을 자동으로 생성함
- 마이크로미터 프로메테우스 구현체는 프로메테우스가 읽을 수 있는 포멧으로 메트릭을 생성
- 프로메테우스는 이렇게 만들어진 메트릭을 지속해서 수집함
- 프로메테우스는 수집한 메트릭을 내부 DB에 저장함
- 사용자는 그라파나 대시보드 툴을 통해 그래프로 편리하게 메트릭을 조회함
- 이때 필요한 데이터는 프로메테우스를 통해서 조회
Reference
Leave a comment