sdk
SDK for go-faster applications.
Implements automatic setup of observability and daemonization based on environment variables.
Packages
Package |
Description |
autometer |
Automatic OpenTelemetry MeterProvider from environment |
autotracer |
Automatic OpenTelemetry TracerProvider from environment |
profiler |
Explicit pprof routes |
zctx |
context.Context and tracing support for zap |
gold |
Golden files in tests |
app |
Automatic setup observability and run daemon |
Environment variables
[!WARNING]
The pprof listener is disabled by default and should be explicitly enabled by PPROF_ADDR
.
[!IMPORTANT]
For configuring OpenTelemetry exporters, see OpenTelemetry exporters documentation.
Metrics and pprof can be served from same address if needed, set both addresses to the same value.
Name |
Description |
Example |
Default |
AUTOMAXPROCS |
Use automaxprocs |
0 |
1 |
AUTOMAXPROCS_MIN |
Minimum GOMAXPROCS to use |
2 |
1 |
OTEL_RESOURCE_ATTRIBUTES |
OTEL Resource attributes |
service.name=app |
|
OTEL_SERVICE_NAME |
OTEL Service name |
app |
unknown_service |
OTEL_EXPORTER_OTLP_PROTOCOL |
OTLP protocol to use |
http |
grpc |
OTEL_PROPAGATORS |
OTEL Propagators |
none |
tracecontext,baggage |
PPROF_ROUTES |
List of enabled pprof routes |
cmdline,profile |
See below |
PPROF_ADDR |
Enable pprof and listen on addr |
0.0.0.0:9010 |
N/A |
OTEL_LOG_LEVEL |
Log level |
debug |
info |
METRICS_ADDR |
Prometheus addr (fallback) |
localhost:9464 |
Prometheus addr |
OTEL_METRICS_EXPORTER |
Metrics exporter to use |
prometheus |
otlp |
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL |
Metrics OTLP protocol to use |
http |
grpc |
OTEL_EXPORTER_PROMETHEUS_HOST |
Host of prometheus addr |
0.0.0.0 |
localhost |
OTEL_EXPORTER_PROMETHEUS_PORT |
Port of prometheus addr |
9090 |
9464 |
OTEL_TRACES_EXPORTER |
Traces exporter to use |
otlp |
otlp |
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL |
Traces OTLP protocol to use |
http |
grpc |
Metrics exporters
Value |
Description |
otlp |
OTLP exporter (default) |
prometheus |
Prometheus exporter |
none |
No exporter |
Trace exporters
Value |
Description |
otlp |
OTLP exporter (default) |
none |
No exporter |
Defaults
By default, OpenTelemetry SDK tries localhost:4318
OTLP endpoint, assuming collector is running on the localhost.
If that is not true, following errors can be seen in the logs:
{"error": "failed to upload metrics: Post \"https://localhost:4318/v1/metrics\": dial tcp 127.0.0.1:4318: connect: connection refused"}
{"error": "failed to upload traces: Post \"https://localhost:4318/v1/traces\": dial tcp 127.0.0.1:4318: connect: connection refused"}
To fix that, configure exporters accordingly. For example, this will disable both metrics and traces exporters:
export OTEL_TRACES_EXPORTER="none"
export OTEL_METRICS_EXPORTER="none"
To enable Prometheus exporter, set OTEL_METRICS_EXPORTER=prometheus
and OTEL_EXPORTER_PROMETHEUS_HOST
and OTEL_EXPORTER_PROMETHEUS_PORT
accordingly.
export OTEL_METRICS_EXPORTER="prometheus"
export OTEL_EXPORTER_PROMETHEUS_HOST="0.0.0.0"
export OTEL_EXPORTER_PROMETHEUS_PORT="9090"
Routes for pprof
List of enabled pprof routes
Name: PPROF_ROUTES
Default: profile,symbol,trace,goroutine,heap,threadcreate,block
TODO
- Use slog
- Pyroscope compat
Code coverage