Jordan Schilling | Technologist, Software Builder, and Engineer
Software engineer focused on automation systems, experimental tools, and developer productivity. Projects, dev logs, and technical writing.
by Jordan Schilling
Implemented the foundation for Prometheus health checks, Grafana dashboard visibility, and telemetry through the Jaeger UI.
The first step was adding the Python observability dependencies inside requirements.txt. From there, metrics were added for the exposed API on :8000 and the worker metrics endpoint on :9091.
The current metrics include:
The gateway now includes an NGINX stub_status endpoint plus nginx/nginx-prometheus-exporter:1.5.1 running on :9113.
Added structured JSON logs so the API creates a match_request_id for each join request.
API and worker logs now include these fields when available:
request_idmatch_request_idplayer_idmatch_idThe Redis payload changed from a raw match ID string to JSON containing the same correlation fields. OpenTelemetry context is injected into the Redis JSON payload by the API and extracted by the worker.
Created manual spans for the core request lifecycle:
join_queuedb.queue_insertdb.match_createredis.queue_pushworker.consume_matchdb.match_readyThis gives the project a traceable path across the API, database work, Redis queueing, worker processing, and the final database update.
Created the week2-observability.json dashboard structure with these panels:
sum(rate(matchmaking_http_requests_total[5m]))sum(rate(matchmaking_http_requests_total{status=~"5.."}[5m])) / sum(rate(matchmaking_http_requests_total[5m]))histogram_quantile(0.50, sum(rate(matchmaking_http_request_duration_seconds_bucket[5m])) by (le))histogram_quantile(0.95, sum(rate(matchmaking_http_request_duration_seconds_bucket[5m])) by (le))max(matchmaking_queue_depth)sum(rate(worker_matches_consumed_total[5m]))Added a Markdown documentation file for observability operations. It includes:
request_idThis observability milestone is considered complete when:
curl -i http://localhost/api/health returns 200prometheus, matchmaking-api, worker, and gateway as UP