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:
- Somente acompanhamentoMLflow (padrão) : os rastreamentos são enviados apenas para o servidor de acompanhamento MLflow .
- Somente OpenTelemetry : os rastreamentos são enviados somente para um coletor OpenTelemetry.
- 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 .
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:
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:
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 | |
New Relic | |
SignOz | |
Splunk | |
Grafana | |
ServiceNow (Lightstep) |
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:
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
- Entenda os conceitos de rastreamento - Saiba como os rastreamentos compatíveis com OpenTelemetry do MLflow são estruturados
- Instrumente seu aplicativo com rastreamento - Adicione extensões personalizadas para enriquecer suas exportações do OpenTelemetry
- Depure problemas de produção - Use rastreamentos exportados para monitorar aplicativos de produção