Export OpenTelemetry
Les traces générées par MLflow sont compatibles avec les spécifications de trace OpenTelemetry. Par conséquent, les traces MLflow peuvent être exportées vers diverses solutions d'observabilité qui prennent en charge OpenTelemetry.
Modes d'exportation
MLflow prend en charge trois modes d'exportation pour les traces :
- MLflow Tracking uniquement (default) : Les traces sont envoyées uniquement au serveur de suivi MLflow.
- OpenTelemetry uniquement : les traces sont envoyées uniquement à un collecteur OpenTelemetry.
- Exportation double : Les traces sont envoyées à MLflow Tracking et à un collecteur OpenTelemetry.
Exportation OpenTelemetry
Par défaut, MLflow exporte les traces vers le MLflow Tracking Server. Pour exporter les traces uniquement vers un collecteur OpenTelemetry à la place, définissez la variable d'environnement OTEL_EXPORTER_OTLP_ENDPOINT (ou OTEL_EXPORTER_OTLP_TRACES_ENDPOINT) sur l'URL cible du collecteur OpenTelemetry avant de démarrer toute trace .
import mlflow
import os
# Set the endpoint of the OpenTelemetry Collector
os.environ["OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"] = "http://localhost:4317/v1/traces"
# Optionally, set the service name to group traces
os.environ["OTEL_SERVICE_NAME"] = "<your-service-name>"
# Trace will be exported ONLY to the OTel collector at http://localhost:4317/v1/traces
with mlflow.start_span(name="foo") as span:
span.set_inputs({"a": 1})
span.set_outputs({"b": 2})
Exportation double (MLflow + OpenTelemetry)
Pour exporter des traces à la fois vers Databricks MLflow et un autre service OpenTelemetry simultanément, utilisez la configuration de double exportation de MLflow. Cela permet d'envoyer les mêmes données de trace vers plusieurs destinations sans avoir à choisir entre les capacités de suivi de MLflow et votre infrastructure d'observabilité existante.
Activer l'exportation double
Définissez la variable d'environnement MLFLOW_ENABLE_DUAL_EXPORT avec votre configuration OpenTelemetry :
import mlflow
import os
# Enable dual export mode
os.environ["MLFLOW_ENABLE_DUAL_EXPORT"] = "true"
# Configure OpenTelemetry Collector endpoint
os.environ["OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"] = "http://localhost:4317/v1/traces"
os.environ["OTEL_SERVICE_NAME"] = "my-ml-service"
# Configure MLflow tracking URI to Databricks
mlflow.set_tracking_uri("databricks")
# Traces will be exported to BOTH MLflow and the OTel collector
with mlflow.start_span(name="dual_export_example") as span:
span.set_inputs({"model": "gpt-4", "prompt": "Hello world"})
# Your ML workflow here
result = "Generated response"
span.set_outputs({"response": result})
span.set_attributes({"token_count": 15})
Exportation des métriques
MLflow peut exporter des métriques OpenTelemetry lorsqu'un Endpoint de métriques est configuré. Cela vous permet de surveiller les durées de span et d'autres métriques liées aux traces dans des systèmes de monitoring compatibles.
Pour obtenir une liste complète des métriques exportées par MLflow, consultez la documentation des métriques exportées de MLflow.
Activer l'exportation des métriques
Pour exporter les métriques vers OpenTelemetry Collector, définissez les variables d'environnement suivantes :
import os
# Enable metrics export
os.environ["OTEL_METRICS_EXPORTER"] = "otlp"
os.environ["OTEL_EXPORTER_OTLP_METRICS_ENDPOINT"] = "http://localhost:4317"
# Optional: Configure metric export interval (in milliseconds)
os.environ["OTEL_METRIC_EXPORT_INTERVAL"] = "60000" # Export every 60 seconds
Collecteurs OpenTelemetry
Cliquez sur les Link suivants pour en savoir plus sur la configuration d'un OpenTelemetry Collector pour votre plateforme d'observabilité spécifique :
Plateforme | Documentation OpenTelemetry |
|---|---|
Datadog | |
New Relic | |
SigNoz | |
Splunk | |
Grafana | |
ServiceNow (Lightstep) |
Configurations
MLflow utilise l’exportateur OTLP standard pour exporter les traces vers des instances OpenTelemetry Collector. Ainsi, vous pouvez utiliser toutes les configurations prises en charge par OpenTelemetry. L’exemple suivant configure l’exportateur OTLP pour utiliser le protocole HTTP au lieu du gRPC par default et définit des en-têtes personnalisés :
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="http://localhost:4317/v1/traces"
export OTEL_EXPORTER_OTLP_TRACES_PROTOCOL="http/protobuf"
export OTEL_EXPORTER_OTLP_TRACES_HEADERS="api_key=12345"
Ressources supplémentaires
- Comprendre les concepts de traçage — Découvrez comment les traces compatibles OpenTelemetry de MLflow sont structurées
- Instrumentez votre application avec le traçage – Ajoutez des portées personnalisées pour enrichir vos exportations OpenTelemetry
- Déboguez les problèmes de production – Utilisez les traces exportées pour surveiller les applications de production