次の方法で共有


OpenTelemetry エクスポート

MLflow によって生成されたトレースは、 OpenTelemetry トレース スペックと互換性があります。 したがって、MLflow トレースは、OpenTelemetry をサポートするさまざまな可観測性ソリューションにエクスポートできます。

エクスポート モード

MLflow では、トレースに対して次の 3 つのエクスポート モードがサポートされています。

  1. MLflow 追跡のみ (既定):トレースは MLflow 追跡サーバーにのみ送信されます。
  2. OpenTelemetry のみ: トレースは OpenTelemetry コレクターにのみ送信されます。
  3. デュアル エクスポート: トレースは、MLflow Tracking と OpenTelemetry コレクターの両方に送信されます。

OpenTelemetry エクスポート

既定では、MLflow はトレースを MLflow 追跡サーバーにエクスポートします。 代わりに、OpenTelemetry コレクターにのみトレースをエクスポートするには、OTEL_EXPORTER_OTLP_ENDPOINTに、OTEL_EXPORTER_OTLP_TRACES_ENDPOINT環境変数 (または) を OpenTelemetry コレクターのターゲット URL に設定します。

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})

デュアル エクスポート (MLflow + OpenTelemetry)

Databricks MLflow と別の OpenTelemetry サービスの 両方 にトレースを同時にエクスポートするには、MLflow のデュアル エクスポート構成を使用します。 これにより、MLflow の追跡機能と既存の監視インフラストラクチャのどちらかを選択しなくても、同じトレース データを複数の宛先に送信できます。

デュアル エクスポートを有効にする

openTelemetry 構成と共に MLFLOW_ENABLE_DUAL_EXPORT 環境変数を設定します。

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})

メトリック エクスポート

MLflow では、メトリック エンドポイントが構成されている場合に OpenTelemetry メトリックをエクスポートできます。 これにより、互換性のある監視システムでスパン期間やその他のトレース関連のメトリックを監視できます。

MLflow がエクスポートするメトリックの完全な一覧については、 MLflow のエクスポートされたメトリックのドキュメントを参照してください

メトリックのエクスポートを有効にする

メトリックを OpenTelemetry Collector にエクスポートするには、次の環境変数を設定します。

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

OpenTelemetry コレクター

特定の可観測プラットフォーム用に OpenTelemetry コレクターを設定する方法の詳細については、次のリンクをクリックしてください。

プラットホーム OpenTelemetry のドキュメント
Datadog OpenTelemetry ガイド
New Relic OpenTelemetry APM の監視
SigNoz OpenTelemetry Python インストルメンテーション
Splunk データを取得する
Grafana OTLP 経由でデータを送信する
ServiceNow (Lightstep) Collector のドキュメント

Configurations

MLflow では、標準の OTLP エクスポーターを使用して、トレースを OpenTelemetry Collector インスタンスにエクスポートします。 これにより、OpenTelemetry でサポート されているすべての構成 を使用できます。 次の例では、既定の gRPC ではなく HTTP プロトコルを使用するように OTLP エクスポーターを構成し、カスタム ヘッダーを設定します。

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"

次のステップ