library
turbot/gcp_thrifty
- Detect & correct AlloyDB clusters exceeding max age
- Detect & correct long-running AlloyDB instances exceeding max age
- Detect & correct Compute addresses if unattached
- Detect & correct Compute disks attached to stopped instances
- Detect & correct Compute disks exceeding max size
- Detect & correct Compute disks if unattached
- Detect & correct Compute disks with low usage
- Detect & correct Compute engine instances exceeding max age
- Detect & correct Compute engine instances large
- Detect & correct Compute instances with low utilization
- Detect & correct Compute node groups without autoscaling
- Detect & correct Compute snapshots exceeding max age
- Detect & correct Dataproc clusters without autoscaling
- Detect & correct Kubernetes clusters exceeding max age
- Detect & correct GKE clusters without vertical pod autoscaling
- Detect & correct Logging Buckets with high retention period
- Detect & correct Redis instances exceeding max age
- Detect & correct SQL database instances exceeding max age
- Detect & correct SQL DB instances with low connection count
- Detect & correct SQL DB instances with low cpu utilization
- Detect & correct Storage buckets without lifecycle policies
- Detect & correct VPN gateways with no tunnels
Get Involved
Version
Detect & correct compute instances with low utilization
Overview
Compute instances with low utilization may be indicative that they're no longer required, these should be reviewed.
This query trigger detects compute instances with low average usage and then either sends a notification or attempts to perform a predefined corrective action.
Getting Started
By default, this trigger is disabled, however it can be configured by setting the below variables
compute_instances_with_low_utilization_trigger_enabled
should be set totrue
as the default isfalse
.compute_instances_with_low_utilization_trigger_schedule
should be set to your desired running schedulecompute_instances_with_low_utilization_default_action
should be set to your desired action (i.e."notify"
for notifications or"stop_instance"
to stop instance or"stop_downgrade_instance_type"
to stop and downgrade instance type).
Then starting the server:
flowpipe server
or if you've set the variables in a .fpvars
file:
flowpipe server --var-file=/path/to/your.fpvars
Query
with compute_instance_utilization as ( select name, round(cast(sum(maximum) / count(maximum) as numeric), 1) as avg_max, count(maximum) as days from gcp_compute_instance_metric_cpu_utilization_daily where date_part('day', now() - timestamp :: timestamp) <= 30 group by name)select concat(i.name, ' [', i.zone, '/', i.project, ']') as title, i.name as instance_name, i.project as project, i._ctx ->> 'connection_name' as cred, i.zone as zonefrom gcp_compute_instance as i left join compute_instance_utilization as u on u.name = i.namewhere avg_max is null or avg_max < 20;
Schedule
15m