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.
Navigation Notice: When the APM Integrated Experience is enabled, AppOptics shares a common navigation and enhanced feature set with other integrated experience products. How you navigate AppOptics and access its features may vary from these instructions.
The scripts are not supported under any SolarWinds support program or service. The scripts are provided AS IS without warranty of any kind. SolarWinds further disclaims all warranties including, without limitation, any implied warranties of merchantability or of fitness for a particular purpose. The risk arising out of the use or performance of the scripts and documentation stays with you. In no event shall SolarWinds or anyone else involved in the creation, production, or delivery of the scripts be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the scripts or documentation.