기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
사용자 지정 SageMaker HyperPod 클러스터 지표 생성
Amazon SageMaker HyperPod(SageMaker HyperPod) 관찰성 추가 기능은 수백 개의 상태, 성능 및 효율성 지표out-of-the-box 제공합니다. 이러한 지표 외에도 모델별 성능 지표, 데이터 처리 통계 또는 애플리케이션별 측정과 같은 기본 지표로 캡처되지 않은 애플리케이션 또는 비즈니스 요구 사항과 관련된 사용자 지정 지표를 모니터링해야 할 수 있습니다. 이러한 요구 사항을 해결하기 위해 Python 코드 조각을 애플리케이션에 통합하여 OpenTelemetry를 사용하여 사용자 지정 지표 수집을 구현할 수 있습니다.
사용자 지정 지표를 생성하려면 먼저 다음 셸 명령을 실행하여 관찰성을 위해 Python 애플리케이션을 계측하는 데 필요한 코어 OpenTelemetry 구성 요소를 설치합니다. 이 설치를 통해 SageMaker HyperPod 클러스터에서 실행되는 Python 애플리케이션이 사용자 지정 원격 측정 데이터를 내보낼 수 있습니다. 이 데이터는 OpenTelemetry 수집기에서 수집되어 관찰성 인프라로 전달됩니다.
pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp-proto-grpc
다음 예제 스크립트는 포드 및 노드 정보로 지표에 태그를 자동으로 지정하여 클러스터 내에서 적절한 어트리뷰션을 보장하고 이러한 지표를 초당 SageMaker HyperPod 내장 관찰성 스택으로 전송하는 OpenTelemetry 지표 파이프라인을 구성합니다. 스크립트는 SageMaker HyperPod 지표 수집기에 대한 연결을 설정하고, 식별에 적합한 리소스 속성을 설정하고, 다양한 유형의 지표(카운터, 게이지 또는 히스토그램)를 생성하여 애플리케이션 성능의 모든 측면을 추적할 수 있는 미터 인터페이스를 제공합니다. 사용자 지정 지표는 시스템 지표와 함께 SageMaker HyperPod 모니터링 대시보드와 통합됩니다. 이 통합을 통해 사용자 지정 알림, 시각화 및 보고서를 생성하여 워크로드의 전체 성능 프로파일을 모니터링할 수 있는 단일 인터페이스를 통해 포괄적인 관찰성을 확보할 수 있습니다.
import os from opentelemetry import metrics from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporter from opentelemetry.sdk.metrics import MeterProvider from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader from opentelemetry.sdk.resources import Resource # Get hostname/pod name hostname = os.uname()[1] node_name = os.getenv('NODE_NAME', 'unknown') collector_endpoint = "hyperpod-otel-collector.hyperpod-observability:4317" # Configure the OTLP exporter exporter = OTLPMetricExporter( endpoint=collector_endpoint, insecure=True, timeout=5000 # 5 seconds timeout ) reader = PeriodicExportingMetricReader( exporter, export_interval_millis=1000 ) resource = Resource.create({ "service.name": "metric-test", "pod.name": hostname, "node.name": node_name }) meter_provider = MeterProvider( metric_readers=[reader], resource=resource ) metrics.set_meter_provider(meter_provider) # Create a meter meter = metrics.get_meter("test-meter") # Create a counter counter = meter.create_counter( name="test.counter", description="A test counter" ) counter.add(1, {"pod": hostname, "node": node_name})