Exporters
Send telemetry to the OpenTelemetry Collector to make sure it’s exported correctly. Using the Collector in production environments is a best practice. To visualize your telemetry, export it to a backend such as Jaeger, Zipkin, Prometheus, or a vendor-specific backend.
Available exporters
The registry contains a list of exporters for Go.
Among exporters, OpenTelemetry Protocol (OTLP) exporters are designed with the OpenTelemetry data model in mind, emitting OTel data without any loss of information. Furthermore, many tools that operate on telemetry data support OTLP (such as Prometheus, Jaeger, and most vendors), providing you with a high degree of flexibility when you need it. To learn more about OTLP, see OTLP Specification.
This page covers the main OpenTelemetry Go exporters and how to set them up.
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.
Por exemplo, aqui está como é possível criar um Exporter com as configurações padrão:
import (
"go.opentelemetry.io/otel/exporters/stdout/stdouttrace"
"go.opentelemetry.io/otel/sdk/trace"
)
func newExporter() (trace.SpanExporter, error) {
return stdouttrace.New()
}
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.
Por exemplo, aqui está como é possível criar um Exporter com as configurações padrão:
import (
"go.opentelemetry.io/otel/exporters/stdout/stdoutmetric"
"go.opentelemetry.io/otel/sdk/metric"
)
func newExporter() (metric.Exporter, error) {
return stdoutmetric.New()
}
Logs no Console (Experimental)
O pacote
go.opentelemetry.io/otel/exporters/stdout/stdoutlog
possui uma implementação do Exporter de Logs para o console.
Por exemplo, aqui está como é possível criar um Exporter com as configurações padrão:
import (
"go.opentelemetry.io/otel/exporters/stdout/stdoutlog"
"go.opentelemetry.io/otel/sdk/log"
)
func newExporter() (log.Exporter, error) {
return stdoutlog.New()
}
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.
Por exemplo, aqui está como é possível criar um Exporter com as configurações padrão:
import (
"context"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
"go.opentelemetry.io/otel/sdk/trace"
)
func newExporter(ctx context.Context) (trace.SpanExporter, error) {
return otlptracehttp.New(ctx)
}
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.
Por exemplo, aqui está como é possível criar um Exporter com as configurações padrão:
import (
"context"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
"go.opentelemetry.io/otel/sdk/trace"
)
func newExporter(ctx context.Context) (trace.SpanExporter, error) {
return otlptracegrpc.New(ctx)
}
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 \
-e COLLECTOR_OTLP_ENABLED=true \
-p 16686:16686 \
-p 4317:4317 \
-p 4318:4318 \
jaegertracing/all-in-one: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.
Por exemplo, aqui está como é possível criar um Exporter com as configurações padrão:
import (
"context"
"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp"
"go.opentelemetry.io/otel/sdk/metric"
)
func newExporter(ctx context.Context) (metric.Exporter, error) {
return otlpmetrichttp.New(ctx)
}
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.
Por exemplo, aqui está como é possível criar um Exporter com as configurações padrão:
import (
"context"
"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc"
"go.opentelemetry.io/otel/sdk/metric"
)
func newExporter(ctx context.Context) (metric.Exporter, error) {
return otlpmetricgrpc.New(ctx)
}
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.
Por exemplo, aqui está como é possível criar um Exporter (que também é um leitor de métricas) com as configurações padrão:
import (
"context"
"go.opentelemetry.io/otel/exporters/prometheus"
"go.opentelemetry.io/otel/sdk/metric"
)
func newExporter(ctx context.Context) (metric.Reader, error) {
// prometheus.DefaultRegisterer é utilizado por padrão, de modo que
// as métricas fiquem disponíveis via promhttp.Handler.
return prometheus.New()
}
Para saber mais sobre como usar o Exporter do Prometheus, veja o exemplo do prometheus
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.
Por exemplo, aqui está como é possível criar um Exporter com as configurações padrão:
import (
"context"
"go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp"
"go.opentelemetry.io/otel/sdk/log"
)
func newExporter(ctx context.Context) (log.Exporter, error) {
return otlploghttp.New(ctx)
}
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.
Por exemplo, aqui está como é possível criar um Exporter com as configurações padrão:
import (
"context"
"go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc"
"go.opentelemetry.io/otel/sdk/log"
)
func newExporter(ctx context.Context) (log.Exporter, error) {
return otlploggrpc.New(ctx)
}
Feedback
Was this page helpful?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!