library
turbot/gcp_thrifty

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 to true as the default is false.
  • compute_instances_with_low_utilization_trigger_schedule should be set to your desired running schedule
  • compute_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 zone
from
gcp_compute_instance as i
left join compute_instance_utilization as u on u.name = i.name
where
avg_max is null
or avg_max < 20;

Schedule

15m