Skip to content

로깅, 메트릭 모니터링

Mooooooo edited this page Aug 17, 2023 · 2 revisions

메트릭 모니터링

집사의고민팀은 메트릭 모니터링 구축을 위해 액츄에이터, 마이크로미터, 프로메테우스 그라파나를 사용합니다.

선택 이유

저희가 우선적으로 고려한 건 비용과 학습곡선을 생각했습니다. 데이터독, 뉴렐릭 등은 유료이고 학습자료 또한 프로메테우스가 매우 풍부하기 때문에 구축하기 좋다고 판단하였습니다. 또한 완전한 오픈 소스 모델으로 직접 모니터링 시스템을 구축하여 후에 확장하기에 적합해보였습니다.

시각화 도구로도 cloudwatch, 키바나, 크로노그래프 등 있지만 유료거나, 특정한 툴에 종속적이거나(키바나 - 엘리스틱 서치, 크로노그래프 - 인플럭스 DB) 자료가 부족하다고 생각했습니다.

따라서, 오픈 소스인 그라파나를 무료로 사용가능할 뿐 아니라 풍부한 정보를 기반으로 구축이 충분히 수월하게 가능할 것 같아서 결국 프로메테우스 + 그라파나 조합을 선택하였습니다.

액츄에이터(Actuator)

서비스 운영시 모니터링 할 수 있는 metric(지표)가 필요한데 스프링 부트 액츄에이터가 이를 쉽게 제공해줍니다. 서비스 상태를 확인할 수 있는 지표를 rest endpoint를 통해 제공합니다.

마이크로미터(Micrometer)

그라파나 같은 모니터링 툴이 동작하기 위해서는 metric 수치를 각 모니터링 툴이 이해할 수 있는 포맷으로 보내줘야 되는데, 직접 그 포맷을 맞춰 모니터링 툴로 보내주는 것은 매우 번거롭습니다. 마이크로미터를 이용하면, 저희가 직접 포맷을 맞출 필요 없이 애플리케이션 metrics을 마이크로미터가 정한 표준 방법으로 모아서 보내게 됩니다.

저희는 마이크로미터가 정한 표준 방법으로 메트릭을 전달하고 사용하는 모니터링 툴에 맞는 구현체를 등록하면 됩니다. 마이크로미터는 metric 수집 기능을 이미 만들어서 제공하며 액츄에이터는 마이크로미터가 제공하는 metric 수집 기능을 @AutoConfiguration을 통해 자동으로 등록해줍니다. (/actuator/metrics로 접속하면 기본 제공되는 metric을 확인해볼 수 있습니다.)

프로메테우스(Prometheus)

접속 시점의 metric뿐 아니라 과거 metric들도 보관할 수 있는 db가 필요한데, 접속 프로메테우스가 metric을 지속적으로 수집하고 db에 저장해주는 역할을 해줍니다.

그라파나(Grafana)

프로메테우스로도 메트릭을 확인할 수 있지만 시각화에 특화되지 않아 시각화 해주는 툴인 그라파나를 이용해 대시보드를 구성해 수집한 데이터를 시각화하여 보여줍니다.

메트릭 모니터링 아키텍처

image

액츄에이터에서 메트릭(CPU, JVM, Memory 등등) 수집 → 마이크로미터가 포맷팅 → 프로메테우스가 가져오고 → 그라파나가 시각화

로깅 모니터링

집사의고민팀은 로깅 모니터링 구축을 위해 로키, 프롬테일, 그라파나를 사용합니다.

선택 이유

현재 시각화 모니터링으로 그라파나를 사용하고 있는데 그라파나 랩스에서 로그 집계 시스템인 로키도 개발중이라 같이 연동하기 쉬울꺼라 생각하였고 오픈소스에 무료라 고민할 필요가 없다고 판단하였습니다. 그리고 로키와 가장 많이 조합하는게 프롬테일이라 구축을 기반할 자료가 가장 많을거라 생각해서 해당 도구들을 사용하여 구축하게 되었습니다.

로키

프로메테우스가 로그 데이터를 수집하고 검색하는 기능은 제공하고 있지 않아 로키로 로그 데이터를 집계하고 저장합니다. 로그 저장 및 쿼리 처리를 담당하는 로그 집계 시스템.

프롬테일

로그 파일을 실시간으로 감시하고 새로운 로그 메시지가 추가될 때마다 로그를 읽어서 로키로 전송합니다.

로깅 아키텍처

image

로그 파일 저장 → 프롬테일에서 로그 수집 후 로키로 푸시 → 로키 집계 및 저장 → 그라파나 시각화

Clone this wiki locally