OpenTelemetry Export

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 différentes solutions d’observabilité qui prennent en charge OpenTelemetry.

Modes d’exportation

MLflow prend en charge trois modes d’exportation pour les traces :

  1. Suivi MLflow uniquement (valeur par défaut) : les traces sont envoyées uniquement au serveur de suivi MLflow.
  2. OpenTelemetry uniquement : les traces sont envoyées uniquement à un collecteur OpenTelemetry.
  3. Double exportation : les traces sont envoyées à MLflow Tracking et à un collecteur OpenTelemetry.

Export OpenTelemetry

Par défaut, MLflow exporte des traces vers le serveur de suivi MLflow. Pour exporter des traces uniquement vers un collecteur OpenTelemetry à la place, définissez la OTEL_EXPORTER_OTLP_ENDPOINT variable d’environnement (ou OTEL_EXPORTER_OTLP_TRACES_ENDPOINT) sur l’URL cible du collecteur OpenTelemetry avant de démarrer une 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})

Double export (MLflow + OpenTelemetry)

Pour exporter des traces vers Databricks MLflow et un autre service OpenTelemetry simultanément, utilisez la configuration d’exportation double de MLflow. Cela permet d’envoyer les mêmes données de trace à plusieurs destinations sans avoir à choisir entre les fonctionnalités de suivi de MLflow et votre infrastructure d’observabilité existante.

Activer l’exportation en mode 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 de mesures

MLflow peut exporter des métriques OpenTelemetry lorsqu’un point de terminaison de métriques est configuré. Cela vous permet de surveiller les durées de span et d’autres métriques de trace dans les systèmes de surveillance compatibles.

Pour obtenir la liste complète des métriques exportées par MLflow, consultez la documentation sur les métriques exportées de MLflow.

Activer l’exportation des métriques

Pour exporter des 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 liens suivants pour en savoir plus sur la configuration d’un collecteur OpenTelemetry pour votre plateforme d’observabilité spécifique :

Plate-forme Documentation d'OpenTelemetry
Datadog OpenTelemetry Guide
New Relic Analyse APM OpenTelemetry
SigNoz OpenTelemetry Python Instrumentation
Splunk Importer des données
Grafana Envoyer des données via OTLP
ServiceNow (Lightstep) Documentation du collecteur

Paramètres

MLflow utilise l’exportateur OTLP standard pour exporter des traces vers des instances du collecteur OpenTelemetry. 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 défaut 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"

Étapes suivantes