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