standard
turbot/azure_thrifty
- Detect & correct App Service plans if unused
- Detect & correct Compute disks attached to stopped VMs
- Detect & correct Compute unattached disks
- Detect & correct Compute disks with high IOPS
- Detect & correct Compute disks with low usage
- Detect & correct Compute snapshots exceeding max age
- Detect & correct Compute snapshots with premium storage
- Detect & correct Compute virtual machines
- Detect & correct Compute virtual machine with low utilization
- Detect & correct Compute disks exceeding max size
- Detect & correct HDInsight clusters exceeding max age
- Detect & correct Kubernetes clusters exceeding max age
- Detect & correct Kusto clusters exceeding max age
- Detect & correct Kusto clusters without autoscaling
- Detect & correct Monitor log profiles without retention policy
- Detect & correct Network application gateways without autoscaling
- Detect & correct Network load balancers if unused
- Detect & correct Network NAT gateways if unused
- Detect & correct Network unattached public IPs
- Detect & correct Network virtual network gateways if unused
- Detect & correct Service Fabric clusters exceeding max age
- Detect & correct SQL databases exceeding max age
- Detect & correct Storage accounts without lifecycle policy
- Detect & correct Compute virtual machine scale sets if unused
Get Involved
Version
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 totrue
as the default isfalse
.compute_disks_with_low_usage_trigger_schedule
should be set to your desired running schedulecompute_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 connfrom 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_idwhere u.avg_max <= 90;
Schedule
15m
Tags
category = Cost
class = unused
plugin = azure
service = Azure/Compute