feat(observability): add Prometheus alerting rules and Grafana dashboard (closes #349) - #494
Open
beulah7717108-eng wants to merge 2 commits into
Open
Conversation
The api Docker build was failing because the build context (api/) could not resolve file: workspace dependencies (`@xstreamroll/types`, `@xstreamroll/contract-tests`, and the root `xstreamroll` package). Changes: - Rewrite api/Dockerfile to use repo root as build context, copying workspace packages (packages/types, tests/contracts, root) and database/migrations into the builder stage - Add `rxjs` as a direct dependency in api/package.json (imported by source code but previously only available transitively via NestJS) - Regenerate api/pnpm-lock.yaml (was out of sync with package.json, causing ERR_PNPM_OUTDATED_LOCKFILE) - Create root .dockerignore to exclude node_modules, dist, .next, etc. from the Docker build context - Update docker-compose.yml api service: context changed from ./api to ., with dockerfile: api/Dockerfile - Update security-scan.yml, release.yml, docker-scan.yml: api matrix entries now use context: . with dockerfile: api/Dockerfile Closes the api Docker build failure in the security-scan workflow. Co-Authored-By: Freebuff <noreply@freebuff.com>
The app Docker build was failing because the build context (app/) could not resolve the file: workspace dependency @xstreamroll/types (file:../packages/types). Changes: - Rewrite app/Dockerfile to use repo root as build context, copying packages/types into the builder stage so npm can resolve the file: dependency. Merge deps+builder stages to avoid cross-stage symlink breakage. - Add RUN mkdir -p public to ensure the optional Next.js public/ directory exists for the runner stage. - Update docker-compose.yml app service: context changed from ./app to ., with dockerfile: app/Dockerfile - Update security-scan.yml, release.yml, docker-scan.yml: app matrix entries now use context: . with dockerfile: app/Dockerfile Closes the app Docker build failure in the security-scan workflow.
beulah7717108-eng
force-pushed
the
feat/349-observability-monitoring
branch
from
July 30, 2026 00:38
1489bb8 to
521c328
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Closes #349 — No alerting rules or Grafana dashboard shipped with the project.
Changes
New:
monitoring/directoryprometheus-rules.yaml— Production-ready alerting rules:HighErrorRateHighLatencyWebSocketConnectionsZeroDatabasePoolSaturationWorkerRestartsHighQueueDepthCriticalQueueDepthWorkerHighErrorRateLockRenewalFailuresAlso includes recording rules for
job:http_request_duration_seconds:p50/p90/p99.grafana-dashboard.json— Pre-built dashboard covering:Updated:
k8s/README.mdpromtool check rulesvalidation instructionsValidation
promtool check rules monitoring/prometheus-rules.yaml # Expected: SUCCESS: ... rules found, 0 invalid