diff --git a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts index 6a0914ea8e153..0ec173c7b77df 100644 --- a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts +++ b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts @@ -753,6 +753,26 @@ export enum HttpCodeElb { * The number of HTTP 5XX server error codes that originate from the load balancer. */ ELB_5XX_COUNT = 'HTTPCode_ELB_5XX_Count', + + /** + * The number of HTTP 500 server error codes that originate from the load balancer. + */ + ELB_500_COUNT = 'HTTPCode_ELB_500_Count', + + /** + * The number of HTTP 502 server error codes that originate from the load balancer. + */ + ELB_502_COUNT = 'HTTPCode_ELB_502_Count', + + /** + * The number of HTTP 503 server error codes that originate from the load balancer. + */ + ELB_503_COUNT = 'HTTPCode_ELB_503_Count', + + /** + * The number of HTTP 504 server error codes that originate from the load balancer. + */ + ELB_504_COUNT = 'HTTPCode_ELB_504_Count', } /** diff --git a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/test/alb/load-balancer.test.ts b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/test/alb/load-balancer.test.ts index 930f3a2a18923..958a881846fab 100644 --- a/packages/aws-cdk-lib/aws-elasticloadbalancingv2/test/alb/load-balancer.test.ts +++ b/packages/aws-cdk-lib/aws-elasticloadbalancingv2/test/alb/load-balancer.test.ts @@ -684,6 +684,29 @@ describe('tests', () => { } }); + test.each([ + elbv2.HttpCodeElb.ELB_500_COUNT, + elbv2.HttpCodeElb.ELB_502_COUNT, + elbv2.HttpCodeElb.ELB_503_COUNT, + elbv2.HttpCodeElb.ELB_504_COUNT, + ])('use specific load balancer generated 5XX metrics', (metricName) => { + // GIVEN + const stack = new cdk.Stack(); + const vpc = new ec2.Vpc(stack, 'Stack'); + const lb = new elbv2.ApplicationLoadBalancer(stack, 'LB', { vpc }); + + // WHEN + const metric = lb.metrics.httpCodeElb(metricName); + + // THEN + expect(metric.namespace).toEqual('AWS/ApplicationELB'); + expect(metric.statistic).toEqual('Sum'); + expect(metric.metricName).toEqual(metricName); + expect(stack.resolve(metric.dimensions)).toEqual({ + LoadBalancer: { 'Fn::GetAtt': ['LB8A12904C', 'LoadBalancerFullName'] }, + }); + }); + test('loadBalancerName', () => { // GIVEN const stack = new cdk.Stack();