Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ravilushqa/otelgqlgen
OpenTelemetry instrumentation for 99designs/gqlgen
https://github.com/ravilushqa/otelgqlgen
golang gqlgen graphql hacktoberfest instrumentation opentelemetry
Last synced: 8 days ago
JSON representation
OpenTelemetry instrumentation for 99designs/gqlgen
- Host: GitHub
- URL: https://github.com/ravilushqa/otelgqlgen
- Owner: ravilushqa
- License: apache-2.0
- Created: 2021-09-15T13:26:21.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-10-16T21:21:17.000Z (27 days ago)
- Last Synced: 2024-10-18T21:11:13.595Z (25 days ago)
- Topics: golang, gqlgen, graphql, hacktoberfest, instrumentation, opentelemetry
- Language: Go
- Homepage:
- Size: 320 KB
- Stars: 66
- Watchers: 2
- Forks: 14
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# OpenTelemetry-Go gqlgen Instrumentation
[![ci](https://github.com/ravilushqa/otelgqlgen/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/ravilushqa/otelgqlgen/actions/workflows/ci.yaml)
[![Go Report Card](https://goreportcard.com/badge/github.com/ravilushqa/otelgqlgen)](https://goreportcard.com/report/github.com/ravilushqa/otelgqlgen)
[![codecov](https://codecov.io/gh/ravilushqa/otelgqlgen/branch/main/graph/badge.svg?token=4LXALH3K72)](https://codecov.io/gh/ravilushqa/otelgqlgen)
[![Go Reference](https://pkg.go.dev/badge/github.com/ravilushqa/otelgqlgen.svg)](https://pkg.go.dev/github.com/ravilushqa/otelgqlgen)It is an OpenTelemetry instrumentation for Golang 99designs/gqlgen, a port from https://github.com/open-telemetry/opentelemetry-go-contrib/pull/761.
It can only instrument traces for the present.
## Installation
To install the otelgqlgen package, use the following command:
```bash
go get github.com/ravilushqa/otelgqlgen
```## Usage
Below is a basic example of how to use otelgqlgen:
```go
package mainimport (
"github.com/99designs/gqlgen/graphql/handler"
"github.com/ravilushqa/otelgqlgen"
"github.com/myorg/mygqlgenapi/graph"
)func main() {
srv := handler.NewDefaultServer(graph.NewExecutableSchema(graph.Config{Resolvers: &graph.Resolver{}}))// Add the otelgqlgen middleware to add OpenTelemetry tracing
srv.Use(otelgqlgen.Middleware())// Your usual server setup code...
}
```### Configuration Options
otelgqlgen provides several options to customize the tracing behavior:
- `WithTracerProvider(provider)`: Specifies a custom tracer provider. By default, the global OpenTelemetry tracer provider is used.
- `WithComplexityExtensionName(name)`: Specifies a name for the complexity extension. By default, a name is automatically generated.
- `WithRequestVariablesAttributesBuilder(builder)`: Specifies a custom function to build the attributes for the request variables.
- `WithoutVariables()`: Disables the variables attributes.
- `WithCreateSpanFromFields(predicate)`: Specifies a custom function to control whether a span should be created based on the GraphQL context fields.## Example
See [./example](./example).
## Compatibility
This project is tested on the following systems.
| OS | Go Version | Architecture |
| ------- |------------| ------------ |
| Ubuntu | 1.21 | amd64 |
| Ubuntu | 1.22 | amd64 |
| Ubuntu | 1.21 | 386 |
| Ubuntu | 1.22 | 386 |
| MacOS | 1.21 | amd64 |
| MacOS | 1.22 | amd64 |
| Windows | 1.21 | amd64 |
| Windows | 1.22 | amd64 |
| Windows | 1.21 | 386 |
| Windows | 1.22 | 386 |While this project should work for other systems, no compatibility guarantees
are made for those systems currently.The project follows the [Release Policy](https://golang.org/doc/devel/release#policy) to support major Go releases.
## References
- [GraphQL](https://graphql.org/)
- [gqlgen](https://gqlgen.com)## License
This project is licensed under the Apache License, Version 2.0. See the LICENSE file for details.