OpenTelemetry와 Prometheus 비교: 보이지 않는 것은 고칠 수 없다

코딩과 프로그래밍 작업을 하고 있는 여성 프리랜서 개발자. 코드 언어와 애플리케이션이 있는 두 화면으로 코딩.

애플리케이션 성능을 모니터링하고 최적화하는 것은 소프트웨어 개발자와 기업에 중요합니다. 기업이 더 많은 애플리케이션을 배포할수록 수집 및 분석할 수 있는 데이터도 많아집니다. 하지만 데이터를 모니터링하고, 최적화하고, 저장하고, 결정적으로 맥락에 맞게 활용할 수 있는 적절한 도구가 없다면 이러한 데이터에는 큰 가치가 없습니다.

조직은 문제가 발생하기 전에 문제를 파악하고, 병목 현상을 표시하고, 네트워크 트래픽을 분산하는 등 애플리케이션 상태를 개선하는 데 도움이 되는 모니터링 및 관측 가능성 솔루션을 배포하여 애플리케이션 데이터를 최대한 활용할 수 있습니다. 이러한 기능은 애플리케이션의 가동 중단 시간을 줄이고, 보다 안정적인 성능을 제공하며, 사용자 경험을 개선하는 데 도움이 됩니다.

OpenTelemetry와 Prometheus는 둘 다 클라우드 네이티브 컴퓨팅 재단 (CNCF) 산하의 오픈 소스 프로젝트로, 애플리케이션 모니터링을 위한 관측 가능성 도구를 제공합니다. 다양한 유형의 데이터와 운영에는 조직의 목표와 애플리케이션 사양에 따라 각기 다른 솔루션이 필요합니다. 구현할 플랫폼을 선택하기 전에 OpenTelemetry와 Prometheus와 같은 플랫폼 간의 주요 차이점과 각 솔루션이 제공하는 기능을 이해하는 것이 중요합니다.

OpenTelemetry와 Prometheus가 통합되어 애플리케이션 모니터링을 위한 강력한 듀오로 함께 작동할 수 있다는 점도 중요합니다. OpenTelemetry와 Prometheus는 메트릭 수집 및 변환을 지원하여 DevOps 및 IT 팀이 성능 인사이트를 생성하고 이에 따라 조치를 취할 수 있게 지원합니다.

OpenTelemetry란 무엇인가요?

OTel이라고도 하는 OpenTelemetry는 로그, 메트릭 및 추적을 포함한 원격 분석 데이터를 생성, 수집, 내보내기 및 관리하기 위한 중앙 집중식 위치를 생성하도록 설계된 플랫폼입니다. OpenCensus와 OpenTracing의 합병으로 탄생한 OTel은 서로 다른 데이터 수집을 표준화하는 API, SDK, 라이브러리 및 통합을 제공하는 것을 목표로 합니다. OTel을 사용하면 원하는 모니터링 출력을 코드에 내장하여 데이터 처리를 간소화하고 데이터를 적절한 백엔드로 내보낼 수 있습니다.

원격 측정 데이터를 분석하는 것은 시스템 성능과 상황을 이해하는 데 중요합니다. 이러한 유형의 최적화된 관측 가능성을 통해 조직은 문제를 더 빠르게 해결하고, 시스템 안정성을 높이고, 대기 시간 문제를 해결하고, 애플리케이션 가동 중단 시간을 줄일 수 있습니다.

OpenTelemetry 에코시스템의 주요 측면을 간략하게 설명하면 다음과 같습니다.

API: OpenTelemetry API(애플리케이션 프로그래밍 인터페이스)는 프로그래밍 언어를 범용적으로 번역합니다. API는 이 기능을 통해 원격 측정 데이터를 수집할 수 있습니다. 이러한 API는 OpenTelemetry 메트릭 수집을 표준화하는 데 핵심적인 역할을 합니다.

SDK: 소프트웨어 개발 키트는 소프트웨어를 구축하는 도구입니다. 소프트웨어 개발의 기본 구성 요소인 프레임워크, 코드 라이브러리 및 디버거가 포함됩니다. OTel SDK는 OpenTelemetry API를 구현하고 텔레메트리 데이터를 생성 및 수집하는 데 필요한 도구를 제공합니다.

OpenTelemetry 수집기: OTel 수집기는 원격 측정 데이터를 수신, 처리하고 내보냅니다. 특정 데이터 유형을 지정된 백엔드로 필터링하도록 OTel 수집기를 구성할 수 있습니다.

