Watching the Cloud


AWS logo
Amazon announces some welcome additions to their AWS tools.

The promise of auto scaling has been a large part of the Cloud since its inception. There have been 3rd party tools in the Amazon Cloud for awhile, but unfortunately involving some cost in complexity. Amazon’s new tools are a welcome addition. At present they are Beta command line APIs but it’s reasonable to assume they will be incorporated into the AWS Console at some point.

There are three api tool kits in this recent round of announcements:
    Cloud Watch
    Auto Scaling
    Elastic Load Balancing

Cloud Watch tracks a set of parameters for each running instance monitored:
    CPUUtilization
    DiskReadBytes
    DiskReadOps
    DiskWriteBytes
    DiskWriteOps
    NetworkIn
    NetworkOut

Auto Scaling then let’s an administrator set triggers for adjusting the number of EC2 instances in an instance pool to reflect demand. Triggers are based on the monitored parameters.

Elastic Load Balancing provides round robin web call distribution across a set of identical web instances. In addition to ease of administration it keeps an eye on the health of instances in the pool and auto routes traffic around any problem instances that show up.

Here is the summary from Amazon’s website:

  • Amazon CloudWatch – Amazon CloudWatch is a web service that provides monitoring for AWS cloud resources, starting with Amazon EC2. It provides you with visibility into resource utilization, operational performance, and overall demand patterns—including metrics such as CPU utilization, disk reads and writes, and network traffic. To use Amazon CloudWatch, simply select the Amazon EC2 instances that you’d like to monitor; within minutes, Amazon CloudWatch will begin aggregating and storing monitoring data that can be accessed using web service APIs or Command Line Tools.
    Fees: $0.015 per hour for each Amazon EC2 instance monitored which amounts to $10.95 per month for a single instance of any type.
  • Auto Scaling – Auto Scaling allows you to automatically scale your Amazon EC2 capacity up or down according to conditions you define. With Auto Scaling, you can ensure that the number of Amazon EC2 instances you’re using scales up seamlessly during demand spikes to maintain performance, and scales down automatically during demand lulls to minimize costs. Auto Scaling is particularly well suited for applications that experience hourly, daily, or weekly variability in usage. Auto Scaling is enabled by Amazon CloudWatch and available at no additional charge beyond Amazon CloudWatch fees.
    Fees: free to Amazon CloudWatch customers. Of course the usual fees for additional EC2 instances apply.
  • Elastic Load Balancing – Elastic Load Balancing automatically distributes incoming application traffic across multiple Amazon EC2 instances. It enables you to achieve even greater fault tolerance in your applications, seamlessly providing the amount of load balancing capacity needed in response to incoming application traffic. Elastic Load Balancing detects unhealthy instances within a pool and automatically reroutes traffic to healthy instances until the unhealthy instances have been restored. You can enable Elastic Load Balancing within a single Availability Zone or across multiple zones for even more consistent application performance. Amazon CloudWatch can be used to capture a specific Elastic Load Balancer’s operational metrics, such as request count and request latency, at no additional cost beyond Elastic Load Balancing fees.
    Fees: $0.025 per hour for each Elastic Load Balancer, plus $0.008 per GB of data transferred through an Elastic Load Balancer

The api tools can be downloaded here: Developer Tools. Installation involves simply downloading a zip file and unzipping to a convenient subdirectory, where it can be referenced in a setup batch similar to this:
    @echo off
    set EC2_HOME=C:\EC2-Test
    set MONITORING_HOME=C:\EC2-Test\Monitor
    set AUTO_SCALING_HOME=C:\EC2-Test\AutoScaling
    set JAVA_HOME=”C:\Program Files\Java\jdk1.6.0_03″
    set ELB_HOME=C:\EC2-Test\LoadBalance
    set PATH=%PATH%;%EC2_HOME%\bin;%EC2_HOME%\Monitor\bin;%EC2_HOME%\AutoScaling\bin;%EC2_HOME%\LoadBalance\bin
    set EC2_PRIVATE_KEY=C:\EC2-Test\PrivateKey.pem
    set EC2_CERT=C:\EC2-Test\509Certificate.pem

The only problem I ran into was making sure I properly quoted my JAVA_HOME directory to handle the space in its directory name.

Here is a quick look at the –help for each of the apis:
Cloud Watch

mon –help  
Command Name Description
———— ———–
help  
mon-get-stats Returns metric data
mon-list-metrics Returns a list of the metrics
version Prints the version of the CLI tool and the API.

Auto Scaling

as –help  
Command Name Description
———— ———–
as-create-auto-scaling-group Create a new auto scaling group
as-create-launch-config Create a new launch config
as-create-or-update-trigger Creates a new trigger or updates an existing trigger.
as-delete-auto-scaling-group Delete the specified auto scaling group
as-delete-launch-config Delete the specified launch configuration
as-delete-trigger Delete a trigger.
as-describe-auto-scaling-groups Describes the specified auto scaling group(s)
as-describe-launch-configs Describe the specified launch configurations
as-describe-scaling-activities Describe a set of activiti…ties belonging to a group.
as-describe-triggers Describes a trigger including its internal state.
as-set-desired-capacity Set the desired capacity of the auto scaling group
as-terminate-instance-in-auto-scaling-group Terminate a given instance.
as-update-auto-scaling-group Update specified auto scaling group

Elastic Load Balancing

elb –help
Command Name Description
———— ———–
elb-configure-healthcheck Configure the parameters f…tered with a LoadBalancer.
elb-create-lb Create a new LoadBalancer
elb-delete-lb Deletes an existing LoadBalancer
elb-deregister-instances-from-lb Deregisters Instances from a LoadBalancer
elb-describe-instance-health Describes the state of Instances
elb-describe-lbs Describes the state and properties of LoadBalancers
elb-disable-zones-for-lb Remove Availability Zones from an LoadBalancer
elb-enable-zones-for-lb Add Availability Zones to existing LoadBalancer
elb-register-instances-with-lb Registers Instances to a LoadBalancer

Summary:

These new tools round out the AWS Cloud offering with some welcome monitor and control capability. Amazon has to keep up in the ‘ease of use’ area to stay ahead of other Cloud vendors. These continue the trend of adding complexity to cost calculations, but Amazon’s fees seem reasonable compared to dedicated and co-located services. Including tools for auto scaling and load balancing helps administrators keep a handle on costs for maintaining instance pools. Once these tools are incorporated into the AWS Console, administration could fade into development / deployment phases of a project with only minimal ongoing maintenance.

There seems to be some room for additional graphing, charting, and spreadsheet capability for monitor results. These could conceivably be included as part of the AWS Console version of the current cmd tools.

The lure is increasing availability assurance with decreasing administration costs.

Comments are closed.