Skip to main content
Version: NG-2.14

AWS ALB

Introduction

Amazon Application Load Balancer (ALB) is a managed load balancing service provided by Amazon Web Services (AWS). It operates at the application layer (Layer 7) of the OSI model, enabling it to route traffic based on various request attributes. ALB is designed to distribute incoming application traffic across multiple targets, such as EC2 instances, containers, IP addresses, and Lambda functions, within one or more Availability Zones.

Getting Started

Compatibility

The ALB metricsets were tested with AWS Load Balancer of type Applications Load Balnacer.

Data Collection Method

vuSmartmaps collect health and performance data for AWS ALB O11ySource using an internal agent. This agent collects data based on the source's configuration.

Prerequisites

Dependent Configuration

To configure this O11ySource, create a 'credential' of type 'aws' under the 'Definition' tab.

Inputs for Configuring Data Source

  • Data Source Name: The AWS ALB data source that will uniqly identify the source.
  • AWS Region: AWS Region where the instance of this component is running. For eg: Asia Pacific (Mumbai), the region would be ap-south-1.
  • AWS Credential: AWS credential that provides Access key and Secret key to access Cloudwatch.
  • Period (in minutes): Specifies the interval in minutes at which data is collected. Data collection occurs once every specified period. The period should be between 1 - 60 minutes.

Firewall Requirement

To collect data from this O11ySource, ensure the following ports are opened:

Source IPDestination IPDestination PortProtocolDirection
vuSmartMaps IPAWS CloudWatch IPs443*TCPOutbound

*Before providing the firewall requirements, please update the port based on the customer environment.

Configuring the Target

Health and Performance metrics of AWS ALB is collected through CloudWatch service. So AWS CloudWatch services must be enabled in your AWS account.

An IAM role or user with the following permissions to access CloudWatch metrics:

  • cloudwatch:GetMetricData
  • cloudwatch:ListMetrics

Configuration Steps

  • Enable the O11ySource.
  • Select the Sources tab and press the + button to add a new ALB instance to be monitored.
  • Populate all the configurations. Click on Save to create the instance.

Metrics Collected

