[Cloud Native Observability] Prometheus Architecture

IMKUNYOUNG·2024년 7월 30일
0

KCNA

목록 보기
44/56

Prometheus는 시스템 모니터링과 경고 기능을 제공하는 오픈 소스 도구로, 다양한 메트릭을 수집하고 시각화하는 데 널리 사용됩니다. 이 글에서는 Prometheus의 아키텍처와 주요 구성 요소에 대해 설명하겠습니다.

1. Data Retrieval Worker (Scraping Worker)

Prometheus의 첫 번째 주요 구성 요소는 Data Retrieval Worker입니다. 이 Worker는 주어진 대상에서 메트릭을 수집하는 역할을 담당합니다. Prometheus는 주기적으로 대상에 HTTP 요청을 보내 필요한 메트릭을 수집합니다. 수집된 메트릭은 시계열 데이터베이스에 저장되어, 나중에 조회 및 분석을 할 수 있도록 합니다.

2. 시계열 데이터베이스 (Time Series Database)

Prometheus의 두 번째 구성 요소는 시계열 데이터베이스입니다. 이 데이터베이스는 모든 수집된 메트릭을 저장하는 곳으로, 데이터의 시간 변화를 추적할 수 있도록 합니다. 시계열 데이터베이스는 메트릭 데이터의 조회와 시각화를 위한 핵심적인 역할을 합니다.

3. HTTP 서버 (HTTP Server)

Prometheus의 마지막 구성 요소는 HTTP 서버입니다. 이 서버는 사용자가 데이터를 조회하고 시각화할 수 있도록 API를 제공합니다. Prometheus는 자체 웹 UI 또는 Grafana와 같은 외부 도구를 통해 데이터를 시각화할 수 있으며, PromQL이라는 쿼리 언어를 사용하여 복잡한 쿼리를 작성할 수 있습니다.

추가 구성 요소: Exporter와 Pushgateway

Prometheus는 위의 세 가지 주요 구성 요소 외에도 다양한 추가 기능을 제공하여 더 복잡한 모니터링 환경을 지원합니다.

  • 익스포터 (Exporter): 서버나 시스템에서 기본적으로 메트릭을 제공하지 않기 때문에, 익스포터는 특정 시스템의 데이터를 Prometheus가 이해할 수 있는 형식으로 변환하는 역할을 합니다. 다양한 애플리케이션 및 시스템에 대해 사용할 수 있는 다양한 익스포터가 제공됩니다.

  • Pushgateway: 일반적으로 Prometheus는 데이터를 '풀'방식으로 수집하지만, 단기 작업의 경우 '푸시' 방식으로 데이터를 전송해야 할 때가 있습니다. Pushgateway는 이러한 경우에 데이터를 받아주는 역할을 합니다. Pushgateway는 단기 작업의 데이터를 수집하여 Prometheus가 나중에 이를 쿼리할 수 있도록 합니다.

서비스 디스커버리와 경고 관리

Prometheus는 서비스 디스커버리 기능을 통해 동적으로 변화하는 클라우드 환경에서 대상 목록을 자동으로 업데이트할 수 있습니다. 이는 Kubernetes와 같은 동적 환경에서 매우 유용합니다.

또한 Prometheus는 경고 기능을 제공하여 특정 조건이 충족되면 알림을 생성합니다. 그러나 Prometheus 자체는 알림을 보내지 않으며, 이를 위해 별도의 Alert Manager를 사용합니다. Alert Manager는 이메일, Slack 등의 방법으로 실제 알림을 전송하는 역할을 합니다.

마치며

Prometheus는 강력한 메트릭 수집 및 모니터링 도구로서, 다양한 시스템의 성능과 상태를 효율적으로 모니터링할 수 있도록 도와줍니다. 기본적인 아키텍처와 주요 구성 요소를 이해함으로써, Prometheus를 효과적으로 활용하여 시스템의 가시성을 높이고 문제를 조기에 발견할 수 있습니다.

0개의 댓글