Aller au contenu principal

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 :

  1. MLflow Tracking uniquement (default) : Les traces sont envoyées uniquement au serveur de suivi MLflow.
  2. OpenTelemetry uniquement : les traces sont envoyées uniquement à un collecteur OpenTelemetry.
  3. 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 .

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

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

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

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 :

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