...
1# OpenTelemetry-Go
2
3[](https://github.com/open-telemetry/opentelemetry-go/actions?query=workflow%3Aci+branch%3Amain)
4[](https://app.codecov.io/gh/open-telemetry/opentelemetry-go?branch=main)
5[](https://pkg.go.dev/go.opentelemetry.io/otel)
6[](https://goreportcard.com/report/go.opentelemetry.io/otel)
7[](https://cloud-native.slack.com/archives/C01NPAXACKT)
8
9OpenTelemetry-Go is the [Go](https://golang.org/) implementation of [OpenTelemetry](https://opentelemetry.io/).
10It provides a set of APIs to directly measure performance and behavior of your software and send this data to observability platforms.
11
12## Project Status
13
14| Signal | Status |
15|---------|------------|
16| Traces | Stable |
17| Metrics | Stable |
18| Logs | Design [1] |
19
20- [1]: Currently the logs signal development is in a design phase ([#4696](https://github.com/open-telemetry/opentelemetry-go/issues/4696)).
21 No Logs Pull Requests are currently being accepted.
22
23Progress and status specific to this repository is tracked in our
24[project boards](https://github.com/open-telemetry/opentelemetry-go/projects)
25and
26[milestones](https://github.com/open-telemetry/opentelemetry-go/milestones).
27
28Project versioning information and stability guarantees can be found in the
29[versioning documentation](VERSIONING.md).
30
31### Compatibility
32
33OpenTelemetry-Go ensures compatibility with the current supported versions of
34the [Go language](https://golang.org/doc/devel/release#policy):
35
36> Each major Go release is supported until there are two newer major releases.
37> 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.
38
39For versions of Go that are no longer supported upstream, opentelemetry-go will
40stop ensuring compatibility with these versions in the following manner:
41
42- A minor release of opentelemetry-go will be made to add support for the new
43 supported release of Go.
44- The following minor release of opentelemetry-go will remove compatibility
45 testing for the oldest (now archived upstream) version of Go. This, and
46 future, releases of opentelemetry-go may include features only supported by
47 the currently supported versions of Go.
48
49Currently, this project supports the following environments.
50
51| OS | Go Version | Architecture |
52|---------|------------|--------------|
53| Ubuntu | 1.21 | amd64 |
54| Ubuntu | 1.20 | amd64 |
55| Ubuntu | 1.21 | 386 |
56| Ubuntu | 1.20 | 386 |
57| MacOS | 1.21 | amd64 |
58| MacOS | 1.20 | amd64 |
59| Windows | 1.21 | amd64 |
60| Windows | 1.20 | amd64 |
61| Windows | 1.21 | 386 |
62| Windows | 1.20 | 386 |
63
64While this project should work for other systems, no compatibility guarantees
65are made for those systems currently.
66
67## Getting Started
68
69You can find a getting started guide on [opentelemetry.io](https://opentelemetry.io/docs/go/getting-started/).
70
71OpenTelemetry's goal is to provide a single set of APIs to capture distributed
72traces and metrics from your application and send them to an observability
73platform. This project allows you to do just that for applications written in
74Go. There are two steps to this process: instrument your application, and
75configure an exporter.
76
77### Instrumentation
78
79To start capturing distributed traces and metric events from your application
80it first needs to be instrumented. The easiest way to do this is by using an
81instrumentation library for your code. Be sure to check out [the officially
82supported instrumentation
83libraries](https://github.com/open-telemetry/opentelemetry-go-contrib/tree/main/instrumentation).
84
85If you need to extend the telemetry an instrumentation library provides or want
86to build your own instrumentation for your application directly you will need
87to use the
88[Go otel](https://pkg.go.dev/go.opentelemetry.io/otel)
89package. The included [examples](./example/) are a good way to see some
90practical uses of this process.
91
92### Export
93
94Now that your application is instrumented to collect telemetry, it needs an
95export pipeline to send that telemetry to an observability platform.
96
97All officially supported exporters for the OpenTelemetry project are contained in the [exporters directory](./exporters).
98
99| Exporter | Metrics | Traces |
100|---------------------------------------|:-------:|:------:|
101| [OTLP](./exporters/otlp/) | ✓ | ✓ |
102| [Prometheus](./exporters/prometheus/) | ✓ | |
103| [stdout](./exporters/stdout/) | ✓ | ✓ |
104| [Zipkin](./exporters/zipkin/) | | ✓ |
105
106## Contributing
107
108See the [contributing documentation](CONTRIBUTING.md).
View as plain text