[Cloud Native Observability] Prometheus - Metrics

IMKUNYOUNG·2024년 7월 31일
0

KCNA

목록 보기
47/56

Prometheus는 시스템의 성능과 상태를 지속적으로 추적하고 분석할 수 있게 해줍니다. Prometheus의 핵심은 '메트릭'입니다. 메트릭은 우리가 추적하고자 하는 데이터를 나타내며, 각 메트릭은 이름, 라벨, 값으로 구성됩니다. 이 글에서는 Prometheus의 작동 방식을 이해하고, 이를 통해 효과적으로 모니터링을 설정하는 방법을 알아보겠습니다.

1. Metric Name

메트릭 name은 해당 메트릭이 무엇을 측정하는지 나타냅니다. 예를 들어, node_cpu_seconds_total은 CPU가 특정 모드에서 사용된 시간을 초 단위로 나타내는 메트릭입니다. name은 간결하면서 명확하게 메트릭의 의미를 설명해야 합니다. Prometheus에서 메트릭 이름은 ASCII 문자, 숫자, 밑줄(_), 그리고 콜론(:)을 포함할 수 있으며, 기록 규칙에서 사용하는 특별한 경우를 제외하고는 콜론을 피해야 합니다.

2. 라벨

라벨은 메트릭에 대한 추가 정보를 제공하는 키-값 쌍입니다. 메트릭 이름이 측정 대상의 일반적인 특성을 설명한다면, 라벨은 보다 구체적인 상황을 설명합니다. 예를 들어, node_cpu_seconds_total 메트릭은 CPU 사용 시간을 나타내며, "CPU"와 "모드"라는 라벨을 가질 수 있습니다. 이는 각각 라벨이 어떤 CPU와 어떤 상태에서의 사용 시간을 나타내는지를 명확히 해줍니다.

라벨은 메트릭을 더 세분화하여 분석할 수 있게 도와줍니다. 예를 들어, 여러 CPU 코어가 있는 시스템에서 각 코어의 CPU 사용 시간을 추적할 때, "CPU" 라벨을 사용하여 각 코어를 식별할 수 있습니다. 또한, "mode" 라벨을 사용하여 유휴(idle) 상태, 사용자(user) 상태 등 다양한 모드에서의 사용 시간을 구분할 수 있습니다.

3. 메트릭 값과 타임스탬프

메트릭 값은 특정 시점에서 메트릭이 측정한 값을 나타냅니다. Prometheus는 메트릭 값을 수집할 때, 해당 시간도 함께 저장합니다. 이 타임스템프는 유닉스 시간으로 저장되며, 이는 1970년 1월 1일 UTC 이후 경과한 총 조수를 의미합니다. 타임스탬프를 통해 특정 시점의 메트릭 값을 정확히 추적할 수 있습니다.

4. 타임 시리즈

타임 시리즈는 동일한 메트릭과 라벨 세트를 공유하는 값들의 시간에 따른 연속적인 흐름입니다. 예를 들어, node_cpu_seconds_total 메트릭에서, 각 CPU와 모드에 따라 고유한 라벨 조합이 있을 때, 각 조합은 고유한 타임 시리즈를 구성합니다. Prometheus는 정기적으로 메트릭을 수집하고, 수집된 값을 타임 시리즈로 저장합니다.

5. 메트릭의 타입

Prometheus에는 네 가지 주요 메트릭 타입이 있습니다: 카운터(Counter), 게이지(Gauge), 히스토그램(Histogram), 요약(Summary)입니다.

  • 카운터(Counter): 증가만 가능한 메트릭입니다. 주로 요청 수, 오류 수 등과 같이 누적되는 값을 측정하는 데 사용됩니다.

  • 게이지(Gauge): 증가 및 감소가 모두 가능한 메트릭입니다. 현재 메모리 사용량, CPU 사용량 등 현재 상태를 측정하는 데 사용됩니다.

  • 히스토그램(Histogram): 값의 분포를 추적합니다. 특정 구간에 속하는 값의 수를 측정할 수 있습니다.

  • 요약(Summary): 히스토그램과 유사하게 값의 분포를 추적하지만, 분위수를 제공하여 특정 비율의 값이 특정 값 이하임을 나타낼 수 있습니다.

6. 라벨의 활용

라벨을 사용하면 메트릭을 보다 구체적으로 분류하고 분석할 수 있습니다. 예를 들어, 웹 애플리케이션의 각 엔드포인트에 대한 요청 수를 추적하려는 경우, 모든 요청을 추적하는 단일 메트릭 requests_total을 만들고, path 라벨을 사용하여 각 엔드포인트를 구분할 수 있습니다.

또한, 각 HTTP 메서드(GET, POST 등)에 대한 요청 수를 추적하려먼 method 라벨을 추가로 사용할 수 있습니다.

마치며

Prometheus는 이름, 라벨, 값과 같은 메트릭의 다양한 속성을 통해 복잡한 시스템의 모니터링을 단순화하고 효율적으로 관리할 수 있도록 해줍니다. 메트릭을 잘 정의하고 적절한 라벨을 사용하면 시스템의 성능과 상태를 더욱 명확히 이해할 수 있으며, 문제가 발생했을 때 신속하게 원인을 파악하고 대응할 수 있습니다.

0개의 댓글