Provisioned Redshift clusters with under one database connection on average and peak for 30 days
What does ZopNight detect here?
ZopNight flags provisioned Amazon Redshift clusters whose `DatabaseConnections` average and maximum both stayed below 1 across the 30-day window, with CPU averaging under 5% when that data exists. Pausing suspends on-demand compute billing while storage continues, and ZopNight counts 80% of the cluster cost as the saving.
Signal and threshold
| Field | Value |
|---|---|
| Rule IDs | RC-099 |
| Category | schedule |
| Severity | medium |
| Metric | DatabaseConnections, CPUUtilization (AWS/Redshift) |
| Threshold | connections avg and max < 1, CPU avg < 5% |
| Evaluation window | 30d |
| Source | ZopNight |
| Permissions used | redshift:DescribeClusters · cloudwatch:GetMetricStatistics |
Where it applies
Paused clusters pay only for storage
Provisioned Redshift is billed by node type and node count for as long as the cluster runs. The pause and resume documentation says that while a cluster is paused, on-demand billing is suspended and only the cluster’s storage incurs charges. A cluster that no client has connected to in a month is paying full node rates for nothing.
Checking connections and CPU
aws redshift describe-clusters \ --query 'Clusters[].[ClusterIdentifier,NodeType,NumberOfNodes,ClusterStatus]' --output table
for m in DatabaseConnections CPUUtilization; do aws cloudwatch get-metric-statistics --namespace AWS/Redshift --metric-name $m \ --dimensions Name=ClusterIdentifier,Value=analytics-dev \ --start-time 2026-08-26T00:00:00Z --end-time 2026-09-25T00:00:00Z \ --period 86400 --statistics Average MaximumdoneConditions for an idle finding
- ZopNight has at least 7 days of
DatabaseConnectionsdata for the cluster. - Both the average and the maximum are below 1. A floor of 1 rather than exactly 0 tolerates the odd monitoring or health-check connection.
- If CPU data is present and covers the window, average
CPUUtilizationis below 5%. - The cluster has a known monthly cost.
Signals that clear a cluster
An average CPU of 5% or more overrides the empty connection count. That protects clusters that compute without sessions, such as datashare producers. The CPU maximum is deliberately ignored, because idle clusters still run vacuum, analyze and backup jobs that spike CPU briefly. Missing or short connection data means no finding, and the rule never shows a $0 placeholder.
Fixed compute share of the bill
saving = monthly cluster cost x 0.80The 80% is a conservative estimate of the compute share, since paused clusters keep paying for storage. It is not measured per cluster. A fully idle cluster has no usage pattern to schedule around, so the lever is a manual pause rather than a cron.
Pausing an unused cluster
- Confirm that no scheduled queries, ETL jobs or dashboards depend on the cluster.
- Pause it:
aws redshift pause-cluster --cluster-identifier analytics-dev. Redshift takes a snapshot as it pauses, and the pause typically completes within 15 minutes. - Resume when needed with
aws redshift resume-cluster --cluster-identifier analytics-dev. - If it stays unused, take a final snapshot and delete it, or move occasional workloads to Redshift Serverless.