cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Displaying AWS EBS volumes that are near their maximum IOPS

mark_linders
Participant

I was using DQL to create a visualization that displays my EBS volumes and shows how close they are to hitting their maximum IOPS, or list if they are already under high usage. 

I did something like this:

timeseries by:{dt.entity.ebs_volume}, {
  avg_read_iops = avg(dt.cloud.aws.ebs.ops.read),
  avg_write_iops = avg(dt.cloud.aws.ebs.ops.write),
  avg_queue = avg(dt.cloud.aws.ebs.queue)
}
| fieldsAdd total_iops = arraySum(avg_read_iops) + arraySum(avg_write_iops)
| fieldsAdd queue_peak = coalesce(arrayMax(avg_queue), 0.0)
| fieldsAdd flag = if(queue_peak > 5, then: "High Queue",
                 else: if(total_iops >= 2700, then: "High IOPS", else: "Normal"))
| filter flag != "Normal"
| sort total_iops desc

But this takes 2700 as a fixed HIgh IOPS rate.
Now I can get a lot of information about my volumes:

fetch dt.entity.ebs_volume
| fieldsAdd arn, deviceName, entity.name, id, iops, tags, belongs_to[dt.entity.ec2_instance]

 
What I assumed was possible, is that I can use the information value from iops from dt.entity.ebs_volume and calculate if I am for example at 90% of my configured IOPS. Also using something like the entity.name in my graph would be super helpful.

My main goal is as follows:
Display a graph or table with volumes, that are showing they are hitting their configured IOPS limits.

Hope anyone can help me out on this.

0 REPLIES 0

Featured Posts