feat: add tracing middleware #1
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request introduces a comprehensive example setup for OpenTelemetry instrumentation and logging, including new middleware for HTTP tracing, example configuration files, and improvements to logging utilities. The changes provide a ready-to-use demonstration environment and enhance observability features in the codebase.
New Example and Observability Infrastructure:
example/directory, including acompose.yamlfor running OpenTelemetry Collector, Prometheus, and Jaeger, configuration files for each service, and a sampleserver.godemonstrating HTTP tracing and logging integration. [1] [2] [3] [4] [5]Tracing and Metrics Middleware:
middleware.goimplementing HTTP middleware for OpenTelemetry tracing, metrics, and structured logging. This middleware supports options for controlling cardinality, debug paths, and allowed headers.Logging Utility Enhancements:
logger.goby refactoring context logger retrieval and adding support for extracting loggers directly from HTTP requests. Also renamedNewContextLoggertoNewContextWithLoggerfor clarity. [1] [2] [3]Dependency Updates:
go.modto newer versions for several packages, includingprometheus/common,prometheus/procfs, andgo.opentelemetry.io/proto/otlp. Addedgithub.com/google/uuidas a direct dependency. [1] [2]Linting Configuration:
varnamelenlinter in.golangci.ymlto enforce variable name length standards.