Aller au contenu principal

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 :

Python
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:

Python
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.

Python
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 :

Bash
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

Étape suivante : Observer et identifier les problèmes