Description
Ships the affirmative half of the origin question with NO collector code, NO credential and ZERO emitted series. Panels only, on the datasource already provisioned on the write stack. Useful on its own and must not be blocked behind any later phase.
The datasource carries 311 grafanacloud_* metric names in a live org; the shipped dashboards read about 55. The observed-object counters below were verified present 2026-08-24 and are unread by any current panel.
| Metric | Counts | Verified |
|---|---|---|
| grafanacloud_instance_active_integration_series | series per Grafana Integration, carries integration |
100 distinct values in one org, 79 of them aws/* |
| grafanacloud_instance_active_integration_host_series | as above at metric-name granularity | carries integration |
| grafanacloud_app_observability_service_entity_count (+ hostless) | App O11y services observed | present |
| grafanacloud_asserts_instance_active_entities / _total_entities | entity-graph inventory | present |
| grafanacloud_instance_active_target_info_series | OTel target_info, instrumented service instances | 231 stacks |
| grafanacloud_instance_active_kube_node_info_series | k8s nodes | present |
| grafanacloud_instance_active_kube_pod_container_info_series | containers | present |
| grafanacloud_logs_instance_active_streams | log streams | 274 stacks |
| grafanacloud_instance_active_caas_targets_series / _faas_targets_series | CaaS and serverless targets | present |
| grafanacloud_instance_app_o11y_host_count (+ v2 / v3) | App O11y hosts | present |
| grafanacloud_org_infra_o11y_billable_{host,container}_hours | billing-side observed hosts and containers | present |
| grafanacloud_org_db_o11y_billable_host_hours | database instances observed | present |
| grafanacloud_org_fe_o11y_billable_sessions, grafanacloud_frontend_observability_instance_sessions_per_second | RUM sessions | present |
| grafanacloud_profiles_instance_usage_group_bytes_received_per_second | carries usage_group |
present |
Existing pods and hosts panels (bin/dashboards.py:1253,1257) are the pattern to follow.
grafanacloud_oncall_instance_alert_groups_total natively carries slug, team, service_name, integration and state, so sum by(service_name, team) is already a named service-and-owner catalogue needing no credential. probe_usage_signals.py:329-331 measured top_services and top_integrations and nothing was ever built on them.
Traps that apply, all already in docs/traps.md: id is the per-signal instance id not the stack, so aggregate by(stack_id) first; naming a stack needs the group_left join on grafanacloud_grafana_instance_info; rate-shaped series need max_over_time and never an instantaneous compare; denominators must be windowed like their numerators.
Acceptance Criteria
- #1 Panels read grafanacloud-usage only; no collector source, no credential, no emitted series
- #2 Integration technology breakdown renders from the integration label with no maintained list
- #3 Named service and owning team render from the OnCall metric labels
- #4 Every rate-shaped expression is windowed and every ratio denominator is population-matched
- #5 Stack naming uses the group_left join, never an arithmetic add
- #6 tests/test_dashboards.py coverage gates pass with the new panels
Definition of Done
- #1 python3 -m pytest tests -q
- #2 tofu fmt -check -recursive terraform; tofu init -backend=false and tofu validate pass for terraform/ and terraform/examples/standalone/
- #3 customer-identifier and shipped-text gates from .github/workflows/ci.yml return clean
Implementation Plan
- Extend the existing Usage Workload tab with affirmative observed-object counts, trends, and the discovered integration-label breakdown from grafanacloud-usage.
- Extend the existing Operations Ownership surface with the named OnCall service and owning-team catalogue already carried by datasource labels.
- Pin datasource routing, stack-id aggregation, group_left slug joins, range handling, and dashboard coverage through the existing assembled-dashboard contract tests.
- Run the full sub-task gate, review the final diff, finalize Backlog acceptance evidence, then commit and push to main.
Final Summary
Shipped the panel-only observed-footprint surface over the existing usage datasource with no collector source, credential or emitted series. Dashboard contracts prove discovered integration and OnCall service ownership, windowed rate handling and multiplicative stack naming; the full local gate and secret-backed CI identifier gate passed.