All checks were successful
Run linters on applied template / Python 3.13 lint and build (push) Successful in 1m40s
Changes: - put ObservabilityMiddleware before ExceptionHandlerMiddleware to avoid repetative code - add application startup and last metrics update metrics along with CPU usage metric and threads count - move host and port to new uvicorn section at config along with new reload and forwarded_allow_ips - add request_id and remove trace_id/span_id generation if tracing is disabled - move logging logic from utils to observability - pass trace_id/span_id in HEX form
deploy example
This is a complete deployment example with following services:
postgresdatabase (with initialization and rootless user):- 5432 port exposure commented
api(with data migrations) with 8080 port exposure:- configured by configs/api.yaml
- exposes 8080 port
- 9090 metrics port not exposed
prometheusto collect metrics- configured by configs/prometheus.yaml
- exposes 9090 port with prometheus UI (optional)
grafanaas a powerful UI for metrics visualization- exposes 3000 port, default user:password is
admin:admin - prometheus metrics are available at
http://prometheus:9090
- exposes 3000 port, default user:password is
jaegerto collect and show traces- exposes UI at port 16686
otel(OpenTELemetry) agent working as proxy for jaeger- configured by configs/otel.yaml
- does not expose 4317/4318 ports as containers use it inside the internal network