f1971b3f81
* POC using the grpc.ClientConn to handle connections * Update invalid client security test * Update client start test for a bad endpoint * Use any ClientConn a user provides * Connect ReconnectionPeriod to gRPC conn retries * Replace connection retry handling direct in otlptracegrpc * Fix client comments * Fix comment for NewGRPCConfig * Replace reconnection test * Fix grammar * Remove unrelated changes * Remove connection pkg * Rename evaluate to retryable * POC using the grpc.ClientConn to handle connections * Replace connection retry handling direct in otlptracegrpc * Add ClientConn use changes to changelog * Update otlptracegrpc options * Only close ClientConn that the Client create * Remove listener wrapper from mock_collector_test This is not needed now that no tests relies on the listener to wait for a connection to be established before continuing. * Fix spelling error * Do not use deprecated options in the otel-collector example * Add unit tests for retryable and throttleDelay funcs * Add unit tests for context heredity * Add test that exporter stop is linked to context cancel * go mod tidy * Update exporters/otlp/otlptrace/otlptracegrpc/client.go Co-authored-by: Anthony Mirabella <a9@aneurysm9.com> * Fix go.mod from rebase * Remove wrong comment about client stop closing gRPC conn * Fix shutdown test cleanup Do not check the second call to the client Stop. There is no guarantee it will not error in normal operation. * Make lint fixes * Fix flaky unit test Use the internals of the client to explicit cancel the context returned from exportContext. This gets around the bug where the select in Stop may randomly choose the non-context Done case and avoid returning an error (also failing to cancel the context). * Remove deprecation To configure the client/exporter with environment variables these options are used. There is no way to fully remove these options without removing support for configuration with environment variables. Leave that decision and strategy determination to a separate PR. * Fix grammatical error in comment Co-authored-by: Anthony Mirabella <a9@aneurysm9.com> |
||
---|---|---|
.github | ||
attribute | ||
baggage | ||
bridge | ||
codes | ||
example | ||
exporters | ||
internal | ||
metric | ||
propagation | ||
schema | ||
sdk | ||
semconv | ||
trace | ||
website_docs | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.golangci.yml | ||
.markdown-link.json | ||
.markdownlint.yaml | ||
CHANGELOG.md | ||
CODEOWNERS | ||
CONTRIBUTING.md | ||
doc.go | ||
error_handler.go | ||
get_main_pkgs.sh | ||
go.mod | ||
go.sum | ||
handler_test.go | ||
handler.go | ||
LICENSE | ||
Makefile | ||
pre_release.sh | ||
propagation.go | ||
README.md | ||
RELEASING.md | ||
tag.sh | ||
trace_test.go | ||
trace.go | ||
verify_examples.sh | ||
version_test.go | ||
version.go | ||
VERSIONING.md | ||
versions.yaml |
OpenTelemetry-Go
OpenTelemetry-Go is the Go implementation of OpenTelemetry. It provides a set of APIs to directly measure performance and behavior of your software and send this data to observability platforms.
Project Status
Signal | Status | Project |
---|---|---|
Traces | Stable | N/A |
Metrics | Alpha | N/A |
Logs | Frozen [1] | N/A |
- [1]: The Logs signal development is halted for this project while we develop both Traces and Metrics. No Logs Pull Requests are currently being accepted.
Progress and status specific to this repository is tracked in our local project boards and milestones.
Project versioning information and stability guarantees can be found in the versioning documentation.
Compatibility
OpenTelemetry-Go attempts to track the current supported versions of the Go language. The release schedule after a new minor version of go is as follows:
- The first release or one month, which ever is sooner, will add build steps for the new go version.
- The first release after three months will remove support for the oldest go version.
This project is tested on the following systems.
OS | Go Version | Architecture |
---|---|---|
Ubuntu | 1.17 | amd64 |
Ubuntu | 1.16 | amd64 |
Ubuntu | 1.17 | 386 |
Ubuntu | 1.16 | 386 |
MacOS | 1.17 | amd64 |
MacOS | 1.16 | amd64 |
Windows | 1.17 | amd64 |
Windows | 1.16 | amd64 |
Windows | 1.17 | 386 |
Windows | 1.16 | 386 |
While this project should work for other systems, no compatibility guarantees are made for those systems currently.
Getting Started
You can find a getting started guide on opentelemetry.io.
OpenTelemetry's goal is to provide a single set of APIs to capture distributed traces and metrics from your application and send them to an observability platform. This project allows you to do just that for applications written in Go. There are two steps to this process: instrument your application, and configure an exporter.
Instrumentation
To start capturing distributed traces and metric events from your application it first needs to be instrumented. The easiest way to do this is by using an instrumentation library for your code. Be sure to check out the officially supported instrumentation libraries.
If you need to extend the telemetry an instrumentation library provides or want to build your own instrumentation for your application directly you will need to use the go.opentelemetry.io/otel/api package. The included examples are a good way to see some practical uses of this process.
Export
Now that your application is instrumented to collect telemetry, it needs an export pipeline to send that telemetry to an observability platform.
All officially supported exporters for the OpenTelemetry project are contained in the exporters directory.
Exporter | Metrics | Traces |
---|---|---|
Jaeger | ✓ | |
OTLP | ✓ | ✓ |
Prometheus | ✓ | |
stdout | ✓ | ✓ |
Zipkin | ✓ |
Additionally, OpenTelemetry community supported exporters can be found in the contrib repository.
Contributing
See the contributing documentation.