Exporters

The content of this page may be outdated and some links may be invalid. A newer version of this page exists in English.

More information ...

To see the changes to the English page since this page was last updated: visit GitHub compare 07431d6e..81470902 and search for content/en/docs/languages/go/exporters.md.

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.

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) }