Exporter les traces MLflow vers OpenTelemetry
Le suivi MLflow repose sur OpenTelemetry (OTel). Comme chaque trace capturée par MLflow est un ensemble de spans OTel, vous pouvez exporter ces spans vers n’importe quelle plateforme d’observabilité compatible avec OpenTelemetry, telle que Datadog, Grafana ou Splunk, via le protocole standard OTLP. Vous pouvez envoyer les traces exclusivement à un collecteur externe ou utiliser l’exportation double pour les envoyer simultanément à Databricks MLflow et à votre pile d’observabilité existante.
Exporter les traces MLflow vers un collecteur OTel externe
MLflow peut exporter des traces vers n'importe quelle plateforme d'observabilité compatible OpenTelemetry. Trois modes sont pris en charge.
Export OTel uniquement
Pour envoyer des traces exclusivement vers un collecteur OTel externe (en contournant le stockage MLflow de Databricks), définissez OTEL_EXPORTER_OTLP_TRACES_ENDPOINT avant de démarrer toute trace :
import os
import mlflow
os.environ["OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"] = "http://localhost:4317/v1/traces"
os.environ["OTEL_SERVICE_NAME"] = "<your-service-name>"
# Trace is 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})
Export dual (MLflow + OTel)
Pour exporter simultanément des traces vers Databricks MLflow et un collecteur OTel externe, définissez MLFLOW_ENABLE_DUAL_EXPORT:
import os
import mlflow
os.environ["MLFLOW_ENABLE_DUAL_EXPORT"] = "true"
os.environ["OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"] = "http://localhost:4317/v1/traces"
os.environ["OTEL_SERVICE_NAME"] = "my-ml-service"
mlflow.set_tracking_uri("databricks")
# Traces are 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"})
span.set_outputs({"response": "Generated response"})
Exportation des métriques
MLflow exporte les métriques OTel lorsqu'un Endpoint de métriques est configuré. Pour obtenir la liste complète des métriques exportées, consultez la documentation MLflow.
import os
os.environ["OTEL_METRICS_EXPORTER"] = "otlp"
os.environ["OTEL_EXPORTER_OTLP_METRICS_ENDPOINT"] = "http://localhost:4317"
# Optional: configure export interval in milliseconds
os.environ["OTEL_METRIC_EXPORT_INTERVAL"] = "60000"
Plateformes prises en charge
MLflow utilise l’exportateur OTLP standard et prend en charge toutes les configurations d’exportateur OTLP. Les plateformes suivantes ont publié des guides de configuration OTel :
Pour utiliser le protocole HTTP à la place du gRPC default ou pour définir 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
- Export Langfuse traces to Databricks — Acheminez les traces Langfuse vers Databricks via l'Endpoint OTLP.
- Instrumentation OpenTelemetry personnalisée — Définissez les attributs de span OTel pour un agent instrumenté de façon personnalisée et recherchez les traces ingérées.
- Stocker les traces OpenTelemetry dans Unity Catalog — Stockez et gérez les traces dans les tables Unity Catalog.
- Afficher les traces dans l’interface utilisateur Databricks MLflow — Recherchez et filtrez les traces dans l’interface utilisateur MLflow.
- Observer et identifier les problèmes — Tracer des données de query à grande échelle en utilisant Databricks SQL.
- Accès programmatique aux traces — Recherchez et filtrez des traces de manière programmatique à l’aide du SDK MLflow.
- Enrichir les traces : tags, contexte et retours — Attachez des tags interrogeables aux traces.
Étape suivante : Observer et identifier les problèmes