AWS ELB
Author: Outlyer | Version: 1.0.0 | License: MIT | Categories:This integration monitors the Classic Elastic Load Balancer (ELB) on AWS. EBLs distribute incoming application traffic across multiple EC2 instances in multiple Availability Zones. This increases the fault tolerance of your applications. Elastic Load Balancing detects unhealthy instances and routes traffic only to healthy instances.
This integration provides two plugins for monitoring your Classic ELBs:
- A discovery plugin that will list all of your ELB instances in Outlyer for monitoring
- A check that uses the Cloudwatch APIs to monitor each ELB instance in Outlyer
Once enabled you will see your ELB instances with all their metadata and labels in the host map in Outlyer, and a dashboard of all the key metrics across your ELB instances in your AWS account.
A full list of available Cloudwatch metrics for the Classic Elastic Load Balancers is available here.
Metric Name | Type | Labels | Unit | Description |
---|---|---|---|---|
aws.elb_latency_max | Gauge | region | Count | The total time elapsed, in seconds, for the load balancer to successfully establish a connection to a registered instance. |
aws.elb_backendconnectionerrors_max | Gauge | region | Count | The number of connections that were not successfully established between the load balancer and the registered instances. |
aws.elb_estimatedprocessedbytes_max | Gauge | region | Count | The estimated number of bytes processed by a Load Balancer. |
aws.elb_requestcount_max | Gauge | region | Count | The number of requests completed or connections made during the specified interval (1 or 5 minutes). |
aws.elb_spillovercount_max | Gauge | region | Count | The total number of requests that were rejected because the surge queue is full. |
aws.elb_surgequeuelength_max | Gauge | region | Count | The total number of requests (HTTP listener) or connections (TCP listener) that are pending routing to a healthy instance. The maximum size of the queue is 1,024. |
aws.elb_healthyhostcount_max | Gauge | region | Count | The number of healthy instances registered with your load balancer. |
aws.elb_unhealthyhostcount_max | Gauge | region | Count | The number of unhealthy instances registered with your load balancer. |
aws.elb_estimatedalbactiveconnectioncount_max | Gauge | region | Count | The estimated number of concurrent TCP connections active from clients to the load balancer and from the load balancer to targets. |
aws.elb_estimatedalbnewconnectioncount_max | Gauge | region | Count | The estimated number of new TCP connections established from clients to the load balancer and from the load balancer to targets. |
aws.elb_estimatedalbconsumedlcus_max | Gauge | region | Count | The estimated number of load balancer capacity units (LCU) used by an Application Load Balancer. |
aws.elb_elb2xx_max | Gauge | region | Count | The number of HTTP 2XX server codes generated by the load balancer. |
aws.elb_http2xx_max | Gauge | region | Count | The number of 200 HTTP response codes generated by registered instances. This count does not include any response codes generated by the load balancer. |
aws.elb_elb4xx_max | Gauge | region | Count | The number of HTTP 4XX client error codes generated by the load balancer. |
aws.elb_http4xx_max | Gauge | region | Count | The number of 400 HTTP response codes generated by registered instances. This count does not include any response codes generated by the load balancer. |
aws.elb_elb5xx_max | Gauge | region | Count | The number of HTTP 5XX server error codes generated by the load balancer. |
aws.elb_http5xx_max | Gauge | region | Count | The number of 500 HTTP response codes generated by registered instances. This count does not include any response codes generated by the load balancer. |
In order for this integration to run, you must create an IAM role and access keys for the plugin to connect to your AWS ELB APIs and AWS Cloudwatch metrics:
- To get started, open the AWS Management Console
- Click the IAM tab.
- Click the Create a New Group of Users button.
- Enter a Group Name called Outlyer.
- Select the Read Only Access Policy Template then click Continue.
- Click the Create New Users tab.
- Enter a new User Name called Outlyer and click Continue and then Finish.
- Click Show User Security Credentials.
- Copy and paste your Access Key Id and the Secret Access Key somewhere safe.
Plugins
There are two plugins:
elb-discovery.py
uses the Outlyer agent’s instance discovery mechanism to automatically discover all the ELBs in a specified regionaws-elb.py
is deployed as a standard check runs against each ELB instance discovered in the discovery plugin
The discovery plugin must be currently deployed manually to disk on an agent. The plugin must be put in the agent’s plugins
folder and
a discovery check YAML file must be configured in the agent’s conf.d
folder. An example of the YAML configuration file is shown below:
discovers:
elb-discovery:
command: '/opt/outlyer/embedded/bin/python3 /etc/outlyer/plugins/elb-discovery.py'
interval: 300
disabled: false
timeout: 120
#labels:
# environment: 'prod'
#metric_labels:
# - 'environment'
#check_command:
check_interval: 30
env:
AWS_ACCESS_KEY_ID: <AWS_ACCESS_KEY_ID>
AWS_SECRET_ACCESS_KEY: <AWS_SECRET_ACCESS_KEY>
AWS_REGION: <AWS_REGION>
Once running you should see almost immediately all your ELB instances in the host view of the Outlyer UI. After that you can then deploy the
aws-elb.py
monitoring check to monitor all of the instances via Cloudwatch. It is recommended that you use the check selector cloud.service=aws.elb
to ensure the check runs against all your ELB instances.
It is recommended that both plugins run at 5 minute intervals to avoid significant charges on your AWS account bills
Both plugins must set the following variables to run:
AWS_ACCESS_KEY_ID
: The AWS Access Key copied aboveAWS_SECRET_ACCESS_KEY
: The AWS Secret Key copied aboveAWS_REGION
: The AWS Region your EBLs are running in
In addition the following variables can be set to override the default values:
time_range
: The time range in minutes to query your metrics over. By default this is set to the last 10 minutes but if you run your functions rarely this can be set to longer for testing purposes.
Version | Release Date | Description |
---|---|---|
1.0 | 25-Jun-2018 | Initial version of our ELB monitoring integration. |