Skip to content

feat(gcp): query Google Cloud metrics live with PromQL - #1475

Open
JeremyFunk wants to merge 35 commits into
feat/gcp-infra-pagefrom
feat/gcp-promql-query
Open

JeremyFunk wants to merge 35 commits into
feat/gcp-infra-pagefrom
feat/gcp-promql-query

Merge branch 'feat/gcp-infra-page' into feat/gcp-promql-query

a011fce
Select commit
Loading
Failed to load commit list.
Maple Review Bot / Maple / review succeeded Oct 16, 2026 in 1m 59s

Confidence 7/10 · No issues found

🟢 Confidence 7/10 · likely safe to merge
F3 is unchanged at this head, and the capped read still reports a non-JSON body as over-cap.
quality 98/100 · 1 note · tests covered · risk medium · 2/2 new units observable

Adds live Google Cloud PromQL to the internal integrations API: per-metrics-scope fan-out with per-connection reader impersonation, capped answers, partial failures, plus metric search/describe. Backend-only, org-scoped, well tested; the poller's error text still misattributes Maple-side failures.

  • GcpPromQlService queries PromQL live over an org's GCP projects, one Google call per metrics scope
  • Failures come back beside what answered; explain.ts is now shared with the poller
  • Google calls are form-encoded, capped at 8 MB and 500 series, 4 concurrent
  • Four new internal endpoints: query_range, query, metrics/search, metrics/describe

Before merge

Still open from earlier reviews

Production impact

Telemetry this change adds and removes (5)
  • ➕ attribute maple.gcp.projects · packages/backend/src/services/integrations/GcpPromQlService.ts:351
  • ➕ span name GcpPromQlService.queryRange · packages/backend/src/services/integrations/GcpPromQlService.ts:495
  • ➕ span name GcpPromQlService.queryInstant · packages/backend/src/services/integrations/GcpPromQlService.ts:510
  • ➕ span name GcpPromQlService.searchMetrics · packages/backend/src/services/integrations/GcpPromQlService.ts:542
  • ➕ span name GcpPromQlService.describeMetric · packages/backend/src/services/integrations/GcpPromQlService.ts:574
What was checked
  • Targets and named projects are org-scoped (GcpPromQlService.ts:244, :328)
  • GcpMetricType's pattern leaves no quote to break the descriptor filter (gcp-promql.ts:131)
  • EdgeCacheService accepts a function ttlSeconds (lib/cache/src/edge-cache.test.ts:157)
Observability coverage: 2 of 2 changes observable
Change Kind Observable Evidence
HTTP endpoints /gcp/promql/query_range, /gcp/promql/query, /gcp/metrics/search, /gcp/metrics/describe inbound yes Effect.fn spans on each service method (GcpPromQlService.ts:495, :542, :574) served through the internal HttpApi group
Google Cloud Monitoring PromQL, metricsScope and Cloud Asset project-search calls outbound yes every call annotates peer.service = google-cloud (gcp/api.ts:198)

a011fce · Updated on every push. Reply "won't fix" to dismiss a finding, or mention @maple-review-bot to ask about one.