---
title: Google Cloud Storage
description: >-
  Unified object storage for live data serving, data analytics, machine learning
  and data archiving.
breadcrumbs: Docs > Integrations > Google Cloud Storage
---

> For the complete documentation index, see [llms.txt](https://docs.datadoghq.com/llms.txt).

# Google Cloud Storage

{% callout %}
# Important note for users on the following Datadog sites: us2.ddog-gov.com

{% alert level="info" %}
To find out if this integration is available in your organization, see your [Datadog Integrations](https://app.datadoghq.com/integrations) page or ask your organization administrator.

To initiate an exception request to enable this integration for your organization, email [support@ddog-gov.com](mailto:support@ddog-gov.com).
{% /alert %}

{% /callout %}

## Overview{% #overview %}

[Google Cloud Storage](https://docs.cloud.google.com/storage/docs) is unified object storage for developers and enterprises, used for live data serving, data analytics, machine learning, and data archiving.

Get metrics from Google Cloud Storage to:

- Visualize the performance of your Cloud Storage buckets.
- Correlate the performance of your Cloud Storage buckets with your applications.

## Setup{% #setup %}

### Installation{% #installation %}

If you haven't already, set up the [Google Cloud Platform integration](https://docs.datadoghq.com/integrations/google-cloud-platform.md) first. There are no other installation steps.

#### Configuration{% #configuration %}

To collect custom Cloud Storage labels as tags, enable the cloud asset inventory permission.

### Log collection{% #log-collection %}

Google Cloud Storage logs are collected with Google Cloud Logging and sent to a Dataflow job through a Cloud Pub/Sub topic. If you haven't already, [set up logging with the Datadog Dataflow template](https://docs.datadoghq.com/integrations/google-cloud-platform.md#log-collection).

Once this is done, export your Google Cloud Storage logs from Google Cloud Logging to the Pub/Sub topic:

1. Go to the [Google Cloud Logging page](https://console.cloud.google.com/logs/viewer) and filter the Google Cloud Storage logs.
1. Click **Create Export** and name the sink.
1. Choose "Cloud Pub/Sub" as the destination and select the Pub/Sub topic that was created for that purpose. **Note**: The Pub/Sub topic can be located in a different project.
1. Click **Create** and wait for the confirmation message to show up.

## Data Collected{% #data-collected %}

### Metrics{% #metrics %}

|  |
|  |
| **gcp.storage.api.lro_count**(count)                                                                | Number of completed long-running operations since the last sample.                                                                                                                                                                                                                                                                                                                                |
| **gcp.storage.api.request_count**(count)                                                            | Number of API calls, grouped by API method name and response code.*Shown as request*                                                                                                                                                                                                                                                                                                              |
| **gcp.storage.authn.authentication_count**(count)                                                   | Number of requests signed with a hash-based message authentication code (HMAC) key or an RSA key, grouped by authentication method and access ID.                                                                                                                                                                                                                                                 |
| **gcp.storage.authz.acl_based_object_access_count**(count)                                       | Number of requests that were granted access to an object only through the object's access control lists (ACLs).                                                                                                                                                                                                                                                                                   |
| **gcp.storage.authz.acl_operations_count**(count)                                                  | Number of access control list (ACL) operations, broken down by type.                                                                                                                                                                                                                                                                                                                              |
| **gcp.storage.authz.object_specific_acl_mutation_count**(count)                                  | Number of changes made to object-specific access control lists (ACLs).                                                                                                                                                                                                                                                                                                                            |
| **gcp.storage.autoclass.transition_operation_count**(count)                                        | Total number of storage class transition operations initiated by Autoclass.                                                                                                                                                                                                                                                                                                                       |
| **gcp.storage.autoclass.transitioned_bytes_count**(count)                                          | Total bytes transitioned by Autoclass.*Shown as byte*                                                                                                                                                                                                                                                                                                                                             |
| **gcp.storage.client.grpc.client.attempt.duration.avg**(gauge)                                       | The average of the cumulative time taken to complete a remote procedure call (RPC) attempt, including the time it takes to pick a subchannel.*Shown as second*                                                                                                                                                                                                                                    |
| **gcp.storage.client.grpc.client.attempt.duration.samplecount**(gauge)                               | The sample count for the cumulative time taken to complete a remote procedure call (RPC) attempt, including the time it takes to pick a subchannel.                                                                                                                                                                                                                                               |
| **gcp.storage.client.grpc.client.attempt.duration.sumsqdev**(gauge)                                  | The sum of squared deviation for the cumulative time taken to complete a remote procedure call (RPC) attempt, including the time it takes to pick a subchannel.*Shown as second*                                                                                                                                                                                                                  |
| **gcp.storage.client.grpc.client.attempt.rcvd_total_compressed_message_size.avg**(count)         | The average cumulative bytes (compressed but not encrypted) received across all response messages (metadata excluded) per remote procedure call (RPC) attempt. The value does not include gRPC or transport framing bytes.*Shown as byte*                                                                                                                                                         |
| **gcp.storage.client.grpc.client.attempt.rcvd_total_compressed_message_size.samplecount**(count) | The sample count for the cumulative bytes (compressed but not encrypted) received across all response messages (metadata excluded) per remote procedure call (RPC) attempt. The value does not include gRPC or transport framing bytes.                                                                                                                                                           |
| **gcp.storage.client.grpc.client.attempt.rcvd_total_compressed_message_size.sumsqdev**(count)    | The sum of squared deviation for the cumulative bytes (compressed but not encrypted) received across all response messages (metadata excluded) per remote procedure call (RPC) attempt. The value does not include gRPC or transport framing bytes.*Shown as byte*                                                                                                                                |
| **gcp.storage.client.grpc.client.attempt.sent_total_compressed_message_size.avg**(count)         | The average cumulative bytes (compressed but not encrypted) sent across all request messages (metadata excluded) per remote procedure call (RPC) attempt. The value does not include gRPC or transport framing bytes.*Shown as byte*                                                                                                                                                              |
| **gcp.storage.client.grpc.client.attempt.sent_total_compressed_message_size.samplecount**(count) | The sample count for the cumulative bytes (compressed but not encrypted) sent across all request messages (metadata excluded) per remote procedure call (RPC) attempt. The value does not include gRPC or transport framing bytes.                                                                                                                                                                |
| **gcp.storage.client.grpc.client.attempt.sent_total_compressed_message_size.sumsqdev**(count)    | The sum of squared deviation for the cumulative bytes (compressed but not encrypted) sent across all request messages (metadata excluded) per remote procedure call (RPC) attempt. The value does not include gRPC or transport framing bytes.*Shown as byte*                                                                                                                                     |
| **gcp.storage.client.grpc.client.attempt.started**(count)                                            | The cumulative number of RPC attempts started, including those that have not completed.                                                                                                                                                                                                                                                                                                           |
| **gcp.storage.client.grpc.client.call.duration.avg**(gauge)                                          | The average of the cumulative time the gRPC library takes to complete a remote procedure call (RPC) from the application's perspective.*Shown as second*                                                                                                                                                                                                                                          |
| **gcp.storage.client.grpc.client.call.duration.samplecount**(gauge)                                  | The sample count for the cumulative time the gRPC library takes to complete a remote procedure call (RPC) from the application's perspective.                                                                                                                                                                                                                                                     |
| **gcp.storage.client.grpc.client.call.duration.sumsqdev**(gauge)                                     | The sum of squared deviation of the cumulative time the gRPC library takes to complete a remote procedure call (RPC) from the application's perspective.*Shown as second*                                                                                                                                                                                                                         |
| **gcp.storage.client.grpc.lb.rls.cache_entries**(gauge)                                             | Number of entries in the Route Lookup Service (RLS) cache.*Shown as entry*                                                                                                                                                                                                                                                                                                                        |
| **gcp.storage.client.grpc.lb.rls.cache_size**(gauge)                                                | The current size of the Route Lookup Service (RLS) cache.*Shown as byte*                                                                                                                                                                                                                                                                                                                          |
| **gcp.storage.client.grpc.lb.rls.default_target_picks**(count)                                     | Cumulative number of load-balancing (LB) picks sent to the default target.                                                                                                                                                                                                                                                                                                                        |
| **gcp.storage.client.grpc.lb.rls.failed_picks**(count)                                              | Cumulative number of load-balancing (LB) picks that failed because a Route Lookup Service (RLS) request failed or the RLS channel was throttled.                                                                                                                                                                                                                                                  |
| **gcp.storage.client.grpc.lb.rls.target_picks**(count)                                              | Cumulative number of LB picks sent to each RLS target. Note that if the default target is also returned by the RLS server, RPCs sent to that target from the cache are counted in this metric, not in `grpc.rls.default_target_picks`.                                                                                                                                                            |
| **gcp.storage.client.grpc.lb.wrr.endpoint_weight_not_yet_usable**(count)                         | Cumulative number of endpoints from each scheduler update that do not yet have usable weight information (either the load report has not yet been received, or it is within the blackout period).                                                                                                                                                                                                 |
| **gcp.storage.client.grpc.lb.wrr.endpoint_weight_stale**(count)                                    | Cumulative number of endpoints from each scheduler update whose latest weight is older than the expiration period.                                                                                                                                                                                                                                                                                |
| **gcp.storage.client.grpc.lb.wrr.endpoint_weights.avg**(count)                                      | The average of the cumulative bucket counts. The histogram buckets are endpoint weight ranges. Each bucket is a counter that increments by one for every endpoint whose weight is within that range. Endpoints without usable weights have weight 0.                                                                                                                                              |
| **gcp.storage.client.grpc.lb.wrr.endpoint_weights.samplecount**(count)                              | The sample count for the cumulative bucket counts. The histogram buckets are endpoint weight ranges. Each bucket is a counter that increments by one for every endpoint whose weight is within that range. Endpoints without usable weights have weight 0.                                                                                                                                        |
| **gcp.storage.client.grpc.lb.wrr.endpoint_weights.sumsqdev**(count)                                 | The sum of squared deviation for the cumulative bucket counts. The histogram buckets are endpoint weight ranges. Each bucket is a counter that increments by one for every endpoint whose weight is within that range. Endpoints without usable weights have weight 0.                                                                                                                            |
| **gcp.storage.client.grpc.lb.wrr.rr_fallback**(count)                                               | Cumulative number of scheduler updates in which there were not enough endpoints with valid weight, which caused the WRR policy to fall back to RR behavior.                                                                                                                                                                                                                                       |
| **gcp.storage.client.grpc.xds_client.connected**(gauge)                                             | Whether or not the xDS client currently has a working ADS stream to the xDS server. For a given server, this will be set to 1 when the stream is initially created. It will be set to 0 when we have a connectivity failure or when the ADS stream fails without seeing a response message, as per A57. Once set to 0, it will be reset to 1 when we receive the first response on an ADS stream. |
| **gcp.storage.client.grpc.xds_client.resource_updates_invalid**(count)                            | Cumulative number of resources received that were considered invalid.*Shown as resource*                                                                                                                                                                                                                                                                                                          |
| **gcp.storage.client.grpc.xds_client.resource_updates_valid**(count)                              | Cumulative number of resources received that were considered valid. The counter increments even for resources that have not changed.*Shown as resource*                                                                                                                                                                                                                                           |
| **gcp.storage.client.grpc.xds_client.resources**(gauge)                                             | Number of xDS resources.*Shown as resource*                                                                                                                                                                                                                                                                                                                                                       |
| **gcp.storage.client.grpc.xds_client.server_failure**(count)                                       | Cumulative number of times an xDS server went from healthy to unhealthy. A server becomes unhealthy after a connectivity failure, or when the Aggregated Discovery Service (ADS) stream fails without a response message, as defined in gRFC A57.                                                                                                                                                 |
| **gcp.storage.network.received_bytes_count**(count)                                                | Number of bytes received over the network, grouped by API method name and response code.*Shown as byte*                                                                                                                                                                                                                                                                                           |
| **gcp.storage.network.sent_bytes_count**(count)                                                    | Number of bytes sent over the network, grouped by API method name and response code.*Shown as byte*                                                                                                                                                                                                                                                                                               |
| **gcp.storage.quota.dualregion_google_egress_bandwidth.limit**(gauge)                             | Current limit on quota metric `storage.googleapis.com/dualregion_google_egress_bandwidth`.*Shown as bit*                                                                                                                                                                                                                                                                                          |
| **gcp.storage.quota.dualregion_google_egress_bandwidth.usage**(count)                             | Current usage on quota metric `storage.googleapis.com/dualregion_google_egress_bandwidth`. After sampling, data is not visible for up to 150 seconds.*Shown as bit*                                                                                                                                                                                                                               |
| **gcp.storage.quota.dualregion_internet_egress_bandwidth.limit**(gauge)                           | Current limit on quota metric `storage.googleapis.com/dualregion_internet_egress_bandwidth`.*Shown as bit*                                                                                                                                                                                                                                                                                        |
| **gcp.storage.quota.dualregion_internet_egress_bandwidth.usage**(count)                           | Current usage on quota metric `storage.googleapis.com/dualregion_internet_egress_bandwidth`. After sampling, data is not visible for up to 150 seconds.*Shown as bit*                                                                                                                                                                                                                             |
| **gcp.storage.replication.meeting_rpo**(gauge)                                                      | Whether objects are meeting the recovery point objective (RPO). The RPO is 15 minutes for ASYNC_TURBO (turbo replication) and 12 hours for DEFAULT (default replication).                                                                                                                                                                                                                         |
| **gcp.storage.replication.missing_rpo_minutes_last_30d**(gauge)                                  | Total number of minutes where the recovery point objective (RPO) was missed, as measured over the most recent 30 days. The metric is delayed by `storage.googleapis.com/replication/v2/time_since_metrics_updated`.*Shown as minute*                                                                                                                                                              |
| **gcp.storage.replication.object_replications_last_30d**(gauge)                                   | Total number of object replications, as measured over the most recent 30 days. The metric can be broken down by whether each object replication was meeting or missing Recovery Point Objective (RPO). The metric is delayed by `storage.googleapis.com/replication/time_since_metrics_updated`.                                                                                                  |
| **gcp.storage.replication.time_since_metrics_updated**(gauge)                                     | Time since the `storage.googleapis.com/replication/*` metrics were last calculated.*Shown as second*                                                                                                                                                                                                                                                                                              |
| **gcp.storage.replication.turbo_max_delay**(gauge)                                                 | Age of the oldest object that has not been replicated. Every object uploaded before it has been replicated.*Shown as second*                                                                                                                                                                                                                                                                      |
| **gcp.storage.replication.v2.object_replications_last_30d**(gauge)                                | Total number of object replications, as measured over the most recent 30 days. The metric can be broken down by whether each object replication was meeting or missing the design target. The metric is delayed by `storage.googleapis.com/replication/v2/time_since_metrics_updated`.                                                                                                            |
| **gcp.storage.replication.v2.time_since_metrics_updated**(gauge)                                  | Time since the `storage.googleapis.com/replication/missing_rpo_minutes_last_30d` and `storage.googleapis.com/replication/v2/object_replications_last_30d` metrics were last calculated.*Shown as second*                                                                                                                                                                                          |
| **gcp.storage.storage.object_count**(gauge)                                                         | The total number of objects per bucket.*Shown as object*                                                                                                                                                                                                                                                                                                                                          |
| **gcp.storage.storage.total_byte_seconds**(gauge)                                                  | Total daily storage used by the bucket, in byte-seconds.*Shown as second*                                                                                                                                                                                                                                                                                                                         |
| **gcp.storage.storage.total_bytes**(gauge)                                                          | The total size of all objects in the bucket.*Shown as byte*                                                                                                                                                                                                                                                                                                                                       |
| **gcp.storage.storage.v2.deleted_bytes**(count)                                                     | Number of bytes deleted per bucket, grouped by storage class. Google measures and reports it once per day. After a possible delay, the value appears in Cloud Monitoring. On days with no deletes, Google exports no datapoint.*Shown as byte*                                                                                                                                                    |
| **gcp.storage.storage.v2.total_byte_seconds**(gauge)                                               | Total daily storage used by the bucket in byte-seconds, grouped by storage class and by type: live-object, noncurrent-object, soft-deleted-object, or multipart-upload. Google measures it once per day. After a possible delay, the value appears in Cloud Monitoring and repeats at each sampling interval through the day. Buckets with no objects are not tracked.*Shown as byte*             |
| **gcp.storage.storage.v2.total_bytes**(gauge)                                                       | Total size of all objects and multipart uploads in the bucket, grouped by storage class and by type: live-object, noncurrent-object, soft-deleted-object, or multipart-upload. Google measures it once per day. After a possible delay, the value appears in Cloud Monitoring and repeats at each sampling interval through the day. Buckets with no objects are not tracked.*Shown as byte*      |
| **gcp.storage.storage.v2.total_count**(gauge)                                                       | Total number of objects and multipart uploads per bucket, grouped by storage class and by type: live-object, noncurrent-object, soft-deleted-object, or multipart-upload. Google measures it once per day. After a possible delay, the value appears in Cloud Monitoring and repeats at each sampling interval through the day. Buckets with no objects are not tracked.                          |
| **gcp.storage.quota.anywhere_cache_storage_size.usage**(gauge)                                    | Current usage on quota metric `storage.googleapis.com/anywhere_cache_storage_size`. After sampling, data is not visible for up to 150 seconds.*Shown as kibibyte*                                                                                                                                                                                                                                 |
| **gcp.storage.quota.rapid_cache_storage_size.limit**(gauge)                                       | Current limit on quota metric `storage.googleapis.com/rapid_cache_storage_size`.                                                                                                                                                                                                                                                                                                                  |
| **gcp.storage.quota.rapid_cache_storage_size.usage**(gauge)                                       | Current usage on quota metric `storage.googleapis.com/rapid_cache_storage_size`.                                                                                                                                                                                                                                                                                                                  |
| **gcp.storage.quota.total_core_bytes.usage**(gauge)                                                | Current usage on quota metric `storage.googleapis.com/total_core_bytes`. After sampling, data is not visible for up to 150 seconds.*Shown as gibibyte*                                                                                                                                                                                                                                            |

### Events{% #events %}

The Google Cloud Storage integration does not include any events.

### Service Checks{% #service-checks %}

The Google Cloud Storage integration does not include any service checks.

## Troubleshooting{% #troubleshooting %}

Need help? Contact [Datadog support](https://docs.datadoghq.com/help/).
