本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建自定义 SageMaker HyperPod 集群指标
Amazon SageMaker HyperPod (SageMaker HyperPod) 可观察性附加组件提供了数百个运行状况、性能和效率指标 out-of-the-box。除了这些指标外,您可能需要监控特定于您的应用程序或业务需求的自定义指标,这些指标不是默认指标捕获的,例如特定模型的性能指标、数据处理统计数据或应用程序特定的衡量标准。为了满足这一需求,你可以 OpenTelemetry 通过将 Python 代码片段集成到应用程序中来实现自定义指标收集。
要创建自定义指标,请先运行以下 shell 命令来安装检测 Python 应用程序以实现可观察性所需的核心 OpenTelemetry 组件。通过此安装,在 SageMaker HyperPod 集群上运行的 Python 应用程序可以发出自定义遥测数据。这些数据由收集 OpenTelemetry 器收集并转发到可观测性基础架构。
pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp-proto-grpc
以下示例脚本配置了一个 OpenTelemetry 指标管道,该管道会自动使用 pod 和节点信息标记指标,确保集群内的归因正确,并每秒将这些指标发送到 SageMaker HyperPod内置的可观测性堆栈。该脚本建立与 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})