This page explains the core concepts behind GCP Cloud Platform Monitoring. To start connecting your Google Cloud environment, see Create a GCP connection.
Cloud Platform Monitoring for Google Cloud uses service account impersonation to authenticate with your Google Cloud environment—you don't need to store or manage any credentials.
Two concepts underpin this architecture:
Single Dynatrace-managed identity hosted within the Dynatrace Google Cloud environment. This is the service account Dynatrace uses to impersonate your service account.
Customer-managed Google Cloud service account that grants the Dynatrace principal impersonation rights. Each connection maps to one service account and defines which resources the Dynatrace platform can access.
Together, these enable keyless, secretless authentication between Dynatrace SaaS and your Google Cloud environment.
Dynatrace uses the Google Cloud Asset Inventory APIs to build the topology model, which is updated every hour. Asset Inventory Feed events update the Dynatrace topology on change. Changes may take several minutes to appear in Dynatrace. Dynatrace supports all asset types as documented in the Google Cloud Asset Inventory documentation.
An example Smartscape on Grail entity:
{"id": "GCP_CONTAINER_GOOGLEAPIS_COM_NODEPOOL-0096C9F386DC3C24","lifetime": {"start": "2026-01-19T09:50:00.000000000+01:00","end": "2026-02-26T20:57:00.000000000+01:00"},"type": "GCP_CONTAINER_GOOGLEAPIS_COM_NODEPOOL","name": "pool-5","dt.security_context": [],"gcp.properties.version": "v1","gcp.object": ". contains the asset configuration, as retrieved from Google Cloud Asset Inventory .","tags:gcp_tags": {"hyper-scale-inovation/gcp-astro-demo": "gcp-astro-demo value"},"gcp.resource.name": "//container.googleapis.com/projects/hyperscaler/locations/us-west1/clusters/dynatrace-gcp-monitor/nodePools/pool-5","cloud.acquisition.status": "","cloud.provider": "gcp","gcp.organization.id": "178056077565","gcp.region": "us-west1","gcp.project.id": "hyperscaler","gcp.location": "us-west1","dt.openpipeline.source": "da-gcp","gcp.resource.type": "container.googleapis.com/NodePool","gcp.asset.type": "container.googleapis.com/NodePool"}
The content of the attribute gcp.object is planned to be changed.
Dynatrace derives gcp.location, gcp.region, and gcp.zone from the location value returned by Google Cloud Asset Inventory.
| GCP location value | gcp.location | gcp.region | gcp.zone |
|---|---|---|---|
Zone (for example, |
|
|
|
Region (for example, |
|
| (unset) |
Multi-region (for example, |
|
| (unset) |
|
|
| (unset) |
No location |
|
| (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 polls metrics from Google Cloud Monitoring at five-minute intervals. Dynatrace supports scoping projects—a Google Cloud feature that lets you aggregate metrics from multiple projects into a single monitoring scope.
We already evaluate if polling intervals can be lower than five minutes.
An example metric containing all metric metadata, such as Google resource labels:
{"metric.key": "cloud.gcp.logging_sink.logging_googleapis_com.exports.log_entry_count","dt.smartscape_source.type": "GCP_LOGGING_GOOGLEAPIS_COM_LOGSINK","gcp.resource.name": "//logging.googleapis.com/projects/895910851589/sinks/_Default","cloud.provider": "gcp","gcp.resource_labels.name": "_Default","gcp.resource_labels.project_id": "hyper-scale-inovation","gcp.project.id": "hyperscaler","dt.da.source": "gcp-cloud-monitoring","gcp.resource.type": "logging_sink","dt.smartscape.gcp_logging_googleapis_com_logsink": "GCP_LOGGING_GOOGLEAPIS_COM_LOGSINK-F56B6F091D01F3DD","gcp.resource_labels.destination": "logging.googleapis.com/projects/895910851589/locations/global/buckets/_Default","dt.smartscape_source.id": "GCP_LOGGING_GOOGLEAPIS_COM_LOGSINK-F56B6F091D01F3DD"}
When metric collection scope is set to Scoping, Dynatrace needs to identify which of your projects are scoping projects. By default, Dynatrace automatically detects scoping projects by querying each visible project. Detection results are cached, so changes to your Google Cloud monitoring scopes may take some time to reflect in Dynatrace.
Alternatively, you can explicitly specify your scoping projects during onboarding. When you provide an explicit list, Dynatrace skips auto-detection and uses your specified projects directly, ensuring immediate accuracy.
Dynatrace integrates with Google Cloud Log Router. Logs flow through a Pub/Sub subscription and are forwarded to Dynatrace via Cloud Dataflow.
You can reuse your existing Google Cloud tags and labels in Dynatrace. Either use the tag or label values to set Dynatrace attributes such as dt.security_context, or bring tags and labels onto your ingested telemetry data.
Label changes are reflected in Dynatrace within minutes. Tag changes can take up to one hour.
Dynatrace applies contextual linking rules to associate ingested metrics and logs with the Smartscape on Grail entities they originate from (for example, a Compute Engine instance or Cloud SQL database). When telemetry is successfully linked, you can use tag and label enrichment features on that data. Note that linking is best-effort and may not be possible for all signals.
When observability data (such as metrics) is linked, the attribute dt.smartscape_source.id contains the id of the linked Smartscape on Grail entity, for example, GCP_LOGGING_GOOGLEAPIS_COM_LOGSINK-F56B6F091D01F3DD, and dt.smartscape_source.type contains the entity type, for example, GCP_LOGGING_GOOGLEAPIS_COM_LOGSINK.
When using tags and labels for telemetry filtering, telemetry enrichment, or for setting Dynatrace attributes, be aware that enrichment depends on the Dynatrace platform knowing which cloud resource a telemetry signal belongs to and having up-to-date tag and label information for that resource. In some cases, telemetry cannot be linked or may arrive before Dynatrace has discovered the resource or received its latest tags and labels. When this happens, the telemetry is ingested without enrichment.
To handle these cases, use OpenPipeline rules to set default values for missing enrichment attributes or to drop unenriched data.