계측 라이브러리: OTel은 모든 플랫폼에서 실행되는 계측 모델을 제공합니다. 계측 라이브러리를 사용하면 OTel을 모든 프로그래밍 언어와 통합할 수 있습니다.

OpenTelemetry의 장점

OpenTelemetry 프로토콜(OTLP)은 코드나 메타데이터를 변경하지 않고도 메트릭, 로그, 추적과 같은 원격 측정 데이터를 수집하여 관측 가능성을 간소화합니다.

메트릭: 메트릭은 시스템 성능과 상태에 대한 전반적인 개요를 정의합니다. 개발자, IT 및 비즈니스 관리 팀은 비즈니스 목표를 충족하는 수준의 애플리케이션 성능을 유지하기 위해 어떤 메트릭을 추적하는 것이 가장 유용한지 결정합니다. 팀에서 중요하다고 여기는 데이터에 따라 메트릭이 달라지며, 여기에는 네트워크 트래픽, 지연 시간, CPU 저장 공간 등이 포함될 수 있습니다. 또한 메트릭은 애플리케이션 성능의 패턴과 트렌드를 추적하는 데 사용할 수도 있습니다.

로그: 로그는 소프트웨어 또는 애플리케이션 구성 요소 내에서 발생하는 이벤트의 기록입니다. DevOps 팀이 모니터링하려는 구성 요소의 특정 측면을 중심으로 로그를 생성할 수 있습니다. 일반적인 성능 정보를 표시하거나, 설정된 임계값을 초과하는 시점을 표시하거나, 오류를 표시할 수 있는 기록 데이터로 사용됩니다. 로그는 애플리케이션 에코시스템의 전반적인 상태를 모니터링하는 데 도움이 됩니다.

추적: 추적은 로그보다 애플리케이션 성능을 더 넓게 볼 수 있게 해주며, 최적화에 도움이 됩니다. 또한 로그보다 더 집중적이며 애플리케이션 스택을 이동하는 단일 요청의 엔드투엔드 여정을 추적합니다. 개발자는 추적을 통해 오류나 병목 현상이 발생하는 정확한 순간, 지속된 시간, 사용자 여정에 미치는 영향을 파악할 수 있습니다. 이러한 정보는 마이크로서비스를 관리하고 전체 애플리케이션 성능을 개선하는 데 도움이 됩니다.

OTel은 이러한 세 가지 유형의 원격 측정 데이터를 가져와서 Prometheus를 비롯한 다양한 백엔드로 내보낼 수 있습니다. 이 기능은 공급업체 또는 백엔드 종속을 방지하고 개발자가 선호하는 분석 도구를 선택할 수 있게 해줍니다. OpenTelemetry는 Prometheus를 비롯한 다른 플랫폼과의 다양한 통합을 지원하여 관측 가능성을 높일 수 있는 기회를 제공합니다. OTel은 Java, Python, JavaScript 및 Go를 지원하여 점점 더 유연한 솔루션이 되고 있습니다. 또한 개발자와 IT 팀이 웹 브라우저 및 위치와 관계없이 성능을 모니터링할 수 있게 지원합니다.

OpenTelemetry의 가장 큰 장점은 많은 애플리케이션에서 데이터를 일관되게 수집하고 내보낼 수 있는 기능과 수집 프로세스의 표준화에 있습니다. OTel은 분산 시스템 및 마이크로서비스에 대한 관측 가능성을 위한 파워풀한 도구입니다.

Prometheus란 무엇인가요?

Prometheus는 애플리케이션 메트릭을 수집하고 구성하기 위해 만들어진 모니터링 및 알림용 도구 키트입니다. Prometheus 서버는 오픈 소스 도구가 되기 전에 SoundCloud에서 처음 개발되었습니다.

Prometheus는 시계열 데이터의 엔드투엔드 모니터링을 위한 시계열 데이터베이스입니다. 시계열 메트릭은 월별 판매 데이터 또는 일일 애플리케이션 트래픽과 같이 일정한 간격으로 수집되는 데이터의 모음입니다. 이러한 유형의 데이터에 대해 명확한 가시성을 확보하면 비즈니스 기획을 위한 패턴, 트렌드 및 예측을 위한 인사이트를 얻을 수 있습니다. Prometheus는 호스트와 통합되면 DevOps 팀이 모니터링하고자 하는 전용 기능과 관련된 애플리케이션 메트릭을 수집합니다.

