mirror of
https://github.com/SamyRai/tercul-backend.git
synced 2025-12-27 04:01:34 +00:00
This commit introduces a comprehensive observability stack to the application, addressing a key objective from the TODO list. The following features have been implemented: - **Centralized Logging:** Replaced the existing custom logger with `zerolog` for structured, leveled, and performant logging. The logger is configured to output human-friendly console logs in development and JSON logs in production. - **Distributed Tracing:** Integrated OpenTelemetry to provide distributed tracing capabilities. A new middleware has been added to create spans for all incoming HTTP requests, and the trace context is propagated. - **Prometheus Metrics:** Added Prometheus metrics to monitor HTTP request latency and total request counts. A new `/metrics` endpoint is exposed on port 9090 to serve these metrics. - **Request ID:** Implemented a middleware to add a unique request ID to every incoming request and response, improving traceability. The new observability components are encapsulated in the `internal/observability` package, and the existing `internal/platform/log` package has been refactored to be a backward-compatible wrapper around the new logger. The main application entry point (`cmd/api/main.go`) has been updated to initialize and gracefully shut down the new observability components. |
||
|---|---|---|
| .. | ||
| .keep | ||
| logger.go | ||
| metrics.go | ||
| middleware.go | ||
| tracing.go | ||