Pular para o conteúdo principal

Exportar rastreamentos do MLflow para o OpenTelemetry

O rastreamento do MLflow é integrado ao OpenTelemetry (OTel). Como cada rastreio capturado pelo MLflow é um conjunto de spans do OTel, você pode exportar esses spans para qualquer plataforma de observabilidade compatível com o OpenTelemetry — como Datadog, Grafana ou Splunk — por meio do protocolo padrão OTLP. Você pode enviar rastreios exclusivamente para um coletor externo ou usar a exportação dupla para enviá-los simultaneamente para o Databricks MLflow e para sua stack de observabilidade existente.


Exportar rastreamentos do MLflow para um coletor OTel externo

O MLflow pode exportar rastreamentos de saída para qualquer plataforma de observabilidade compatível com OpenTelemetry. Três modos são suportados.

Exportação somente para OTel

Para enviar rastreios exclusivamente para um coletor OTel externo (ignorando o armazenamento do Databricks MLflow), defina OTEL_EXPORTER_OTLP_TRACES_ENDPOINT antes de iniciar qualquer rastreio:

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

Exportação dupla (MLflow + OTel)

Para exportar rastreamentos simultaneamente para o MLflow do Databricks e para um coletor OTel externo, defina 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"})

Exportação de métricas

O MLflow exporta métricas OTel quando um endpoint de métricas é configurado. Para obter a lista completa de métricas exportadas, consulte a documentação do 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"

Plataformas suportadas

O MLflow usa o exportador OTLP padrão e oferece suporte a todas as configurações do exportador OTLP. As seguintes plataformas publicaram guias de configuração do OTel:

Para usar o protocolo HTTP em vez do gRPC default ou para definir 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"

Recursos adicionais

Próximo passo: Observe and find issues