Prometheus 메트릭은 PromQL이라는 쿼리 언어를 사용하여 메트릭 이름, 레이블, 타임스탬프 및 값으로 구성된 데이터 포인트를 제공합니다. PromQL을 사용하면 개발자와 IT 부서에서 데이터 메트릭을 집계하고 이를 히스토그램(그래프 및 대시보드)으로 변환하여 시각적으로 표시할 수 있습니다. Prometheus는 엔터프라이즈 데이터베이스 또는 익스포터의 데이터에 액세스할 수 있습니다. 익스포터는 다양한 앱 및 엔드포인트에서 메트릭을 가져오는 애플리케이션과 관련된 소프트웨어입니다.

Prometheus는 다음과 같은 네 가지 유형의 메트릭을 수집합니다.

카운터: 증가하는 누적 수치 값을 측정합니다. 카운터는 완료된 작업, 정의된 기간 동안 발생한 오류의 수, 또는 실행 중인 프로세스 또는 마이크로서비스의 수를 측정하는 데 사용됩니다.

게이지: 게이지는 외부 요인에 따라 올라가거나 내려가는 수치를 모니터링합니다. CPU 및 메모리 사용량, 온도 또는 대기열 크기를 모니터링할 수 있습니다.

히스토그램: 히스토그램은 요청 기간 또는 응답 크기와 같은 지정된 이벤트의 지속 시간을 측정합니다. 그런 다음 이러한 측정 범위를 버킷이라고 하는 구간으로 나누고, 각 버킷에 해당하는 측정값의 수를 결정합니다.

요약: 히스토그램과 마찬가지로 요약도 요청 기간과 응답 크기를 측정하지만, 모든 관측값의 총 수와 관찰된 모든 값의 총계를 제공합니다.

수집된 데이터를 기반으로 액세스 가능한 대시보드와 그래프를 만들 수 있다는 점도 Prometheus의 또 다른 장점입니다.

Prometheus의 장점

Prometheus를 사용하면 실시간 애플리케이션 모니터링을 통해 정확한 인사이트를 얻고 문제를 신속하게 해결할 수 있습니다. 또한 특정 기능과 관련된 임계값을 생성할 수 있습니다. 이러한 임계값이 충족되거나 초과되면 알림을 트리거하여 문제를 해결하는 데 걸리는 시간을 단축할 수 있습니다. Prometheus는 대량의 메트릭 데이터를 처리 및 저장하고 분석 팀이 필요할 때 데이터를 사용할 수 있도록 제공합니다. 장기적인 스토리지 솔루션이 아니라, 즉각적인 분석에 필요한 데이터를 저장하기 위한 도구입니다. Prometheus의 표준 데이터 저장 기간은 2시간에서 15일 사이입니다.

Prometheus는 테이너화된 애플리케이션의 배포, 관리 및 확장을 예약하고 자동화하기 위한 오픈 소스 컨테이너 오케스트레이션 플랫폼인 Kubernetes와 원활하게 통합됩니다. 기업은 Kubernetes를 통해 다양한 서비스와 마이크로서비스를 배포하는 복잡한 하이브리드 및 멀티클라우드 환경을 구축할 수 있습니다. Prometheus를 Kubernetes와 통합하면 이러한 복잡한 시스템에 대한 풀 스택 관측 가능성과 감독 기능을 확보할 수 있습니다.

Prometheus는 데이터를 대시보드, 차트, 그래프 및 경고로 변환하는 데 도움이 되는 강력한 시각화 도구인 Grafana와도 호환됩니다. Prometheus와 Grafana를 함께 사용하면 메트릭을 가져와 명확한 시각화를 생성할 수 있습니다. 이 두 플랫폼 간의 호환성을 통해 여러 팀에서 복잡한 데이터에 더 쉽게 액세스하고 공유할 수 있습니다.

OpenTelemetry와 Prometheus의 주요 차이점

Prometheus는 메트릭 모니터링, 저장 및 시각화를 위한 도구를 제공하지만, 근본 원인 분석에 사용되는 로그 또는 지원 추적을 제공하지는 않습니다. 전반적으로 Prometheus의 사용 사례가 OpenTelemetry보다 더 제한적입니다.

OpenTelemetry는 프로그래밍 언어에 구애받지 않는 통합을 통해 Prometheus보다 더 복잡한 메트릭을 처리하고 추적할 수 있습니다. OTel은 자동화된 계측 모델을 제공하므로 확장성이 뛰어나며 Prometheus보다 더 큰 확장성을 제공합니다. Prometheus와 달리 OpenTelemetry는 스토리지 솔루션을 제공하지 않으므로 별도의 백엔드 시스템과 함께 사용해야 합니다.

