Exporters
Envie dados de telemetria para o OpenTelemetry Collector para garantir que estes dados sejam exportados corretamente. A utilização de um Collector em ambientes de produção é a melhor prática. Para visualizar os dados de telemetria que foram gerados, exporte-os para um backend como Jaeger, Zipkin, Prometheus, ou um backend específico de um fornecedor.
Exportadores disponíveis
O registro oferece uma lista de exportadores para Go.
Entre os exportadores, os exportadores do OpenTelemetry Protocol (OTLP) são projetados tendo em mente o modelo de dados do OpenTelemetry, emitindo dados OTel sem qualquer perda de informação. Além disso, muitas ferramentas que operam com dados de telemetria suportam o formato OTLP (como Prometheus, Jaeger e a maioria dos fornecedores), proporcionando um alto grau de flexibilidade quando necessário. Para saber mais sobre o OTLP, consulte a Especificação do OTLP.
Esta página reúne informações sobre os principais exportadores do OpenTelemetry Go e como configurá-los.
Configuração automática de exporters com variáveis de ambiente
Você pode utilizar o pacote
go.opentelemetry.io/contrib/exporters/autoexport
para configurar exporters automaticamente utilizando as
variáveis de ambiente padrão do OpenTelemetry.
Este pacote fornece funções de fábrica que leem as variáveis de ambiente de seleção de exporter para selecionar e inicializar o exporter apropriado em tempo de execução:
| Função | Variável de ambiente | Descrição |
|---|---|---|
NewSpanExporter | OTEL_TRACES_EXPORTER | Cria um exporter de rastros |
NewMetricReader | OTEL_METRICS_EXPORTER | Cria um leitor de métricas |
NewLogExporter | OTEL_LOGS_EXPORTER | Cria um exporter de logs |
Os valores suportados para as variáveis de seleção são otlp (padrão) e none.
Para OTEL_METRICS_EXPORTER, prometheus também é suportado. Uma vez que um
exporter é selecionado, sua configuração (endpoint, cabeçalhos, tempo limite,
protocolo, etc.) é lida a partir das
variáveis de ambiente padrão do exporter OTLP
pelo pacote do exporter OTLP subjacente.
Exemplo de uso:
import (
"context"
"go.opentelemetry.io/contrib/exporters/autoexport"
sdkmetric "go.opentelemetry.io/otel/sdk/metric"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
)
func main() {
ctx := context.Background()
// Cria trace exporter usando variável de ambiente
spanExporter, err := autoexport.NewSpanExporter(ctx)
if err != nil {
// lida com o erro
}
// Cria trace provider com o exporter
tracerProvider := sdktrace.NewTracerProvider(
sdktrace.WithBatcher(spanExporter),
)
// Cria metric reader usando variável de ambiente
metricReader, err := autoexport.NewMetricReader(ctx)
if err != nil {
// lida com o erro
}
// Cria meter provider com o reader
meterProvider := sdkmetric.NewMeterProvider(
sdkmetric.WithReader(metricReader),
)
}
Os pacotes padrão de exporters OTLP (otlptracegrpc, otlptracehttp, etc.)
já leem a maioria das variáveis de ambiente OTLP, como
OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_HEADERS,
OTEL_EXPORTER_OTLP_TIMEOUT e OTEL_EXPORTER_OTLP_COMPRESSION.
O pacote autoexport adiciona suporte às variáveis de seleção de exporter
(OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER, OTEL_LOGS_EXPORTER), que
escolhem qual implementação de exporter utilizar. Essa separação mantém os
binários menores, pois não inclui dependências de exporters (como gRPC), a
menos que sejam importadas explicitamente.
Observe também que OTEL_SDK_DISABLED ainda não é suportada pelo SDK de Go.
Para uma visão geral completa de quais variáveis de ambiente são suportadas pelo SDK de Go e pelos pacotes contrib, consulte a matriz de conformidade da especificação do OpenTelemetry.
Console
O exportador do console é útil para tarefas de desenvolvimento e depuração, e é o mais simples de configurar.
Rastros no Console
O pacote
go.opentelemetry.io/otel/exporters/stdout/stdouttrace
possui uma implementação do Exporter de Rastros para o console.
Métricas no Console
O pacote
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric
possui uma implementação do Exporter de Métricas para o console.
Logs no Console (Experimental)
O pacote
go.opentelemetry.io/otel/exporters/stdout/stdoutlog
possui uma implementação do Exporter de Logs para o console.
OTLP
Para enviar dados de rastreamento para um endpoint OTLP (como o collector ou Jaeger >= v1.35.0), você precisará configurar um Exporter OTLP que envie os dados para o seu endpoint.
Rastros OTLP via HTTP
O pacote
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp
possui uma implementação do Exporter de Rastros OTLP utilizando o protocolo HTTP
com payloads binários protobuf.
Rastros OTLP via gRPC
O pacote
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc
possui uma implementação do Exporter de Rastros OTLP utilizando o protocolo
gRPC.
Jaeger
Para testar o exportador OTLP, a partir da versão v1.35.0 você pode executar o Jaeger como um endpoint OTLP e visualizar os rastros em um contêiner Docker:
docker run -d --name jaeger \
-p 16686:16686 \
-p 4317:4317 \
-p 4318:4318 \
jaegertracing/jaeger:latest
Métricas OTLP via HTTP
O pacote
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp
possui uma implementação do Exporter de Métricas OTLP utilizando o protocolo
HTTP com payloads binários protobuf.
Métricas OTLP via gRPC
O pacote
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc
possui uma implementação do Exporter de Métricas OTLP utilizando o protocolo
gRPC.
Logs OTLP via HTTP (Experimental)
O pacote
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp
possui uma implementação do Exporter de Logs OTLP utilizando o protocolo HTTP
com payloads binários protobuf.
Logs OTLP via gRPC (Experimental)
O pacote
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc
possui uma implementação do Exporter de Logs OTLP utilizando o protocolo gRPC.
Prometheus (Experimental)
O Exporter do Prometheus é utilizado para reportar métricas através do scraping realizado pelo Prometheus em um endpoint HTTP.
O pacote
go.opentelemetry.io/otel/exporters/prometheus
possui uma implementação do Exporter de Métricas do Prometheus.
Para saber mais sobre como usar o Exporter do Prometheus, veja o exemplo do prometheus
Feedback
Esta página foi útil?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!