Cloud Cost Recommendations

Overview

Cloud Cost Recommendations provides recommendations on reducing your cloud spending by optimizing the usage of your cloud resources. Datadog generates a set of recommendations by combining your observability data with your underlying cloud provider billing data to identify orphaned, legacy, or over-provisioned cloud resources.

Recommendations are run on a daily basis and are automatically refreshed in your account as soon as the recommendations are released.

  • For all resources, cloud cost metrics are also pulled for that resource
  • For all AWS resources besides Kubernetes and EC2, AWS metrics are also pulled from AWS CloudWatch
Overview tab with potential monthly savings, potential annual savings, and total number of open cases on the Cloud Cost Recommendations page

You can see the detailed logic for each recommendation type, along with observability metrics or cost data shown on this page.

Recommendation categories

Below are the available cloud cost recommendation categories and their descriptions.

Recommendation CategoryDescription
TerminateResources with signals that the resource is unused or very low utilization signals. Consider terminating or deleting these resources to reduce your costs.
MigrateResources with moderately low utilization signals or other inefficiencies. Consider adjusting the instance type or other parameters.
DownsizeResources that are under-utilized or over-provisioned. Consider adjusting the size or other parameters to reduce costs.
PurchaseResources with on-demand charges and extended uptime. Purchasing a reservation or Savings Plan can reduce the amortized cost of the resource.

Prerequisites

The following are requirements necessary to receive Cloud Cost recommendations:

Setup

For each cloud account that you would like to receive recommendations for:

  1. Configure Cloud Cost Management to send billing data to Datadog.
    • For Azure, this requires using the App Registration method to collect billing data.
  2. Enable resource collection for recommendations.
    • For AWS, enable resource collection in the Resource Collection tab on the AWS integration tile.
    • For Azure, enable resource collection with the appropriate integration. If your organization is on the Datadog US3 site, the Azure Native Integration enables this automatically through metrics collection. For all other sites, enabling resource collection within the Azure integration tile is required.
  3. Install the Datadog Agent (required for Downsize recommendations).

Note: Cloud Cost Recommendations supports billing in customers’ non-USD currencies.

Recommendation action-taking

You can act on recommendations to save money and optimize costs. Cloud Cost Recommendations support Jira, 1-click Workflow Automation, and Datadog Case Management. Unused EBS and GP2 EBS volume recommendations also support 1-click Workflow Automation. See the following details for each action-taking options:

  • Jira: Jira issue creation is available in both the recommendation side panel and the “Active Recommendations” list. You can create a Jira issue by clicking “Create Jira issue” in the side panel or by selecting multiple recommendations in the “Active Recommendations” list. Created Jira issues are automatically tagged to indicate their connection to a cost recommendation and include a link back to the referenced recommendation.
  • 1-click Workflow Automation actions: Actions are available for a limited set of recommendations, allowing users to execute suggested actions, such as clicking “Delete EBS Volume”, directly within Cloud Cost Management.
  • Datadog Case Management: Users can go to the recommendation side panel and click “Create Case” to generate a case to manage and take action on recommendations.

Recommendation and resource descriptions

