standard
turbot/azure_thrifty

Detect & correct Compute disks with low usage

Overview

Compute disks can be quite costly to retain, it is also likely that after a certain point in time they're no longer required and should be cleaned up to prevent further costs.

This query trigger detects compute disks with low 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).

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
name,
resource_group subscription_id,
round(avg(max)) as avg_max,
count(max) as days
from
(
select
name,
resource_group,
subscription_id,
cast(maximum as numeric) as max
from
azure_compute_disk_metric_read_ops_daily
where
date_part('day', now() - timestamp) <= 30
union all
select
name,
resource_group,
subscription_id,
cast(maximum as numeric) as max
from
azure_compute_disk_metric_write_ops_daily
where
date_part('day', now() - timestamp) <= 30
) as read_and_write_ops
group by
name,
resource_group,
subscription_id
)
select
concat(
d.id,
' [',
d.resource_group,
'/',
d.subscription_id,
']'
) as resource,
d.name as disk_name,
u.avg_max,
d.name || ' averaging ' || avg_max || ' read and write ops over the last ' || days / 2 || ' days.' as title,
u.resource_group,
u.subscription_id,
d.sp_connection_name as conn
from
disk_usage as u
left join azure_compute_disk as d on u.name = d.name
left join azure_subscription as sub on sub.subscription_id = d.subscription_id
where
u.avg_max <= 90;

Schedule

15m

Tags

category = Cost
class = unused
plugin = azure
service = Azure/Compute