Exporters
Estás viendo la versión en inglés de está página porque aún no ha sido traducida. ¿Te interesa ayudar? Mira en Contribuir.
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.
Automatic Exporter Configuration with Environment Variables
You can use the
go.opentelemetry.io/contrib/exporters/autoexport
package to automatically configure exporters using
standard OpenTelemetry environment variables.
This package provides factory functions that read the exporter selector environment variables to select and initialize the appropriate exporter at runtime:
| Function | Environment variable | Description |
|---|---|---|
NewSpanExporter | OTEL_TRACES_EXPORTER | Creates a trace exporter |
NewMetricReader | OTEL_METRICS_EXPORTER | Creates a metric reader |
NewLogExporter | OTEL_LOGS_EXPORTER | Creates a log exporter |
Supported values for the selector variables are otlp (default) and none. For
OTEL_METRICS_EXPORTER, prometheus is also supported. Once an exporter is
selected, its configuration (endpoint, headers, timeout, protocol, etc.) is read
from the standard
OTLP exporter environment variables
by the underlying OTLP exporter package.
Example usage:
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()
// Create trace exporter using environment variables
spanExporter, err := autoexport.NewSpanExporter(ctx)
if err != nil {
// handle error
}
// Create trace provider with the exporter
tracerProvider := sdktrace.NewTracerProvider(
sdktrace.WithBatcher(spanExporter),
)
// Create metric reader using environment variables
metricReader, err := autoexport.NewMetricReader(ctx)
if err != nil {
// handle error
}
// Create meter provider with the reader
meterProvider := sdkmetric.NewMeterProvider(
sdkmetric.WithReader(metricReader),
)
}
The standard OTLP exporter packages (otlptracegrpc, otlptracehttp, etc.)
already read most OTLP environment variables such as
OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_HEADERS,
OTEL_EXPORTER_OTLP_TIMEOUT, and OTEL_EXPORTER_OTLP_COMPRESSION.
The autoexport package adds support for the exporter selector variables
(OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER, OTEL_LOGS_EXPORTER) that
choose which exporter implementation to use. This separation keeps binary
sizes smaller by not bundling exporter dependencies (like gRPC) unless
explicitly imported.
Also note that OTEL_SDK_DISABLED is not currently supported by the Go SDK.
For a complete overview of which environment variables are supported by the Go SDK and contrib packages, see the OpenTelemetry spec compliance matrix.
Console
The console exporter is useful for development and debugging tasks, and is the simplest to set up.
Console traces
The
go.opentelemetry.io/otel/exporters/stdout/stdouttrace
package contains an implementation of the console trace exporter.
Console metrics
The
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric
package contains an implementation of the console metrics exporter.
Console logs (Experimental)
The
go.opentelemetry.io/otel/exporters/stdout/stdoutlog
package contains an implementation of the console log exporter.
OTLP
To send trace data to an OTLP endpoint (like the collector or Jaeger >= v1.35.0) you’ll want to configure an OTLP exporter that sends to your endpoint.
OTLP traces over HTTP
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp
contains an implementation of the OTLP trace exporter using HTTP with binary
protobuf payloads.
OTLP traces over gRPC
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc
contains an implementation of OTLP trace exporter using gRPC.
Jaeger
To try out the OTLP exporter, since v1.35.0 you can run Jaeger as an OTLP endpoint and for trace visualization in a Docker container:
docker run -d --name jaeger \
-e COLLECTOR_OTLP_ENABLED=true \
-p 16686:16686 \
-p 4317:4317 \
-p 4318:4318 \
jaegertracing/all-in-one:latest
OTLP metrics over HTTP
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp
contains an implementation of OTLP metrics exporter using HTTP with binary
protobuf payloads.
OTLP metrics over gRPC
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc
contains an implementation of OTLP metrics exporter using gRPC.
OTLP logs over HTTP (Experimental)
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp
contains an implementation of OTLP logs exporter using HTTP with binary protobuf
payloads.
OTLP logs over gRPC (Experimental)
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc
contains an implementation of OTLP logs exporter using gRPC.
Prometheus (Experimental)
A Prometheus exporter is used to report metrics via Prometheus scrape HTTP endpoint.
go.opentelemetry.io/otel/exporters/prometheus
contains an implementation of Prometheus metrics exporter.
To learn more on how to use the Prometheus exporter, try the prometheus example
Comentarios
¿Fue útil esta página?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!