Recommendation CategoryCloud ProviderResource TypeRecommendation TypeRecommendation DescriptionRecommendation Prerequisites
DownsizeAWSAutoscaling GroupDownsize Autoscaling GroupAn autoscaling group with less than 5% CPU and 10% memory usage.Datadog Agent
MigrateAWSAutoscaling GroupMigrate Legacy Autoscaling Group instances to new typesAn autoscaling group that includes legacy instance types.
TerminateAWSDynamoDBDelete DynamoDB Global Secondary IndexA DynamoDB table’s Global Secondary Index (GSI) has 0 consumed reads.
TerminateAWSDynamoDBDelete DynamoDB TableA DynamoDB table has 0 consumed reads and 0 consumed non-replica writes.
TerminateAWSDynamoDBDelete Extra On-Demand BackupsA DynamoDB table has charges for more than 2 on-demand backups.
DownsizeAWSDynamoDBDownsize DynamoDB CapacityA provisioned DynamoDB table using less than 80% of its read and write capacity more than 80% of the time.
MigrateAWSDynamoDBMigrate DynamoDB to Infrequent Access Table ClassMigrating to the Infrequent Access (IA) table class offers more potential savings from storage rates compared to the additional costs from capacity rates.
MigrateAWSDynamoDB TableMigrate DynamoDB to On-Demand Capacity ModeA provisioned DynamoDB table has an hourly read and write capacity consumption below 18% at least once in the last two weeks.
MigrateAWSDynamoDB TableMigrate DynamoDB to Provisioned Capacity ModeAn on-demand DynamoDB table has an hourly read and write capacity consumption that is always greater than 18%.
MigrateAWSDynamoDB TableMigrate DynamoDB to Standard Table ClassMigrating to the Standard table class offers potential savings from capacity rates compared to the additional costs from storage rates, or it uses the Standard table class’ free tier for storage.
DownsizeAWSEBS VolumeDownsize EBS Volume Provisioned IOPSAn EBS volume using less than 80% of the provisioned IOPS for reads and writes.Amazon EC2 integration
DownsizeAWSEBS VolumeDownsize EBS Volume Provisioned ThroughputAn EBS volume using less than 80% of the provisioned throughput for reads and writes.Amazon EC2 integration
DownsizeAWSEBS VolumeDownsize EBS volume storage capacityAn EBS volume with less than 20% of its storage capacity used.Amazon EC2 integration
MigrateAWSEBS VolumeMigrate EBS Volume from GP2 to GP3EBS volumes that are GP2 and can be upgraded to GP3 for cost reduction and performance improvement.
MigrateAWSEBS VolumeMigrate EBS Volume from IO1 to GP3EBS volumes that are IO1 and can be upgraded to GP3 for cost reduction and performance improvement.
TerminateAWSEBS VolumeTerminate Unattached EBS VolumeVolume that is not attached to an EC2 instance.
TerminateAWSEBS VolumeTerminate Unused EBS VolumeVolume that has no read or write activity.
TerminateAWSElastic IPDelete Idle Elastic IPElastic IP addresses with idle charges in your AWS cost and usage report.
DownsizeAWSEC2 InstanceDownsize EC2 Instance Running MemcachedEC2 instance running memcached with less than 25% user CPU and is not containerized.Memcache Integration
DownsizeAWSEC2 InstanceDownsize EC2 Instance Running MySQLEC2 instance running MySQL with less than 25% user CPU and greater than 25% usable memory and is not containerized nor a replica.MySQL Integration
DownsizeAWSEC2 InstanceDownsize EC2 Instance Running PostgresEC2 instance running Postgres with less than 25% user CPU and greater than 25% usable memory and is not containerized nor a replica.Postgres Integration
DownsizeAWSEC2 InstanceDownsize EC2 Instance Running RedisEC2 instance running Redis with less than 25% user CPU and is not containerized, a leader, a follower, nor a shard.Redis Integration
TerminateAWSEC2 InstanceTerminate EC2 instance running MemcachedEC2 instance running Memcached with 0 keyspace hits and is not containerized.Memcache Integration
TerminateAWSEC2 InstanceTerminate EC2 instance running MySQLEC2 instance running MySQL with less than 1 concurrent connection and is not containerized nor a replica.MySQL Integration
TerminateAWSEC2 InstanceTerminate EC2 instance running PostgresEC2 instance running Postgres with less than 1 concurrent connection and is not containerized nor a replica.Postgres Integration
TerminateAWSEC2 InstanceTerminate EC2 instance running RedisEC2 instance running Redis with 0 keyspace hits and is not containerized, a leader, a follower, nor a shard.Redis Integration
TerminateAWSECR RepositoryDelete ECR RepositoryECR Repository with 0 image pulls.
TerminateAWSECR RepositoryDelete old ECR ImagesECR Image bytes older than 180 days.
DownsizeAWSECS Task DefinitionDownsize ECS Task SizeAn ECS task using less than 50% of its requested CPU or memory.Container Monitoring
PurchaseAWSElastiCache ClusterPurchase Reserved ElastiCache NodeAn ElastiCache node older than 45 days is still charged with on-demand rates.
TerminateAWSElastiCache ClusterTerminate ElastiCache ClusterElastiCache Redis Cluster with 0 cache hits and 0 replication bytes.
TerminateAWSClassic Load BalancerTerminate Classic Load BalancerClassic Elastic Load Balancer with no active connections that is not attached to an EC2 instance.
TerminateAWSApplication Load BalancerTerminate Application Load BalancerAn application load balancer with no traffic being processed.
TerminateAWSNetwork Load BalancerTerminate Network Load BalancerA network load balancer with 0 processed bytes.
TerminateAWSMQ BrokerTerminate MQ BrokerAn MQ broker with 0 connections.
TerminateAWSOpenSearchDelete OpenSearch DomainAn OpenSearch domain with 0 connections.
PurchaseAWSOpenSearch DomainPurchase Reserved OpenSearch InstanceAn OpenSearch instance older than 45 days is still charged with on-demand rates.
DownsizeAWSRDS InstanceDownsize RDS Instance Provisioned IOPSRDS instances using less than 80% of provisioned IOPS over the past two weeks.
MigrateAWSRDS InstanceMigrate the RDS Instance EngineAn RDS running an engine version that is no longer supported and incurring extended support charges
PurchaseAWSRDS InstancePurchase Reserved RDS InstanceAn RDS instance older than 45 days is still charged with on-demand rates.
TerminateAWSRDS InstanceTerminate Unused RDS InstanceRDS instance with 0 database connections and 0 replica lag.
PurchaseAWSRedshiftPurchase Reserved Redshift Cluster NodeRedshift cluster node older than 45 days is still charged with on-demand rates.
TerminateAWSRedshiftTerminate Redshift ClusterRedshift cluster with 0 database connections.
TerminateAWSS3 BucketDelete S3 non-current version objectsA standard S3 bucket without a non-current version expiration lifecycle and that does not serve a website contains non-current version storage bytes older than 30 days.Storage Lens
TerminateAWSS3 BucketDelete abandoned S3 multipart uploadsS3 buckets with incomplete multipart uploads older than 7 days that are consuming storage space.Storage Lens
MigrateAWSS3 BucketTransition S3 IA and Glacier objects to Intelligent-TieringA bucket has large early deletion charges.
MigrateAWSS3 BucketTransition S3 Standard objects to Intelligent TieringA bucket’s costs are almost entirely in per-GB standard storage, but GET requests indicate few objects are accessed.
DownsizeAWSNAT GatewayReduce NAT Gateway Cross-Zone TransfersResources that need a NAT gateway should use one that is in the same availability zone, or they can incur unnecessary cross-zone transfer charges.
DownsizeAWSVPC NAT GatewayReduce NAT Within-VPC TransfersResources in the same VPC should avoid communicating with each other through a NAT gateway because that incurs unnecessary NAT gateway processing charges.NPM
TerminateAWSNAT GatewayTerminate NAT GatewayA NAT Gateway that has no bytes sent through it.
TerminateAzureAKS ClusterTerminate AKS ClusterAn AKS cluster with less than 5% CPU usage
PurchaseAzureAzure App ServicePurchase Reservation for App ServiceApp Service older than 45 days is charged with on-demand rates.
DownsizeAzureContainer AppDownsize Container AppA Container App has higher than necessary minimum replicas
TerminateAzureLoad BalancerDelete Load BalancerLoad Balancer with 0 bytes transferred
TerminateAzureManaged DiskDelete Unattached Managed DiskManaged disk is unattached and can be deleted
TerminateAzureManaged DiskDelete Unused Managed DiskManaged disk with no read/write operations, which can be deleted
DownsizeAzureManaged DiskDownsize Managed Disk IOPSManaged disk using less than 80% of the provisioned IOPS.
DownsizeAzureManaged DiskDownsize Managed Disk ThroughputManaged disk using less than 80% of the provisioned throughput.
PurchaseAzureMySQL DatabasePurchase Reservation for MySQLDatabase for MySQL has no reservation coverage and is more than 45 days old
TerminateAzureMySQL DatabaseTerminate Database for MySQLDatabase server with no connections, which can be terminated
PurchaseAzureDatabase for PostgreSQLPurchase Reservation for PostgreSQLDatabase for PostgreSQL has no reservation coverage and is more than 45 days old
TerminateAzureSQL ServerTerminate SQL ServerSQL Server with no connections, which can be terminated
PurchaseAzureSQL Server DatabasePurchase Reservation for SQL Server DatabaseSQL server database has no reservation coverage and is more than 45 days old
TerminateAzureSQL Server DatabaseTerminate SQL Server DatabaseSQL Server Database with no successful connections and very minimal CPU, which can be terminated
PurchaseAzureSQL Server Managed InstancePurchase Reservation for SQL Server Managed InstancePurchase reservation for SQL Server Managed Instance with no reservation coverage and is more than 45 days old
TerminateAzureVM InstanceTerminate VM InstanceVM instance with less than 5% user CPU and over 90% usable memoryDatadog Agent
PurchaseGCPCloud Run JobPurchase Flexible CUD for Cloud Run JobCloud Run Jobs that benefit from flexible committed use discounts.
TerminateGCPCompute AddressDelete Unused Compute IP AddressUnused compute IP addresses can be deleted.
TerminateGCPCompute DiskDelete Unattached Compute DiskCompute disks that are unattached and can be deleted.
TerminateGCPCompute DiskDelete Unused Compute DiskCompute disks that are unused and can be deleted.
TerminateGCPCompute Global AddressDelete Unused Compute Global IP AddressUnused compute global IP addresses can be deleted.
DownsizeGCPCloudSQL InstanceDownsize CloudSQL DatabaseCloudSQL instances that are over-provisioned and can be downsized.
PurchaseGCPCloudSQL InstancePurchase CUD for Cloud SQLCloudSQL instances that benefit from committed use discounts.
TerminateGCPCloudSQL InstanceTerminate CloudSQL InstanceCloudSQL instances with minimal usage that can be terminated.
TerminateGCPStorage BucketDelete Non-Current Cloud Storage ObjectsCloud Storage buckets that benefit from lifecycle rules to automatically delete non-current object versions.
MigrateGCPStorage BucketTransition Cloud Storage Bucket to AutoclassObjects in the storage bucket can be automatically migrated to archival tiers for better rates.
DownsizeAWSKubernetes DeploymentDownsize DeploymentContainers are using only a fraction of their requested CPU or memory.Datadog Agent
DownsizeAzureKubernetes DeploymentDownsize DeploymentContainers are using only a fraction of their requested CPU or memory.Datadog Agent
DownsizeGCPKubernetes DeploymentDownsize DeploymentContainers are using only a fraction of their requested CPU or memory.Datadog Agent

Further reading