Repository navigation
feat(gcp): query Google Cloud metrics live with PromQL - #1475
Open
JeremyFunk wants to merge 35 commits into
Open
JeremyFunk wants to merge 35 commits into
JeremyFunk wants to merge 35 commits into
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.
GcpPromQlServicequeries PromQL live over an org's GCP projects, one Google call per metrics scope- Failures come back beside what answered;
explain.tsis 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
- Secret · Set
MAPLE_GCP_SERVICE_ACCOUNT_KEYin the prd and dev api secret stores; unset answers as unavailable ·apps/api/src/resources/env.ts:86
Still open from earlier reviews
- 🔵 Note · F3 · Poller shows a connection problem for Maple-side
IAM Credentialsfailures ·packages/backend/src/services/integrations/gcp/explain.ts:22
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)EdgeCacheServiceaccepts a functionttlSeconds(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.
Loading