...

Text file src/go.opentelemetry.io/otel/README.md

Documentation: go.opentelemetry.io/otel

     1# OpenTelemetry-Go
     2
     3[![CI](https://github.com/open-telemetry/opentelemetry-go/workflows/ci/badge.svg)](https://github.com/open-telemetry/opentelemetry-go/actions?query=workflow%3Aci+branch%3Amain)
     4[![codecov.io](https://codecov.io/gh/open-telemetry/opentelemetry-go/coverage.svg?branch=main)](https://app.codecov.io/gh/open-telemetry/opentelemetry-go?branch=main)
     5[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel)](https://pkg.go.dev/go.opentelemetry.io/otel)
     6[![Go Report Card](https://goreportcard.com/badge/go.opentelemetry.io/otel)](https://goreportcard.com/report/go.opentelemetry.io/otel)
     7[![Slack](https://img.shields.io/badge/slack-@cncf/otel--go-brightgreen.svg?logo=slack)](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