간략 분석:

  • Prometheus는 누적 메트릭을 측정하여 합계를 제공하는 반면, OpenTelemetry는 메트릭을 델타로 나타낼 수 있습니다.
  • Prometheus는 단기 데이터 및 메트릭 스토리지를 제공하는 반면, OTel은 기본적으로 스토리지를 지원하지 않지만 별도의 스토리지 솔루션과 함께 사용할 수 있습니다.
  • OpenTelemetry는 푸시 또는 풀을 통해 통합 API를 사용하여 메트릭, 로그 및 추적을 수집하고 이를 공통 언어로 번역하지만, Prometheus는 이를 수행할 수 없습니다. Prometheus는 호스트에서 데이터를 가져와 메트릭을 수집하며, 주로 시계열 메트릭을 수집하고 저장하는 데 중점을 둡니다.
  • OTel은 언어에 구애받지 않으며 메트릭을 변환할 수 있어 개발자에게 더 많은 유연성을 제공합니다. Prometheus는 PromQL을 사용하여 데이터와 메트릭을 집계합니다.
  • Prometheus는 사용자 지정 가능한 경고와 결합된 메트릭을 모니터링하기 위한 웹 시각화를 제공합니다. OpenTelemetry는 시각화를 위해 별도의 도구와 통합되어야 합니다.
  • OTel을 사용하면 메트릭 값을 부동 소수점이 아닌 정수로 표현할 수 있으므로 값을 더 정확하게 표현할 수 있고 이해하기 쉽습니다. Prometheus는 메트릭을 정수로 표현할 수 없습니다.

조직의 요구 사항에 따라 어떤 솔루션이 더 적합한지 결정됩니다. 데이터에 대해 보다 전반적인 이해가 필요하고, 분산형 시스템이 있는 복잡한 환경에서 작업 중이며, 더 많은 유연성을 원한다면 OpenTelemetry가 더 적합한 솔루션일 수 있습니다. 로그와 추적을 모니터링해야 하는 경우에도 마찬가지입니다.

반면 개별 시스템 또는 운영을 모니터링해야 하고 알림, 스토리지 및 시각화를 제공하는 모델을 찾고 있다면 Prometheus가 적합한 옵션일 수 있습니다.

OpenTelemetry 및 Prometheus 통합

좋은 소식을 알려드리자면, 반드시 둘 중 하나를 선택할 필요는 없다는 것입니다. OpenTelemetry와 Prometheus는 호환 가능한 플랫폼이기 때문입니다. OTel SDK는 Prometheus 데이터 모델에서 메트릭을 수집할 수 있으며, Prometheus는 OpenTelemetry 메트릭을 지원합니다. 이러한 플랫폼을 함께 사용하면 두 가지 장점과 고급 모니터링 옵션을 모두 얻을 수 있습니다. 예를 들면 다음과 같습니다.

  • OTel과 Prometheus를 함께 사용하면 애플리케이션 환경에 대한 실시간 인사이트를 통해 복잡한 시스템을 모니터링할 수 있습니다.
  • OTel의 추적 및 모니터링 도구와 Prometheus의 알림 기능을 함께 사용할 수 있습니다.
  • Prometheus는 대량의 데이터를 처리할 수 있습니다. 이 기능은 메트릭, 추적 및 로그를 단일 인터페이스로 통합하는 OTel의 기능과 결합하여 시스템 및 애플리케이션을 확장할 때 효율성을 높여줍니다.
  • PromQL은 OpenTelemetry의 데이터 캡처에서 수집된 데이터를 분석하여 시각화 모델을 만드는 데 사용할 수 있습니다.

또한 OpenTelemetry 및 Prometheus는 IBM InstanaIBM Turbonomic과 통합되어 추가적인 모니터링 툴을 제공합니다. Instana의 강력한 종속성 맵, 업스트림/다운스트림 서비스 상관관계 및 풀 스택 가시성을 통해 OTel의 기능은 모든 서비스를 계측할 수 있도록 최적화되어 있습니다. Instana는 다른 모든 데이터 소스에서 제공하는 것과 마찬가지로 OTel 데이터에 대한 뛰어난 환경을 제공하여 애플리케이션 문제를 신속하게 찾고 해결하는 데 필요한 컨텍스트를 제공합니다. Turbonomic을 사용하면 Prometheus의 데이터 모니터링 툴을 사용해 실시간 데이터 수집을 기반으로 리소스 결정을 자동화할 수 있습니다. 이러한 통합은 애플리케이션 에코시스템의 상태를 증진하고 전반적인 성능을 개선하기 위한 최적화된 방법입니다.

 

작가

Camilo Quiroz-Vázquez

IBM Staff Writer