본문 바로가기
클라우드/쿠버네티스

🔍 OpenTelemetry의 핵심, 'Resource'에 대해 알아보기

by gasbugs 2025. 10. 13.

안녕하세요! Observability(관측 가능성)의 세계를 탐험하는 여러분! 오늘은 OpenTelemetry의 아주 중요한 기본 개념 중 하나인 'Resource'에 대해 쉽고 자세하게 알아보려고 합니다.

 

데이터를 수집하는 것도 중요하지만, 그 데이터가 어디서 왔는지 아는 것은 더더욱 중요하죠. 바로 그 역할을 하는 것이 'Resource'입니다! 🚀

 


🏷️ Resource란 무엇일까요?

가장 간단하게 정의하자면, Resource는 원격 측정 데이터(Telemetry Data)를 생성하는 주체를 설명하는 속성들의 집합입니다.

조금 어렵게 들리나요? 쉽게 비유해 볼게요. 우리가 소포를 보낼 때 보내는 사람의 이름, 주소, 연락처를 적는 것과 같아요. 📦 이 정보가 있어야 소포가 어디서 왔는지 알 수 있잖아요?

 

마찬가지로, 애플리케이션의 로그, 메트릭, 트레이스 같은 데이터가 발생했을 때, 이 데이터가 어떤 서비스에서, 어떤 환경에서, 어떤 버전에서 만들어졌는지 알려주는 '정보 태그'가 바로 'Resource'입니다.

  • 데이터를 생성하는 주체 (Entity): 여러분의 마이크로서비스, 특정 서버, 컨테이너, 혹은 개별 프로세스 등이 될 수 있습니다. 🏢
  • 속성 (Attributes): 'Key-Value' 쌍으로 이루어진 구체적인 정보 조각들입니다. (예: service.name = user-api)

 

🧐 Resource에는 어떤 정보가 담기나요?

Resource는 해당 주체를 식별할 수 있는 다양한 정보를 속성으로 가질 수 있습니다. 가장 대표적인 예시는 다음과 같습니다.

  • service.name: 서비스의 논리적인 이름 (예: payment-service, frontend-web)
  • service.version: 서비스의 버전 (예: 1.0.5, v2.1-beta)
  • deployment.environment: 배포 환경 (예: production, staging, development)
  • host.name: 호스트의 이름 (예: server-prod-01)
  • cloud.provider: 클라우드 제공자 (예: aws, gcp, azure)

이 외에도 굉장히 다양한 표준 속성들이 정의되어 있어, 여러분의 환경을 아주 상세하게 표현할 수 있습니다.

 

✨ Resource가 왜 그렇게 중요할까요?

Resource의 가장 강력한 특징은 "한 번 정의하면, 해당 주체에서 발생하는 모든 데이터에 공통적으로 적용된다"는 점입니다.

 (이미지: OpenTelemetry 공식 문서)

user-api라는 서비스에 service.name, service.version, deployment.environment를 Resource로 설정했다고 가정해 봅시다.

  1. 이 서비스에서 API 요청을 처리하며 스팬(Span) 이 생성됩니다. ➡️ 이 스팬에는 3가지 Resource 속성이 자동으로 포함됩니다.
  2. 이 서비스의 현재 메모리 사용량 메트릭(Metric) 이 수집됩니다. ➡️ 이 메트릭에도 3가지 Resource 속성이 자동으로 포함됩니다.
  3. 에러가 발생하여 로그(Log) 가 기록됩니다. ➡️ 이 로그에도 3가지 Resource 속성이 자동으로 포함됩니다.

 

이렇게 모든 데이터에 일관된 식별 정보가 부여되기 때문에, 우리는 다음과 같은 강력한 분석을 할 수 있게 됩니다. 📊

  • "운영(production) 환경에서 발생한 모든 로그만 필터링해서 보기"
  • "payment-service의 v2.1-beta 버전에서만 유독 에러율이 높은지 확인하기"
  • "특정 호스트(server-prod-01)의 CPU 사용량과 응답 시간을 함께 분석하기"

이처럼 Resource는 흩어져 있는 데이터를 하나로 묶어주는 맥락(Context) 을 제공하며, 복잡한 시스템의 문제를 추적하고 이해하는 데 핵심적인 역할을 합니다.


오늘은 OpenTelemetry의 'Resource' 개념에 대해 알아보았습니다. Observability를 제대로 구축하기 위한 첫걸음은 바로 내가 보고 있는 데이터가 어디서 오는지 명확히 아는 것입니다. 여러분의 시스템에 OpenTelemetry를 적용하실 때, Resource 설정을 잊지 마세요! 😉