Pular para o conteúdo principal

Exportação de telemetria aberta

Os rastreamentos gerados pelo MLflow são compatíveis com as especificações de rastreamento do OpenTelemetry. Portanto, os traços do MLflow podem ser exportados para várias soluções de observabilidade que suportam o OpenTelemetry.

Modos de exportação

O MLflow suporta três modos de exportação para rastros:

  1. Somente acompanhamentoMLflow (padrão) : os rastreamentos são enviados apenas para o servidor de acompanhamento MLflow .
  2. Somente OpenTelemetry : os rastreamentos são enviados somente para um coletor OpenTelemetry.
  3. Exportação dupla : os rastros são enviados para o acompanhamento MLflow e para um OpenTelemetry Collector.

Exportação OpenTelemetry

Por default, MLflow exporta rastros para o servidor de acompanhamento MLflow . Para exportar rastreamentos somente para um OpenTelemetry Collector, defina a variável de ambiente OTEL_EXPORTER_OTLP_ENDPOINT (ou OTEL_EXPORTER_OTLP_TRACES_ENDPOINT) como o URL de destino do OpenTelemetry Collector antes de iniciar qualquer rastreamento .

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

Exportação dupla (MLflow + OpenTelemetry)

Para exportar rastros para o Databricks MLflow e outro serviço OpenTelemetry simultaneamente, use a configuração de exportação dupla do MLflow. Isso permite enviar os mesmos dados de rastreamento para vários destinos sem precisar escolher entre os recursos de acompanhamento do MLflow e sua infraestrutura de observabilidade existente.

Habilitar exportação dupla

Defina a variável de ambiente MLFLOW_ENABLE_DUAL_EXPORT junto com sua configuração do 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})

Exportação de métricas

MLflow pode exportar métricas do OpenTelemetry quando um endpoint de métricas é configurado. Isso permite monitorar o intervalo de duração e outras métricas relacionadas ao rastreamento em sistemas de monitoramento compatíveis.

Para obter uma lista completa de métricas exportadas pelo MLflow, consulte a documentação de métricas exportadas do MLflow.

Habilitar exportação de métricas

Para exportar métricas para o OpenTelemetry Collector, defina a seguinte variável de ambiente:

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

Coletores OpenTelemetry

Clique nos links a seguir para saber mais sobre como configurar um OpenTelemetry Collector para sua plataforma de observabilidade específica:

Plataforma

Documentação do OpenTelemetria

Cão de dados

Guia do OpenTelemetry

New Relic

Monitoramento do OpenTelemetry APM

SignOz

Instrumentação OpenTelemetry Python

Splunk

Obtenha dados

Grafana

Enviar dados via OTLP

ServiceNow (Lightstep)

Documentação do coletor

Configurações

O MLflow usa o OTLP Exporter padrão para exportar traços para instâncias do OpenTelemetry Collector. Assim, você pode usar todas as configurações suportadas pelo OpenTelemetry. O exemplo a seguir configura o OTLP Exporter para usar o protocolo HTTP em vez do default gRPC e define cabeçalhos personalizados:

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"

Próximas etapas