{"adoption": {"forks": 142, "observed_at": "2026-08-28T04:03:38.737683+00:00", "stars": 1116}, "canonical_url": "https://ross.abutalabs.com/products/fastapi-observability", "card": {"archived": false, "artifact_type": "infra-config", "description": "Observe FastAPI app with three pillars of observability: Traces (Tempo), Metrics (Prometheus), Logs (Loki) on Grafana through OpenTelemetry.", "domain": ["monitoring", "backend", "web-development", "developer-tools"], "enriched": true, "function": ["monitoring", "tracing", "logging"], "health_score": 66, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["blueswen/fastapi-observability"], "name": "blueswen/fastapi-observability", "platform": ["python", "self-hosted"], "pushed_at": "2026-04-12T05:52:53+00:00", "repo": "blueswen/fastapi-observability", "stars": 1116, "tags": ["fastapi", "grafana", "prometheus", "loki", "tempo", "opentelemetry", "docker-compose", "three-pillars-of-observability", "devops", "docker", "web-server"], "topics": ["fastapi", "grafana", "loki", "opentelemetry", "prometheus", "tempo", "openmetrics", "observability"], "urls": [], "use_cases": ["add observability to a fastapi app", "set up prometheus metrics for fastapi", "collect traces with opentelemetry and tempo", "ship application logs to loki", "correlate metrics traces and logs in grafana", "example grafana dashboards for python web services"], "what_it_is": "A Docker Compose-based reference setup that instruments a FastAPI application with the three pillars of observability: traces via Tempo and OpenTelemetry, metrics via Prometheus, and logs via Loki, all visualized in Grafana. It ships preconfigured dashboards with correlated metrics-to-traces-to-logs navigation.", "when_to_avoid": ["your app is not FastAPI or Python-based", "you use a different observability backend like Datadog or New Relic", "you need a production-hardened solution rather than a reference/demo setup"], "when_to_choose": ["you run a FastAPI service and want a ready-made Grafana observability stack", "you want to learn how traces, metrics, and logs integrate via OpenTelemetry", "you want prebuilt dashboards with metrics-to-traces and logs-to-traces correlation"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/fastapi-observability", "repo": "blueswen/fastapi-observability", "role": "main", "score": 67}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:38.737683+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:41:57.288950+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "430e40486017ed5b20415ad3df863bec1a5f09ac6232df6c980354e88c061c89", "fetched_at": "2026-08-28T04:03:38.737683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blueswen/fastapi-observability"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:38.737683+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:41:57.288950+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "430e40486017ed5b20415ad3df863bec1a5f09ac6232df6c980354e88c061c89", "fetched_at": "2026-08-28T04:03:38.737683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blueswen/fastapi-observability"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:41:57.288950+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "430e40486017ed5b20415ad3df863bec1a5f09ac6232df6c980354e88c061c89", "fetched_at": "2026-08-28T04:03:38.737683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blueswen/fastapi-observability"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:38.737683+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:38.737683+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:38.737683+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:41:57.288950+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "430e40486017ed5b20415ad3df863bec1a5f09ac6232df6c980354e88c061c89", "fetched_at": "2026-08-28T04:03:38.737683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blueswen/fastapi-observability"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:38.737683+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:38.737683+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:41:57.288950+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "430e40486017ed5b20415ad3df863bec1a5f09ac6232df6c980354e88c061c89", "fetched_at": "2026-08-28T04:03:38.737683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blueswen/fastapi-observability"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:38.737683+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:38.737683+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:38.737683+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:41:57.288950+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "430e40486017ed5b20415ad3df863bec1a5f09ac6232df6c980354e88c061c89", "fetched_at": "2026-08-28T04:03:38.737683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blueswen/fastapi-observability"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:38.737683+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:38.737683+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:41:57.288950+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "430e40486017ed5b20415ad3df863bec1a5f09ac6232df6c980354e88c061c89", "fetched_at": "2026-08-28T04:03:38.737683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blueswen/fastapi-observability"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:41:57.288950+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "430e40486017ed5b20415ad3df863bec1a5f09ac6232df6c980354e88c061c89", "fetched_at": "2026-08-28T04:03:38.737683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blueswen/fastapi-observability"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:41:57.288950+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "430e40486017ed5b20415ad3df863bec1a5f09ac6232df6c980354e88c061c89", "fetched_at": "2026-08-28T04:03:38.737683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blueswen/fastapi-observability"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:41:57.288950+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "430e40486017ed5b20415ad3df863bec1a5f09ac6232df6c980354e88c061c89", "fetched_at": "2026-08-28T04:03:38.737683+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blueswen/fastapi-observability"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 77, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1603, "days_push": 143, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 67, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}