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:
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:
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.
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:
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
- Exportar rastreamentos do Langfuse para o Databricks — Direcionar os rastreamentos do Langfuse para o Databricks pelo endpoint OTLP.
- Instrumentação personalizada do OpenTelemetry — Defina atributos de span do OTel para um agente instrumentado de forma personalizada e pesquise traces ingeridos.
- Armazenar rastreamentos do OpenTelemetry no Unity Catalog — Armazene e gerencie rastreamentos em tabelas do Unity Catalog.
- Visualizar rastreamentos na interface do usuário do Databricks MLflow — Pesquise e filtre rastreamentos na interface do usuário do MLflow.
- Observe e localize problemas — Faça uma query dos dados de rastreamento em escala usando o Databricks SQL.
- Acesso programático a rastreios — Pesquise e filtre rastreios programaticamente com o SDK do MLflow.
- Enriquecer rastreamentos: tags, contexto e feedback — Anexe tags pesquisáveis a rastreamentos.
Próximo passo: Observe and find issues