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.
-
httpc
DISCONTINUED. A customizable and simple HTTP client library. Only depend on the stdlib HTTP client.
SaaSHub - Software Alternatives and Reviews
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_requesthttp calls with nilhttp.Request*.errorshttp requests which had an error response i.eerr != nil*.successhttp requests which were successfull. Meaning there were no transport errors*.timeoutshttp requests which timed out*.cancelledhttp requests with cancelled context*.deadline_exceededhttp requests with context dateline exceeded*.total_durationtotal time it takes to execute the http request in milliseconds*.in_flightconcurrent http requests*.attemptshttp requests attempted*.failureshttp requests with http status code >= 400*.redirectshttp 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.
