Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Benutzerdefinierte Cluster-Metriken erstellen SageMaker HyperPod
Das Amazon SageMaker HyperPod (SageMaker HyperPod) Observability-Add-on bietet Hunderte von Gesundheits-, Leistungs- und Effizienzkennzahlen out-of-the-box. Zusätzlich zu diesen Metriken müssen Sie möglicherweise benutzerdefinierte Metriken überwachen, die auf Ihre Anwendungen oder Geschäftsanforderungen zugeschnitten sind und nicht durch Standardmetriken erfasst werden, z. B. modellspezifische Leistungsindikatoren, Datenverarbeitungsstatistiken oder anwendungsspezifische Messungen. Um diesem Bedarf gerecht zu werden, können Sie die Erfassung benutzerdefinierter Metriken implementieren, OpenTelemetry indem Sie einen Python-Codeausschnitt in Ihre Anwendung integrieren.
Um benutzerdefinierte Metriken zu erstellen, führen Sie zunächst den folgenden Shell-Befehl aus, um die OpenTelemetry Kernkomponenten zu installieren, die für die Instrumentierung von Python-Anwendungen für Observability erforderlich sind. Diese Installation ermöglicht es Python-Anwendungen, die auf SageMaker HyperPod Clustern ausgeführt werden, benutzerdefinierte Telemetriedaten auszugeben. Diese Daten werden vom OpenTelemetry Collector gesammelt und an die Observability-Infrastruktur weitergeleitet.
pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp-proto-grpc
Das folgende Beispielskript konfiguriert eine OpenTelemetry Metrik-Pipeline, die Metriken automatisch mit Pod- und Knoteninformationen kennzeichnet, um eine korrekte Zuordnung innerhalb Ihres Clusters sicherzustellen, und diese Metriken jede Sekunde an den SageMaker HyperPod integrierten Observability-Stack sendet. Das Skript stellt eine Verbindung zum SageMaker HyperPod Metrik-Collector her, richtet entsprechende Ressourcenattribute zur Identifizierung ein und bietet eine Meterschnittstelle, über die Sie verschiedene Arten von Metriken (Zähler, Messgeräte oder Histogramme) erstellen können, um jeden Aspekt der Leistung Ihrer Anwendung zu verfolgen. Benutzerdefinierte Messwerte lassen sich zusammen mit Systemmetriken in die SageMaker HyperPod Monitoring-Dashboards integrieren. Diese Integration ermöglicht eine umfassende Beobachtbarkeit über eine einzige Oberfläche, über die Sie benutzerdefinierte Benachrichtigungen, Visualisierungen und Berichte erstellen können, um das vollständige Leistungsprofil Ihres Workloads zu überwachen.
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})