cloudfront_distribution_pricing_classcw_log_group_without_retentiondynamodb_stale_dataebs_volumes_not_using_gp3ec2_application_lb_unusedec2_classic_lb_unusedec2_gateway_lb_unusedec2_network_lb_unusedec2_reserved_instance_lease_expiration_daysecs_cluster_low_utilizationecs_service_without_autoscalingelasticache_long_running_clusteremr_cluster_instance_prev_genemr_cluster_is_idle_30_minutesgp2_ebs_volumeshigh_iops_volumesinactive_ebs_volumesio1_ebs_volumeslambda_function_excessive_timeoutlambda_function_high_error_ratelarge_ebs_volumeslarge_ec2_instanceslong_running_instanceslow_connections_rds_metricslow_iops_volumeslow_usage_ebs_volumeslow_usage_rds_metricslow_utilization_ec2_instancemonthly_service_cost_changesmultiple_cloudtrail_trailsmultiple_regional_trailsold_ebs_snapshotsold_rds_db_instancesprev_gen_rds_instancesredshift_cluster_low_utilizationredshift_cluster_max_ageredshift_cluster_schedule_pause_resume_enableds3_bucket_without_lifecyclestale_cw_log_streamunattached_ebs_volumesunattached_eipsvpc_nat_gateway_unused
Query: low_usage_rds_metrics
Usage
steampipe query aws_thrifty.query.low_usage_rds_metrics
Plugins & Tables
SQL
with rds_db_usage as ( select db_instance_identifier, round(cast(sum(maximum)/count(maximum) as numeric), 1) as avg_max, count(maximum) days from aws_rds_db_instance_metric_cpu_utilization_daily where date_part('day', now() - timestamp) <= 30 group by db_instance_identifier)select arn as resource, case when avg_max is null then 'error' when avg_max <= $1 then 'alarm' when avg_max <= $2 then 'info' else 'ok' end as status, case when avg_max is null then 'CloudWatch metrics not available for ' || title || '.' else title || ' is averaging ' || avg_max || '% max utilization over the last ' || days || ' days.' end as reason, region, account_idfrom aws_rds_db_instance i left join rds_db_usage as u on u.db_instance_identifier = i.db_instance_identifier;
Controls
The query is being used by the following controls: