Elastic Beanstalk

Overview

AWS Elastic Beanstalk is an easy-to-use service for deploying and scaling web applications and services developed with Java, .NET, PHP, Node.js, Python, Ruby, Go, and Docker on familiar servers such as Apache, Nginx, Passenger, and IIS.

Setup

Installation

If you haven’t already, first set up the AWS CloudWatch integration. No additional steps are needed for installation.

Configuration

On the AWS CloudWatch integration page, ensure that the Elastic Beanstalk service is selected for metric collection.

Metrics

Name Description
EnvironmentHealth
(integer)
The health status of the environment. The possible values are
0 (OK), 1 (Info), 5 (Unknown), 10 (No data), 15 (Warning),
20 (Degraded) and 25 (Severe).
InstancesOk
(count)
The number of instances with OK health status.
InstancesPending
(count)
The number of instances with Pending health status.
InstancesInfo
(count)
The number of instances with Info health status.
InstancesUnknown
(count)
The number of instances with Unknown health status.
InstancesNoData
(count)
The number of instances with no health status data.
InstancesWarning
(count)
The number of instances with Warning health status.
InstancesDegraded
(count)
The number of instances with Degraded health status.
InstancesSevere
(count)
The number of instances with Severe health status.
ApplicationRequestsTotal
(count)
The number of requests completed by the instance or environment.
ApplicationRequests2xx
(count)
The number of requests that completed with a 2XX status code.
ApplicationRequests3xx
(count)
The number of requests that completed with a 3XX status code.
ApplicationRequests4xx
(count)
The number of requests that completed with a 4XX status code.
ApplicationRequests5xx
(count)
The number of requests that completed with a 5XX status code.
ApplicationLatencyP10
(count)
The average time to complete the fastest 10 percent of requests.
ApplicationLatencyP50
(count)
The average time to complete the fastest 50 percent of requests.
ApplicationLatencyP75
(count)
The average time to complete the fastest 75 percent of requests.
ApplicationLatencyP85
(count)
The average time to complete the fastest 85 percent of requests.
ApplicationLatencyP90
(count)
The average time to complete the fastest 90 percent of requests.
ApplicationLatencyP95
(count)
The average time to complete the fastest 95 percent of requests.
ApplicationLatencyP99
(count)
The average time to complete the fastest 99 percent of requests.
ApplicationLatencyP99.9
(count)
The average time to complete the fastest 99.9 percent of requests.
LoadAverage1min

The average CPU load over the last minute.
InstanceHealth

The health status of the instance.
RootFilesystemUtil
(percent)
The percentage of disk space in use.
CPUIrq
(percent)
The percentage of time the CPU was in this state in the last minute
CPUUser
(percent)
The percentage of time the CPU was in this state in the last minute
CPUIdle
(percent)
The percentage of time the CPU was in this state in the last minute
CPUSystem
(percent)
The percentage of time the CPU was in this state in the last minute
CPUSoftirq
(percent)
The percentage of time the CPU was in this state in the last minute
CPUIowait
(percent)
The percentage of time the CPU was in this state in the last minute
CPUNice
(percent)
The percentage of time the CPU was in this state in the last minute

Available Tags

Name Description
awsaccount AWS account associated with the metrics
az Availability zone of the instance
environmentname Name of the environment
instanceid ID of the instance
region Name of the region

Enhanced Health Metrics

Elastic Beanstalk helps you deploy and manage applications in the AWS cloud without having to manage the individual AWS infrastructure services that comprise the application stack. Developers can upload their application, and Elastic Beanstalk automatically handles the details of capacity provisioning, load balancing, scaling, and application health monitoring. Starting with platform version 2.0, Elastic Beanstalk supports enhanced health metric reporting to AWS CloudWatch.

Enabling the Elastic Beanstalk service in your AppOptics CloudWatch Integration will import all of your enhanced health metrics into your AppOptics account and preconfigured AWS Elastic Beanstalk dashboard.

Requirements

Enhanced health reporting requires a version 2 or newer platform configuration and is supported by all platforms except Windows Server with IIS. It requires two roles: a service role for Elastic Beanstalk and an instance profile for the environment. The service role allows Elastic Beanstalk to interact with other AWS services on your behalf in order to gather information about the resources in your environment. The instance profile allows the instances in your environment to write logs to Amazon S3. When you create an Elastic Beanstalk environment in the AWS Management Console, the console prompts you to create an instance profile and service role with appropriate permissions.

Sample Service Role

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
          "elasticloadbalancing:DescribeInstanceHealth",
          "elasticbeanstalk:DescribeEnvironments",
          "ec2:DescribeInstances",
          "ec2:DescribeInstanceStatus",
          "ec2:GetConsoleOutput",
          "ec2:AssociateAddress",
          "ec2:DescribeAddresses",
          "ec2:DescribeSecurityGroups",
          "sqs:GetQueueAttributes",
          "sqs:GetQueueUrl",
          "autoscaling:DescribeAutoScalingGroups",
          "autoscaling:DescribeAutoScalingInstances",
          "autoscaling:DescribeScalingActivities",
          "autoscaling:DescribeNotificationConfigurations"
      ],
      "Resource": [
          "*"
      ]
    }
  ]
}

Sample Instance Role

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticbeanstalk:Check*",
        "elasticbeanstalk:Describe*",
        "elasticbeanstalk:List*",
        "elasticbeanstalk:RequestEnvironmentInfo",
        "elasticbeanstalk:RetrieveEnvironmentInfo",
        "ec2:Describe*",
        "elasticloadbalancing:Describe*",
        "autoscaling:Describe*",
        "cloudwatch:Describe*",
        "cloudwatch:List*",
        "cloudwatch:Get*",
        "s3:Get*",
        "s3:List*",
        "sns:Get*",
        "sns:List*",
        "cloudformation:Describe*",
        "cloudformation:Get*",
        "cloudformation:List*",
        "cloudformation:Validate*",
        "cloudformation:Estimate*",
        "rds:Describe*",
        "sqs:Get*",
        "sqs:List*"
      ],
      "Resource": "*"
    }
  ]
}

AppOptics IAM User

In addition to the aforementioned service and instance roles used by CloudWatch, you will also need to update your IAM user for AppOptics to include the elasticbeanstalk:DescribeEnvironments policy action. For the most recent version of our recommended CloudWatch policy, please refer to our AWS CloudWatch: Setup document.

Configuration

Each Elastic Beanstalk environment must be configured with the correct service role. Inside your Configuration tab, click on the Health section to view your settings. Make sure your Service role is set to the correct role.

Next, your System type must be set to Enhanced. If this option is unavailable, it likely means that your platform is not at least version 2.0 and will not support enhanced health metrics. You will need to upgrade your platform before continuing. Once this is all complete you will need to select the Instance and/or Environment metrics that you want CloudWatch to gather from your Elastic Beanstalk environment and instances. A number of the metrics are reported with both dimensions (e.g. ApplicationLatencyP95), although the ones tagged for Environment represent the aggregate across the entire environment, while the Instance ones are reported separately for each EC2 instance in your cluster.

Finishing Up

Once you’ve applied your preferences, you should begin seeing these metrics in your AppOptics account within a few minutes. In contrast to most other CloudWatch-enabled AWS services, these metrics are pulled into CloudWatch as custom metrics. As such, they’re subject to CloudWatch custom metrics pricing. However, unlike other CloudWatch custom metrics, you’ll find these metrics under the AWS.ElasticBeanstalk. namespace. Environment metrics will include region and environment name information. Instance metrics will include region, environment name and instance ID information.