- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
Storage Monitoring for Amazon S3, Google Cloud Storage, and Azure Blob Storage provides deep, prefix-level analytics to help you understand exactly how your storage is being used. It detects potential issues before they impact operations, and helps you make data-driven decisions about storage optimization. Use these insights to track storage growth, investigate access patterns, and optimize costs.
This guide explains how to configure Storage Monitoring in Datadog for your Amazon S3 buckets, Google Cloud Storage buckets, and Azure storage accounts. Access your Storage Monitoring data by navigating to Infrastructure > Storage Monitoring.
Select your cloud storage service to access setup instructions.
The fastest way to configure Storage Monitoring is through the Add Buckets page in Datadog, where you can set up multiple S3 buckets at the same time.
Enable Amazon S3 Integration and Resource collection for all the AWS accounts you want to monitor.
Allow Datadog to read from your destination buckets. Add the following permissions to the Datadog IAM integration role for the account that owns the destination buckets:
s3:GetObject
s3:ListBucket
Scope these read-only permissions to only the destination buckets containing your S3 inventory files.
Allow source buckets to write to destination buckets. The destination buckets must include a policy that allows the source buckets to write inventory data. See Creating a destination bucket policy in the AWS documentation for details.
Example source-bucket policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowListInventoryBucket",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::storage-monitoring-s3-inventory-destination"
},
{
"Sid": "AllowGetInventoryObjects",
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::storage-monitoring-s3-inventory-destination/*"
}
]
}
Select the S3 buckets you want to monitor with Storage Monitoring. You can select buckets from multiple AWS accounts at once.
Assign a destination bucket per region to store S3 inventory reports from the source buckets. This can be an existing AWS bucket or a new one.
Complete the configuration. The inventory generation process will start within AWS within 24 hours of the first report.
Return to Infrastructure > Storage Monitoring to see your bucket(s) appear.
You can also set up Storage Monitoring using the provided CloudFormation templates. This process involves two steps:
This template configures your existing S3 bucket to generate inventory reports, which Datadog uses to generate detailed metrics about your bucket prefixes.
Download the source-bucket-inventory-cfn.yaml template.
In AWS CloudFormation, click Create stack in the top right corner and select With existing resources (import resources).
In the Specify template step, select Upload a template file.
Click Choose file and select the source-bucket-inventory-cfn.yaml
file, then click Next.
Enter the bucket name you want AWS to start generating inventories for, and click Next.
Fill in the required parameters:
Optional parameters:
/
)Note: This CloudFormation template can be rolled back, but rolling back doesn’t delete the created resources. This is to ensure the existing bucket doesn’t get deleted. You can manually delete the inventory configurations by going on the Management tab in the bucket view.
Note: Review Amazon S3 pricing for costs related to inventory generation.
This template creates two IAM policies:
Download the cloud-inventory-policies-cfn.yaml template.
In AWS CloudFormation, click Create stack in the top right corner and select With new resources (standard).
In the Specify template step, select Upload a template file.
Click Choose file and select the cloud-inventory-policies-cfn.yaml
file, then click Next.
Fill in the required parameters:
Optional parameters:
/
)After completing the CloudFormation setup, fill out the post-setup form with the following required information:
You can use the Terraform aws_s3_bucket_inventory resource to set up Storage Monitoring.
The following example shows how to enable daily inventory on an S3 bucket for Datadog monitoring. To use this example:
<MY_MONITORED_BUCKET>
with the name of the bucket to be monitored.<MY_INVENTORY_DESTINATION>
with the name of the bucket that receives your inventory files.<DESTINATION_ACCOUNT_ID>
with the AWS account ID that owns the destination bucket.resource "aws_s3_bucket" "monitored" {
bucket = "<MY_MONITORED_BUCKET>"
}
resource "aws_s3_bucket" "inventory_destination" {
bucket = "<MY_INVENTORY_DESTINATION>"
}
resource "aws_s3_bucket_inventory" "daily_inventory" {
bucket = aws_s3_bucket.monitored.id
name = "datadog-daily-inventory"
included_object_versions = "All"
schedule {
frequency = "Daily"
}
destination {
bucket {
account_id = "<DESTINATION_ACCOUNT_ID>"
bucket_arn = aws_s3_bucket.inventory_destination.arn
format = "CSV"
prefix = "datadog-inventory/"
}
}
optional_fields = [
"Size",
"StorageClass",
"LastModifiedDate"
]
}
Notes:
optional_fields
section is recommended for Datadog prefix metrics.Once the inventory configuration is set up and your inventory files begin appearing in the destination bucket, fill out this form to provide your S3 configuration details. This allows Datadog to begin generating prefix metrics for your storage.
If you need to manage multiple buckets, complex inventory policies, encryption, or cross-account setups, you can use the terraform-aws-s3-bucket module.
datadog-inventory/
in the example) is correct and accessible to Datadog.To manually set up the required Amazon S3 Inventory and related configuration, follow these steps:
Follow the steps in the Amazon S3 user guide to add a bucket policy to your destination bucket allowing write access (s3:PutObject
) from your source buckets.
Ensure the Datadog AWS integration role has s3:GetObject
and s3:ListObjects
permissions on the destination bucket. These permissions allow Datadog to read the generated inventory files.
For each bucket you want to monitor:
destination-bucket
, enter s3://your-destination-bucket
Note: If you want to use a prefix on the destination bucket, add this as wellNote: Review Amazon S3 pricing for costs related to inventory generation.
After completing the above steps, fill out the post-setup form with the following required information:
If you have already configured S3 inventory for the buckets you want to monitor, choose one of the following options:
To verify your setup:
If you encounter any issues or need assistance:
The process involves the following steps:
To collect Google Cloud Storage metrics from your Google Cloud project, install the Google Cloud integration in Datadog. Enable Resource Collection for the project containing the buckets you want to monitor. Resource Collection allows Datadog to associate your buckets’ labels with the metrics collected through storage monitoring.
Note: While you can disable specific metric namespaces, keep the Cloud Storage namespace (gcp.storage) enabled.
Enable the Storage Insights API in your Google Cloud project.
After enabling the Storage Insights API, a project-level service agent is created automatically with the following format: service-PROJECT_NUMBER@gcp-sa-storageinsights.iam.gserviceaccount.com
The service agent requires these IAM roles:
roles/storage.insightsCollectorService
on the source bucket (includes storage.buckets.getObjectInsights and storage.buckets.get permissions)roles/storage.objectCreator
on the destination bucket (includes the storage.objects.create permission)You can create an inventory report configuration in multiple ways. The quickest methods use the Google Cloud CLI or Terraform templates. Regardless of the method, ensure the configuration:
"bucket", "name", "project", "size", "updated", "storageClass"
'\n'
as the delimiter and ','
as the separator<BUCKET>/{{date}}
, where <BUCKET>
is the monitored bucket-nameUse the Google Cloud CLI to run the following command:
gcloud storage insights inventory-reports create <SOURCE_BUCKET_URL> \
--no-csv-header \
--display-name=datadog-storage-monitoring \
--destination=gs://<DESTINATION_BUCKET>/<SOURCE_BUCKET>/{{date}}> \
--metadata-fields=project,bucket,name,size,updated,storageClass \
--schedule-starts=<YYYY-MM-DD> \
--schedule-repeats=<DAILY|WEEKLY> \
--schedule-repeats-until=<YYYY-MM-DD>
Copy the following Terraform template, substitute the necessary arguments, and apply it in the Google Cloud project that contains your bucket.
locals {
source_bucket = "" # The name of the bucket you want to monitor
destination_bucket = "" # The bucket where inventory reports are written
frequency = "" # Possible values: Daily, Weekly (report generation frequency)
location = "" # The location of your source and destination buckets
}
data "google_project" "project" {
}
resource "google_storage_insights_report_config" "config" {
display_name = "datadog-storage-monitoring"
location = local.location
frequency_options {
frequency = local.frequency
start_date {
day = "" # Fill in the day
month = "" # Fill in the month
year = "" # Fill in the year
}
end_date {
day = "" # Fill in the day
month = "" # Fill in the month
year = "" # Fill in the year
}
}
csv_options {
record_separator = "\n"
delimiter = ","
header_required = false
}
object_metadata_report_options {
metadata_fields = ["bucket", "name", "project", "size", "updated", "storageClass"]
storage_filters {
bucket = local.source_bucket
}
storage_destination_options {
bucket = google_storage_bucket.report_bucket.name
destination_path = "${local.source_bucket}/{{date}}"
}
}
depends_on = [
google_storage_bucket_iam_member.admin
]
}
resource "google_storage_bucket" "report_bucket" {
name = local.destination_bucket
location = local.location
force_destroy = true
uniform_bucket_level_access = true
}
resource "google_storage_bucket_iam_member" "admin" {
bucket = google_storage_bucket.report_bucket.name
role = "roles/storage.admin"
member = "serviceAccount:service-${data.google_project.project.number}@gcp-sa-storageinsights.iam.gserviceaccount.com"
}
You can allow Datadog to handle the inventory report configuration by providing the proper permissions to your service account:
roles/storageinsights.Admin
roleroles/storage.insightsCollectorService
roles/storage.ObjectViewer
roles/storage.objectCreator
roles/storage.insightsCollectorService
Alternatively, you can create a custom role specifically for Datadog with these required permissions:
storage.buckets.get
storage.objects.list
storage.buckets.getObjectInsights
storage.buckets.get
storage.objects.create
storageinsights.reportConfigs.get
storageinsights.reportConfigs.create
storageinsights.reportConfigs.list
storageinsights.reportConfigs.update
storage.objects.get
storageinsights.reportDetails.get
storageinsights.reportDetails.list
After granting the necessary permissions, Datadog can create the inventory report configuration with your setup details.
Grant Datadog permission to access and extract the generated inventory reports from Google. This permission should be on the destination bucket where the inventory reports are stored.
roles/storage.objectViewer
)After completing the setup steps, fill out the post-setup form with the following required information:
To verify your setup:
If you encounter any issues or need assistance:
Enable inventories for the selected storage accounts in each subscription by running the following script in your Azure Cloud Shell:
curl https://datadogstoragemonitoring.blob.core.windows.net/scripts/install.sh \
| bash -s -- <CLIENT_ID> <SUBSCRIPTION_ID> <COMMA_SEPARATED_STORAGE_ACCOUNT_NAMES>
Before running the script, set your shell environment to Bash and replace the various placeholder inputs with the correct values:
<CLIENT_ID>
: The client ID of an App Registration already set up using the Datadog Azure integration<SUBSCRIPTION_ID>
: The subscription ID of the Azure subscription containing the storage accounts<COMMA_SEPARATED_STORAGE_ACCOUNT_NAMES>
: A comma-separated list of the storage accounts you want to monitor (for example, storageaccount1,storageaccount2
)For Each Storage Account you wish to monitor, follow all of the steps here:
datadog-storage-monitoring
.After you finish with the above steps, fill out the post-setup form.