Generated Go code for the OpenTelemetry protobuf data model.
The auto-generated Go code follows the stability guarantees as defined in maturity level.
Versioning of modules in this project will be idiomatic of a Go project using Go modules. They will use semantic import versioning. Meaning modules will comply with semver 2.0 with the following exception:
- Packages with a
developmentsuffix do not comply with semver 2.0.- Backwards incompatible changes may be introduced to these packages between minor versions.
- These packages are intended to be temporary. They will be deprecated and removed when the protobuf definition stabilizes or is removed. If the protobuf definition stabilizes, the package will be replaced with a stable "non-development" package. If the protobuf definition is removed, the package will be removed without a replacement.
Install the latest version in your project.
go get go.opentelemetry.io/proto/otlp@latestImport the generated code directly in your project.
import (
collogspb "go.opentelemetry.io/proto/otlp/collector/logs/v1"
colmetricspb "go.opentelemetry.io/proto/otlp/collector/metrics/v1"
coltracepb "go.opentelemetry.io/proto/otlp/collector/trace/v1"
commonpb "go.opentelemetry.io/proto/otlp/common/v1"
logspb "go.opentelemetry.io/proto/otlp/logs/v1"
metricspb "go.opentelemetry.io/proto/otlp/metrics/v1"
resourcepb "go.opentelemetry.io/proto/otlp/resource/v1"
tracepb "go.opentelemetry.io/proto/otlp/trace/v1"
)The go.opentelemetry.io/proto/slim/otlp module provides corresponding OTLP Go
message structs and fields without generated gRPC or gRPC-Gateway code. It is
intended for clients that send OTLP protobuf messages over HTTP or otherwise do
not need the generated gRPC services:
go get go.opentelemetry.io/proto/slim/otlp@latestimport (
coltracepb "go.opentelemetry.io/proto/slim/otlp/collector/trace/v1"
tracepb "go.opentelemetry.io/proto/slim/otlp/trace/v1"
)The module is generated from the same OTLP schemas and preserves their field
numbers and wire types. Its protobuf full names and source descriptor paths
use a distinct opentelemetry.proto.slim namespace, allowing these
packages to coexist in one process with the canonical otlp packages without
conflicting in the global protobuf registry. The resulting Go message types
are distinct from the canonical module's types even though their serialized
core OTLP protobuf and JSON payloads are compatible.
The descriptor identity differs from both the canonical module and earlier
slim/otlp releases. Code that depends on protobuf reflection names, service
full names, registry lookups, or google.protobuf.Any type URLs needs to
account for the opentelemetry.proto.slim namespace.
Applications using the separate slim profiles or process-context development modules must upgrade them to descriptor-distinct releases at the same time. Older versions of those modules still register the canonical descriptor identities.
OpenTelemetry Proto Go ensures compatibility with the current supported versions of the Go language:
Each major Go release is supported until there are two newer major releases. For example, Go 1.5 was supported until the Go 1.7 release, and Go 1.6 was supported until the Go 1.8 release.
For versions of Go that are no longer supported upstream, opentelemetry-proto-go will stop ensuring compatibility with these versions in the following manner:
- A minor release of opentelemetry-proto-go will be made to add support for the new supported release of Go.
- The following minor release of opentelemetry-proto-go will remove compatibility testing for the oldest (now archived upstream) version of Go. This, and future, releases of opentelemetry-proto-=go may include features only supported by the currently supported versions of Go.
This project is tested on the following systems.
| OS | Go Version |
|---|---|
| Ubuntu | 1.27 |
| Ubuntu | 1.26 |
While this project should work for other systems, no compatibility guarantees are made for those systems currently.
- OpenTelemetry Go Maintainers
- Mike Goldsmith, Honeycomb
For more information about the maintainer role, see the community repository.
For more information about the approver role, see the community repository.