NameDescriptionData Type
ActiveConnectionCountMaxThe total number of concurrent TCP connections active from clients to the load balancer and from the load balancer to targets.UInt64
ActiveConnectionCountSumThe total number of concurrent TCP connections active from clients to the load balancer and from the load balancer to targets.UInt64
AnomalousHostCountMaxThe number of hosts detected with anomalies.UInt64
AnomalousHostCountSumThe number of hosts detected with anomalies.UInt64
ClientTLSNegotiationErrorCountThe number of TLS connections initiated by the client that did not establish a session with the load balancer due to a TLS error. Possible causes include a mismatch of ciphers or protocols or the client failing to verify the server certificate and closing the connection.UInt64
ConsumedLCUsThe number of load balancer capacity units (LCU) used by your load balancer. You pay for the number of LCUs that you use per hour.Float64
DesyncMitigationMode_NonCompliant_Request_CountThe number of requests that do not comply with RFC 7230.UInt64
DroppedInvalidHeaderRequestCountThe number of requests where the load balancer removed HTTP headers with header fields that are not valid before routing the request. The load balancer removes these headers only if the routing.http.drop_invalid_header_fields.enabled attribute is set to true.UInt64
MitigatedHostCountMaxThe number of targets under mitigation.UInt64
MitigatedHostCountSumThe number of targets under mitigation.UInt64
ForwardedInvalidHeaderRequestCountThe number of requests routed by the load balancer that had HTTP headers with header fields that are not valid. The load balancer forwards requests with these headers only if the routing.http.drop_invalid_header_fields.enabled attribute is set to false.UInt64
GrpcRequestCountThe number of gRPC requests processed over IPv4 and IPv6.UInt64
HTTP_Fixed_Response_CountThe number of fixed-response actions that were successful.UInt64
HTTP_Redirect_CountThe number of redirect actions that were successful.UInt64
HTTP_Redirect_Url_Limit_Exceeded_CountThe number of redirect actions that couldn't be completed because the URL in the response location header is larger than 8K.UInt64
HTTPCode_ELB_3XX_CountThe number of HTTP 3XX redirection codes that originate from the load balancer. This count does not include response codes generated by targets.UInt64
HTTPCode_ELB_4XX_CountThe number of HTTP 4XX client error codes that originate from the load balancer. This count does not include response codes generated by targets. Client errors are generated when requests are malformed or incomplete. These requests were not received by the target, other than in the case where the load balancer returns an HTTP 460 error code. This count does not include any response codes generated by the targets.UInt64
HTTPCode_ELB_5XX_CountThe number of HTTP 5XX server error codes that originate from the load balancer. This count does not include any response codes generated by the targets.UInt64
HTTPCode_ELB_500_CountThe number of HTTP 500 error codes that originate from the load balancer.UInt64
HTTPCode_ELB_502_CountThe number of HTTP 502 error codes that originate from the load balancer.UInt64
HTTPCode_ELB_503_CountThe number of HTTP 503 error codes that originate from the load balancer.UInt64
HTTPCode_ELB_504_CountThe number of HTTP 504 error codes that originate from the load balancer.UInt64
IPv6ProcessedBytesThe total number of bytes processed by the load balancer over IPv6. This count is included in ProcessedBytes.UInt64
IPv6RequestCountThe number of IPv6 requests received by the load balancer.UInt64
NewConnectionCountThe total number of new TCP connections established from clients to the load balancer and from the load balancer to targets.UInt64
NonStickyRequestCountThe number of requests where the load balancer chose a new target because it couldn't use an existing sticky session. For example, the request was the first request from a new client and no stickiness cookie was presented, a stickiness cookie was presented but it did not specify a target that was registered with this target group, the stickiness cookie was malformed or expired, or an internal error prevented the load balancer from reading the stickiness cookie.UInt64
ProcessedBytesThe total number of bytes processed by the load balancer over IPv4 and IPv6 (HTTP header and HTTP payload). This count includes traffic to and from clients and Lambda functions, and traffic from an Identity Provider (IdP) if user authentication is enabled.UInt64
RejectedConnectionCountThe number of connections that were rejected because the load balancer had reached its maximum number of connections.UInt64
RequestCountThe number of requests processed over IPv4 and IPv6. This metric is only incremented for requests where the load balancer node was able to choose a target. Requests that are rejected before a target is chosen are not reflected in this metric.UInt64
RuleEvaluationsThe number of rules processed by the load balancer given a request rate averaged over an hour.UInt64
HealthyHostCountThe number of targets that are considered healthy.UInt64
HTTPCode_Target_2XX_CountThe number of HTTP 2xx response codes generated by the targets. This does not include any response codes generated by the load balancerUInt64
HTTPCode_Target_3XX_CountThe number of HTTP 3xx response codes generated by the targets. This does not include any response codes generated by the load balancerUInt64
HTTPCode_Target_4XX_CountThe number of HTTP 4xx response codes generated by the targets. This does not include any response codes generated by the load balancerUInt64
HTTPCode_Target_5XX_CountThe number of HTTP 5xx response codes generated by the targets. This does not include any response codes generated by the load balancerUInt64
RequestCountPerTargetThe average request count per target, in a target group. You must specify the target group using the TargetGroup dimension. This metric does not apply if the target is a Lambda function. This count uses the total number of requests received by the target group, divided by the number of healthy targets in the target group. If there are no healthy targets in the target group, the total number of targets is reported.UInt64
TargetConnectionErrorCountThe number of connections that were not successfully established between the load balancer and target. This metric does not apply if the target is a Lambda function.UInt64
TargetResponseTimeAvgThe time elapsed, in seconds, after the request leaves the load balancer until the target starts to send the response headers. This is equivalent to the target_processing_time field in the access logs.Float64
TargetResponseTimeMaxThe time elapsed, in seconds, after the request leaves the load balancer until the target starts to send the response headers. This is equivalent to the target_processing_time field in the access logs.Float64
TargetTLSNegotiationErrorCountThe number of TLS connections initiated by the load balancer that did not establish a session with the target. Possible causes include a mismatch of ciphers or protocols. This metric does not apply if the target is a Lambda function.UInt64
UnHealthyHostCountThe number of targets that are considered unhealthy.UInt64
HealthyStateDNSThe number of zones that meet the DNS healthy state requirements.UInt64
HealthyStateRoutingThe number of zones that meet the routing healthy state requirements.UInt64
UnhealthyRoutingRequestCountThe number of requests that are routed using the routing failover action (fail open).UInt64
UnhealthyStateDNSThe number of zones that do not meet the DNS healthy state requirements and therefore were marked unhealthy in DNS.UInt64
UnhealthyStateRoutingThe number of zones that do not meet the routing healthy state requirements, and therefore the load balancer distributes traffic to all targets in the zone, including the unhealthy targets.UInt64
TimestampTimestamp at metricsets collectedDateTime
Tenant IDTenant IDString
BU IDBU IDString
IntervalTime interval at which data are pollingUInt8
RegionAWS Region of Load BalancerString
Availability ZoneAvailabilty zone of Load BalancerString
Load BalancerLoad balancer nameString
Target GroupTarget group of load balancerString
O11ySource NameVublock NameString