library
turbot/gcp_thrifty

Detect & correct compute disks with low usage

Overview

Compute disks with low usage may be indicative that they're no longer required, these should be reviewed.

This query trigger detects compute disks 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_disks_with_low_usage_trigger_enabled should be set to true as the default is false.
  • compute_disks_with_low_usage_trigger_schedule should be set to your desired running schedule
  • compute_disks_with_low_usage_default_action should be set to your desired action (i.e. "notify" for notifications or "delete_disk" to delete the disk or "snapshot_and_delete_compute_disk" to snapshot and delete the disk).

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 disk_usage as (
select
project,
location as zone,
name as disk_name,
_ctx,
round(avg(max)) as avg_max,
count(max) as days
from
(
select
project,
name,
location,
_ctx,
cast(maximum as numeric) as max
from
gcp_compute_disk_metric_read_ops_daily
where
date_part('day', now() - timestamp) <= 30
union all
select
project,
name,
location,
_ctx,
cast(maximum as numeric) as max
from
gcp_compute_disk_metric_write_ops_daily
where
date_part('day', now() - timestamp) <= 30
) as read_and_write_ops
group by
name,
project,
_ctx,
location
)
select
concat(disk_name, ' [', zone, '/', project, ']') as title,
disk_name,
project,
zone,
_ctx ->> 'connection_name' as cred
from
disk_usage
where
avg_max < 100;

Schedule

15m