go-otelroundtripper alternatives and similar packages
Based on the "HTTP Clients" category.
Alternatively, view go-otelroundtripper alternatives based on common mentions on social networks and blogs.
-
go-cleanhttp
Get easily stdlib HTTP client, which does not share any state with other clients. -
go-zoox/fetch
Go Fetch - A Powerful, Lightweight, Easy Http Client, inspired by Web Fetch API -
sreq
A simple, user-friendly and concurrent safe HTTP request library for Go. -
httpretry
Enriches the standard go http client with retry functionality. -
httpc
A customizable and simple HTTP client library. Only depend on the stdlib HTTP client.
Clean code begins in your IDE with SonarLint
Do you think we are missing an alternative of go-otelroundtripper or a related project?
README
go-otelroundtripper
This package provides an easy way to collect http related metrics
(e.g Response times, Status Codes, number of in flight requests etc) for your HTTP API Clients.
You can do this by using this round tripper when instantiating the http.Client{}
.
Why this package exists
I currently have to integrate with multiple APIs and I needed a simple way to export metrics for those external
API's. Sometimes external API's have their own SDK and the only input is http.Client
. In this scenario, I can create
an HTTP client with a round tripper automatically exports metrics according to the open telemetry specification.
Installation
go-otelroundtripper
is compatible with modern Go releases in module mode, with Go installed:
go get github.com/NdoleStudio/go-otelroundtripper
Alternatively the same can be achieved if you use import
in a package:
import "github.com/NdoleStudio/go-otelroundtripper"
Usage
This is a sample code that instantiates an HTTP client which sends requests to https://example.com
.
You can see a runnable [example here](./example_test.go)
client := http.Client{
Transport: New(
WithName("example.com")
WithMeter(global.MeterProvider()Meter("otel-round-tripper")),
WithAttributes(
semconv.ServiceNameKey.String("otel-round-tripper"),
),
),
}
response, err := client.Get("https://example.com")
Metrics Emitted
The following metrics will be emitted by this package. Note that *
will be replaced by the prefix passed in WithName()
.
*.no_request
http calls with nilhttp.Request
*.errors
http requests which had an error response i.eerr != nil
*.success
http requests which were successfull. Meaning there were no transport errors*.timeouts
http requests which timed out*.cancelled
http requests with cancelled context*.deadline_exceeded
http requests with context dateline exceeded*.total_duration
total time it takes to execute the http request in milliseconds*.in_flight
concurrent http requests*.attempts
http requests attempted*.failures
http requests with http status code >= 400*.redirects
http requests with 300 <= http status code < 400
Testing
You can run the unit tests for this client from the root directory using the command below:
go test -v
License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details
*Note that all licence references and agreements mentioned in the go-otelroundtripper README section above
are relevant to that project's source code only.