Try it free

GCP topology

  • Latest Dynatrace
  • Explanation

Overview

Dynatrace discovers your Google Cloud resource inventory and stores it in Smartscape on Grail. Each resource is a Smartscape entity containing its configuration, labels, tags, and relationships to other resources. Ingested metrics and logs are linked to their corresponding entity, making telemetry available in topology context in Clouds Clouds and via DQL.

Use cases

  • Access the inventory of your resources across all your monitored Google Cloud projects, including their configuration, together with their telemetry in Clouds Clouds.
  • Use DQL to query telemetry using topology context—for example, show Cloud Monitoring metrics for all Compute Engine instances within a specific VPC network.
  • Use DQL to query the configuration state of your resources across monitored projects—for example, list all Cloud Storage buckets without uniform bucket-level access enabled, or pull up a report of Compute Engine instances per machine type.

Key concepts

Entities (Smartscape nodes)

Dynatrace discovers your Google Cloud resource inventory using two complementary paths:

Periodic polling

Dynatrace polls the Google Cloud Asset Inventory API periodically to discover and update resource state across your monitored scope.

Asset Inventory feed (push)

An optional Cloud Asset feed that pushes near-real-time notifications when resources are created, updated, or deleted. Complements polling by delivering changes between poll cycles. Requires separate deployment — see Enable or update asset inventory feed.

Asset feed maintenance

Terraform creates the feed with a Dynatrace-maintained base set of resource types. Add or remove types to match your needs. There is no Google Cloud Console UI for this — use gcloud CLI or Terraform. For commands and the full base type list, see Manual onboarding reference.

All GCP entities include the Smartscape on Grail common attributes plus:

  • gcp.project.id
  • gcp.location
  • gcp.region
  • gcp.zone (set only for zonal resources)
  • gcp.resource.name
  • gcp.resource.type
  • gcp.labels
  • gcp.tags

Example Smartscape entity for a GKE node pool:

{
"id": "GCP_CONTAINER_GOOGLEAPIS_COM_NODEPOOL-0096C9F386DC3C24",
"type": "GCP_CONTAINER_GOOGLEAPIS_COM_NODEPOOL",
"name": "pool-5",
"lifetime": {
"start": "2026-01-19T09:50:00.000000000+01:00",
"end": "2026-02-26T20:57:00.000000000+01:00"
},
"cloud.provider": "gcp",
"cloud.acquisition.status": "OK",
"gcp.project.id": "my-project",
"gcp.region": "us-west1",
"gcp.location": "us-west1",
"gcp.organization.id": "178056077565",
"gcp.resource.name": "//container.googleapis.com/projects/my-project/locations/us-west1/clusters/my-cluster/nodePools/pool-5",
"gcp.resource.type": "container.googleapis.com/NodePool",
"gcp.asset.type": "container.googleapis.com/NodePool",
"gcp.properties.version": "v1",
"gcp.object": "<full asset configuration as retrieved from Google Cloud Asset Inventory>",
"tags:gcp_tags": {
"my-org/environment": "production"
},
"dt.security_context": [],
"dt.da.source": "gcp-smartscape-poller-full"
}

Location and region fields

Dynatrace derives gcp.location, gcp.region, and gcp.zone from the location value returned by Google Cloud Asset Inventory.

GCP location valuegcp.locationgcp.regiongcp.zone

Zone (for example, europe-west4-a)

europe-west4-a

europe-west4

europe-west4-a

Region (for example, europe-west4)

europe-west4

europe-west4

(unset)

Multi-region (for example, eur2)

eur2

eur2

(unset)

global

global

global

(unset)

No location

global

global

(unset)

gcp.location always reflects the raw value from Google Cloud. gcp.region is always set—when GCP returns a zone, Dynatrace strips the zone suffix to derive the region (for example, europe-west4-a → europe-west4). If no location is available, both fields default to global. gcp.zone is only set when GCP returns a zone.

Dynatrace supports all asset types listed in the Google Cloud Asset Inventory documentation.

Relationships (Smartscape edges)

While scanning GCP topology, Dynatrace also discovers relationships between resources and persists them in Smartscape on Grail as static edges—for example, a Compute Engine instance and the VPC network it belongs to.

Topology data freshness

Dynatrace receives near-real-time topology updates via the Asset Inventory feed for resource changes as they happen. The periodic polling cycle ensures consistency and catches any changes not delivered by the feed.

Label and tag consistency

Labels: When a resource's labels change, Google Cloud emits an asset feed event. Dynatrace processes these events in near-real time, so label changes are typically reflected in Dynatrace within minutes.

Tags: Google Cloud tags are hierarchical and changes to tag bindings may not trigger asset feed events. Dynatrace picks up tag changes through periodic polling, so tag updates can take up to one hour to appear in Dynatrace entity data.

The dt.da.source attribute indicates how the entity was last updated:

  • gcp-smartscape-poller-full — updated by periodic polling
  • gcp-smartscape-poller-feed — updated by an Asset Inventory feed event

You can see the timestamp when a given Smartscape node was last updated in the lifetime.end attribute.

When querying topology, select at least the last hour in your query timeframe to list all active resources.

Dynatrace scans the topology of the Google Cloud projects, folders, or organization scope configured for your connection. Resources outside the configured scope are not discovered.

Signals in context

GCP labels and tags are stored directly on Smartscape entities as part of the asset data retrieved from Cloud Asset Inventory. No enrichment configuration is required — they are always present on the entity.

  • gcp.labels — map of all labels on the resource at the time of last discovery
  • gcp.tags — map of all tags bound to the resource at the time of last discovery

For timing behavior — including why tag changes can take up to one hour to appear — see Topology data freshness.

Access GCP topology data in Dynatrace

Access topology via Clouds Clouds, or query it via DQL in Notebooks Notebooks.

Query topology data via DQL

List entities by type

smartscapeNodes "GCP*"
| summarize count=count(), by:{gcp.project.id, gcp.location, type}
| sort count desc

Query all Compute Engine instances

smartscapeNodes "GCP_COMPUTE_GOOGLEAPIS_COM_INSTANCE"

Extract resource configuration attributes

smartscapeNodes "GCP_COMPUTE_GOOGLEAPIS_COM_INSTANCE"
| parse gcp.object, "JSON:gcpjson"
| fieldsAdd machineType=gcpjson[configuration][resource][machineType],
zone=gcpjson[configuration][resource][zone]
| fieldsRemove gcp.object, gcpjson

Query discovered relationship types

smartscapeEdges "*"
| filter startsWith(source_type, "GCP")
| summarize count=count(), by: {edgeType=type, sourceType=source_type, targetType=target_type}

Cost considerations

Dynatrace pricing

GCP topology ingestion (entities and relationships) is included in GCP Cloud Platform Monitoring at no additional Dynatrace cost. See the Dynatrace rate card for details on metric and log ingest pricing.

Google Cloud pricing

Topology discovery can cause charges in your Google Cloud environment, depending on what you use:

  • Cloud Asset Inventory — see Cloud Asset Inventory pricing.
  • Pub/Sub, if you enable the asset feed — see Pub/Sub pricing.

For details and current rates, see the Google Cloud pricing pages.

What's next?

Explore your GCP resources with their linked telemetry in Clouds Clouds, or run topology queries across projects in Notebooks Notebooks.

Related tags
Infrastructure Observability