Optimization Opportunities with ‘Clickable Actions’
Actionable Advisories alerts users via emails of possible optimization opportunities and more importantly allow them to take immediate actions to execute on those recommendations. This option provides full control to the customers and provides semi-automated actions with all the added value of Dynamic resource optimization. Advisories will be in the form of daily emails, with clickable links to optimization actions.
Customizable – disable/enable advisory types, or advisories on specific resources
Actionable – Recommend appropriate, meaningful actions that are clickable and automated
Low noise – by being meaningful and specific
Specific – about why an advisory is reported
Broad analysis – of all wasted, unused resources with details (Tags, etc.)
Email alerts – periodic (once a day) or generated on demand
- EC2 scheduling based on machine learning
- EC2 instance switching based on machine learning
- EBS IOPS provisioning based on machine learning
- Rogue Instances or Inactive EC2 Instances
- EC2 Reserved Instance recommendations
- EC2 Instances underutilized
- EBS Cross Type Optimization (IO1 to GP2, GP2 to SC1/ST1)
- Unattached EBS volumes
- EBS Volume snapshots which are older than specified time
- S3 Buckets with no expiration dates
- DynamoDB tables over-provisioned
- Unused Elastic IP Addresses
- Over-provisioned RDS Instances
Customizable: Advisories can now be customized by specifying various metrics used to identify advisories. Eg. Max read/write capacity to be used to determine DynamoDB over-provisioned advisories. Age of snapshots in days to identify old snapshots, High/low CPU utilization to be used to determine underutilized EC2 instances etc.
Applications level categorization: Customers can now define ‘Applications’ based on tags and get advisory reports based on applications across multiple AWS accounts allowing customers to manage and optimize costs at Applications level.
Account level categorization: For customers with multiple accounts, Advisories are automatically categorized under each account for easier management.
Filters: For easier management, advisories can be filtered based on advisory types, Accounts, or products. Advisories can also be searched based on any keywords or tags used on resources.
Ignore Advisories: In scenarios where a user decides to keep a resource over-provisioned future advisories can be marked to be ignored so that no further advisories are generated.
Advisory of the week
EBS Volume snapshots older than specified days
Elastic Block Store (EBS) is block storage resource typically used by high-performance applications such as databases. AWS provides a mechanism to take snapshots of EBS volumes for backup and other purposes. snapshots are stored on S3. Data from snapshots can be brought back online by creating volumes from snapshots. Snapshots are also created when customers create AMIs. AWS charges customers based on the actual space utilized on a volume. For e.g. Snapshot of a 100GB volume which only has 10GB of data will only occupy 10GB of S3 space.
It is a common scenario that customers create snapshots and forget to delete them, adding to the cost. This advisory checks for snapshots that are older than a specified number of days (90 days is default). This allows customers to ensure that any old snapshots that are no longer needed are identified and deleted.
Supported actions are 1) Delete 2) Ignore.
This advisory is customizable and users may specify the age of the snapshot the advisory should use to make the recommendations.
Over provisioned DynamoDB Tables
Like most of AWS services, customers are required to provision read/write capacities they expect to utilize when provisioning DynamoDB resources. AWS charges customers based on the capacities provisioned. Often customers over provision read/write capacities, resulting in wasted spending. This advisory analyzes read/write capacity utilization of DynamoDB tables and alerts customers on over provisioned tables. Alerts are sent via emails with clickable actions and are also accessible from the Web GUI. Available actions for this advisory are 1) Adjust capacity to x 2) Ignore. On selecting ‘Adjust capacity’ and executing the action will adjust the provisioning the optimum level, reducing cost.
- Provisioned Reads (Report only if the provisioned capacity is above the specified value)
- Provisioned Writes (Report only if the provisioned capacity is above the specified value)
- Days to Check: Number of days worth of data that should be analyzed to make a recommendation
EBS IOPS Schedule Recommendation
Elastic Block Store (EBS) is block storage resource typically used by high-performance applications such as databases. AWS offers EBS in many flavors with different cost and performance characteristics. Broadly, EBS storage can be provisioned based on capacity (gp2, st1, st1) or performance (io1). For IO1 type storage, customers pay for provisioned performance or IOPS in addition to provisioned capacity. For e.g. a customer may provision a volume capable of 10,000 IOPS and AWS will guarantee that performance.
As is the case with most AWS resources, customers pay for provisioned EBS IOPS and not used IOPS. You may provision a 10,000 IOPS volume but may use the full capacity only for short periods of time a day (or may not use the max provisioned capacity at all). Significant cost savings can be achieved if IOPS provisioning is adjusted multiple times a day to match the utilization.
Consider the following utilization for a volume with say 10,000 provisioned IOPS:
- 9am-11am – Peak utilization 9,000 IOPS
- 11am-4pm – Peak utilization 2,000 IOPS
- 4pm-6pm – Peak utilization 3,000 IOPS
- 6pm-9am – Peak utilization 5,00 IOPS
By scheduling the EBS IOPS using the schedule above can result in significant cost savings! This advisory uses machine learning to identify recommended IOPS schedule so that customers don’t have to try to figure out the best utilization schedule. Customers are then allowed to convert the recommendations into an actual schedule with the click of a mouse and from then on software manages the IOPS provisioning based on the recommended schedule.
Over-provisioned RDS Instances
Amazon Relational Database Service (RDS) is a fully managed relational database service offered by AWS. It is easy to set up, operate and scales easily. AWS manages the service such that users don’t need to worry about typical database administration tasks. Six different database engines (Aurora, PostgreSQL, MySQL, MariaDB, Oracle, Microsoft SQL) are supported. RDS instances can be configured using different compute instance types with varying CPU/Memory characteristics.
As is the case with most public cloud resources and services, customers need to know the application requirements and decide the type of the database instance and the amount of storage space to be provisioned (Aurora is an exception where the storage capacity is automatically provisioned). Typically in every instance family, cost and the CPU/memory capabilities double with every step up. For e.g. on-demand cost of MySQL version of db.m4.4xlarge (which is $1.401/hour) is twice as much as db.m4.2xlarge. So, an incorrectly provisioned DB instance can waste a significant amount of money.
Similarly, AWS charges for the database storage based on provisioned capacity (except for Aurora). Storage can be provisioned as general purpose SSD or Provisioned IOPS SSD. Over provisioning of both capacity and performance can result in significantly wasted spending.
FittedCloud RDS advisory monitors RDS utilization and alerts customers on potential cost savings opportunities. Following underutilized scenarios are identified and reported with appropriate actions attached.
- RDS instances with no connections for a specified number of days. If there have been no connections to the database, it is an indication that the database may not really be in use, could be created for test purposes and could be deleted.
- RDS instances with low CPU utilization. This indicates that the DB instance could be scaled down to a lower instance type without impacting application performance and reduce cost.
Supported actions are ‘Stop’ (stops the DB instance), ‘Adjust’ (switches to a lower instance type), or ‘ignore’ (in which case no advisories will be generated on the same instance in the future.
Cross-Type EBS Optimization
Elastic Block Store (EBS) is block storage resource typically used by high-performance applications such as databases. AWS offers EBS in many flavors with different cost and performance characteristics. Broadly, EBS storage can be provisioned based on capacity (gp2, st1, st1) or performance (io1).
Type of the volume provisioned is usually determined by the need. For e.g. an application that requires guaranteed performance would provision IO1. For general high-performance applications, GP2 is a good choice and so on. Often customers find that they are not utilizing the full capabilities offered by the selected type. For. e.g. GP2 offers 3 IOPS per GB. A 500GB GP2 volume would provide 1500 IOPS (this is not considering the burst performance up to 3000 IOPS). If your application never really uses 1500 IOPS, it would make sense to change the type to SC1 or ST1. ST1 offers 500 IOPS (at up to 1MB block size) and SC1 offers 250 IOPS (at up to 1MB blocksize). So, if your application uses below 250 IOPS, consider using SC1, which will give you a cost savings of 75%! If your application uses below 500 IOPS, consider using ST1, which will give you a cost savings of 55%! (Note: ST1 and SC1 requires a minimum capacity of 500GB)
This advisory analyzes the utilization of provisioned EBS and makes recommendations to reduce cost while maintaining application performance.
- Reduce provisioned IOPS
- Convert any IO1 to GP2
- Covert GP2 to ST1 or SC1
- Covert ST1 to SC1
Actions available depend on the type of the advisory, but fall under the categories of ‘reducing IOPS’ or ‘converting’ to a low-cost type.