From debb499df0e86f9e02ab1418034fcaff64f6bd19 Mon Sep 17 00:00:00 2001 From: Jacob Winch Date: Tue, 15 Aug 2023 08:50:37 +0100 Subject: [PATCH] Migrate alarm configuration to slo-alerts repo (#1149) --- .../__snapshots__/registration.test.ts.snap | 1300 +---------------- cdk/lib/registration.ts | 40 +- 2 files changed, 3 insertions(+), 1337 deletions(-) diff --git a/cdk/lib/__snapshots__/registration.test.ts.snap b/cdk/lib/__snapshots__/registration.test.ts.snap index 9e7a071e2..eb3227c3b 100644 --- a/cdk/lib/__snapshots__/registration.test.ts.snap +++ b/cdk/lib/__snapshots__/registration.test.ts.snap @@ -33,9 +33,7 @@ Object { }, }, "Metadata": Object { - "gu:cdk:constructs": Array [ - "GuErrorBudgetAlarmExperimental", - ], + "gu:cdk:constructs": Array [], "gu:cdk:version": "TEST", }, "Outputs": Object { @@ -116,498 +114,6 @@ Object { }, }, "Resources": Object { - "ChildAlarmLongPeriodRegistrationAvailabilityCODESloFastBurnCompositeAlarm9A488A8B": Object { - "Properties": Object { - "AlarmName": "ChildAlarmLongPeriodRegistrationAvailabilityCODESloFastBurnCompositeAlarm", - "ComparisonOperator": "GreaterThanThreshold", - "EvaluationPeriods": 1, - "Metrics": Array [ - Object { - "Expression": "badEvents/validEvents", - "Id": "expr_1", - "Label": "Observed failure rate", - }, - Object { - "Expression": "applicationServerErrors + loadBalancerErrors", - "Id": "badEvents", - "ReturnData": false, - }, - Object { - "Id": "applicationServerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_Backend_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 3600, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "loadBalancerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_ELB_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 3600, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "validEvents", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "RequestCount", - "Namespace": "AWS/ELB", - }, - "Period": 3600, - "Stat": "Sum", - }, - "ReturnData": false, - }, - ], - "Threshold": 0.07200000000000006, - "TreatMissingData": "notBreaching", - }, - "Type": "AWS::CloudWatch::Alarm", - }, - "ChildAlarmLongPeriodRegistrationAvailabilityCODESloMediumBurnCompositeAlarmA8996F9A": Object { - "Properties": Object { - "AlarmName": "ChildAlarmLongPeriodRegistrationAvailabilityCODESloMediumBurnCompositeAlarm", - "ComparisonOperator": "GreaterThanThreshold", - "EvaluationPeriods": 1, - "Metrics": Array [ - Object { - "Expression": "badEvents/validEvents", - "Id": "expr_1", - "Label": "Observed failure rate", - }, - Object { - "Expression": "applicationServerErrors + loadBalancerErrors", - "Id": "badEvents", - "ReturnData": false, - }, - Object { - "Id": "applicationServerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_Backend_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 21600, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "loadBalancerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_ELB_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 21600, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "validEvents", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "RequestCount", - "Namespace": "AWS/ELB", - }, - "Period": 21600, - "Stat": "Sum", - }, - "ReturnData": false, - }, - ], - "Threshold": 0.030000000000000027, - "TreatMissingData": "notBreaching", - }, - "Type": "AWS::CloudWatch::Alarm", - }, - "ChildAlarmLongPeriodRegistrationAvailabilityCODESloSlowBurnCompositeAlarmBA0A58D0": Object { - "Properties": Object { - "AlarmName": "ChildAlarmLongPeriodRegistrationAvailabilityCODESloSlowBurnCompositeAlarm", - "ComparisonOperator": "GreaterThanThreshold", - "EvaluationPeriods": 1, - "Metrics": Array [ - Object { - "Expression": "badEvents/validEvents", - "Id": "expr_1", - "Label": "Observed failure rate", - }, - Object { - "Expression": "applicationServerErrors + loadBalancerErrors", - "Id": "badEvents", - "ReturnData": false, - }, - Object { - "Id": "applicationServerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_Backend_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 86400, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "loadBalancerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_ELB_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 86400, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "validEvents", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "RequestCount", - "Namespace": "AWS/ELB", - }, - "Period": 86400, - "Stat": "Sum", - }, - "ReturnData": false, - }, - ], - "Threshold": 0.015000000000000013, - "TreatMissingData": "notBreaching", - }, - "Type": "AWS::CloudWatch::Alarm", - }, - "ChildAlarmShortPeriodRegistrationAvailabilityCODESloFastBurnCompositeAlarm8A5062E9": Object { - "Properties": Object { - "AlarmName": "ChildAlarmShortPeriodRegistrationAvailabilityCODESloFastBurnCompositeAlarm", - "ComparisonOperator": "GreaterThanThreshold", - "EvaluationPeriods": 1, - "Metrics": Array [ - Object { - "Expression": "badEvents/validEvents", - "Id": "expr_1", - "Label": "Observed failure rate", - }, - Object { - "Expression": "applicationServerErrors + loadBalancerErrors", - "Id": "badEvents", - "ReturnData": false, - }, - Object { - "Id": "applicationServerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_Backend_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 300, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "loadBalancerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_ELB_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 300, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "validEvents", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "RequestCount", - "Namespace": "AWS/ELB", - }, - "Period": 300, - "Stat": "Sum", - }, - "ReturnData": false, - }, - ], - "Threshold": 0.07200000000000006, - "TreatMissingData": "notBreaching", - }, - "Type": "AWS::CloudWatch::Alarm", - }, - "ChildAlarmShortPeriodRegistrationAvailabilityCODESloMediumBurnCompositeAlarmFA4465F4": Object { - "Properties": Object { - "AlarmName": "ChildAlarmShortPeriodRegistrationAvailabilityCODESloMediumBurnCompositeAlarm", - "ComparisonOperator": "GreaterThanThreshold", - "EvaluationPeriods": 1, - "Metrics": Array [ - Object { - "Expression": "badEvents/validEvents", - "Id": "expr_1", - "Label": "Observed failure rate", - }, - Object { - "Expression": "applicationServerErrors + loadBalancerErrors", - "Id": "badEvents", - "ReturnData": false, - }, - Object { - "Id": "applicationServerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_Backend_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 1800, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "loadBalancerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_ELB_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 1800, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "validEvents", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "RequestCount", - "Namespace": "AWS/ELB", - }, - "Period": 1800, - "Stat": "Sum", - }, - "ReturnData": false, - }, - ], - "Threshold": 0.030000000000000027, - "TreatMissingData": "notBreaching", - }, - "Type": "AWS::CloudWatch::Alarm", - }, - "ChildAlarmShortPeriodRegistrationAvailabilityCODESloSlowBurnCompositeAlarm6D64C393": Object { - "Properties": Object { - "AlarmName": "ChildAlarmShortPeriodRegistrationAvailabilityCODESloSlowBurnCompositeAlarm", - "ComparisonOperator": "GreaterThanThreshold", - "EvaluationPeriods": 1, - "Metrics": Array [ - Object { - "Expression": "badEvents/validEvents", - "Id": "expr_1", - "Label": "Observed failure rate", - }, - Object { - "Expression": "applicationServerErrors + loadBalancerErrors", - "Id": "badEvents", - "ReturnData": false, - }, - Object { - "Id": "applicationServerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_Backend_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 7200, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "loadBalancerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_ELB_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 7200, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "validEvents", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "RequestCount", - "Namespace": "AWS/ELB", - }, - "Period": 7200, - "Stat": "Sum", - }, - "ReturnData": false, - }, - ], - "Threshold": 0.015000000000000013, - "TreatMissingData": "notBreaching", - }, - "Type": "AWS::CloudWatch::Alarm", - }, "DistributionInstanceProfile": Object { "Properties": Object { "Path": "/", @@ -1203,160 +709,6 @@ Object { }, "Type": "AWS::AutoScaling::AutoScalingGroup", }, - "RegistrationAvailabilityCODESloFastBurnCompositeAlarm18091507": Object { - "Properties": Object { - "AlarmActions": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:aws:sns:", - Object { - "Ref": "AWS::Region", - }, - ":", - Object { - "Ref": "AWS::AccountId", - }, - ":mobile-server-side", - ], - ], - }, - ], - "AlarmName": "RegistrationCODERegistrationAvailabilityCODESloFastBurnCompositeAlarm9597A684", - "AlarmRule": Object { - "Fn::Join": Array [ - "", - Array [ - "(ALARM(\\"", - Object { - "Fn::GetAtt": Array [ - "ChildAlarmLongPeriodRegistrationAvailabilityCODESloFastBurnCompositeAlarm9A488A8B", - "Arn", - ], - }, - "\\") AND ALARM(\\"", - Object { - "Fn::GetAtt": Array [ - "ChildAlarmShortPeriodRegistrationAvailabilityCODESloFastBurnCompositeAlarm8A5062E9", - "Arn", - ], - }, - "\\"))", - ], - ], - }, - }, - "Type": "AWS::CloudWatch::CompositeAlarm", - }, - "RegistrationAvailabilityCODESloMediumBurnCompositeAlarmB3912EC4": Object { - "Properties": Object { - "ActionsSuppressor": Object { - "Fn::GetAtt": Array [ - "RegistrationAvailabilityCODESloFastBurnCompositeAlarm18091507", - "Arn", - ], - }, - "ActionsSuppressorExtensionPeriod": 1800, - "ActionsSuppressorWaitPeriod": 120, - "AlarmActions": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:aws:sns:", - Object { - "Ref": "AWS::Region", - }, - ":", - Object { - "Ref": "AWS::AccountId", - }, - ":mobile-server-side", - ], - ], - }, - ], - "AlarmName": "RegistrationCODERegistrationAvailabilityCODESloMediumBurnCompositeAlarm2E51BAC8", - "AlarmRule": Object { - "Fn::Join": Array [ - "", - Array [ - "(ALARM(\\"", - Object { - "Fn::GetAtt": Array [ - "ChildAlarmLongPeriodRegistrationAvailabilityCODESloMediumBurnCompositeAlarmA8996F9A", - "Arn", - ], - }, - "\\") AND ALARM(\\"", - Object { - "Fn::GetAtt": Array [ - "ChildAlarmShortPeriodRegistrationAvailabilityCODESloMediumBurnCompositeAlarmFA4465F4", - "Arn", - ], - }, - "\\"))", - ], - ], - }, - }, - "Type": "AWS::CloudWatch::CompositeAlarm", - }, - "RegistrationAvailabilityCODESloSlowBurnCompositeAlarm2492818E": Object { - "Properties": Object { - "ActionsSuppressor": Object { - "Fn::GetAtt": Array [ - "RegistrationAvailabilityCODESloMediumBurnCompositeAlarmB3912EC4", - "Arn", - ], - }, - "ActionsSuppressorExtensionPeriod": 7200, - "ActionsSuppressorWaitPeriod": 120, - "AlarmActions": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:aws:sns:", - Object { - "Ref": "AWS::Region", - }, - ":", - Object { - "Ref": "AWS::AccountId", - }, - ":mobile-server-side", - ], - ], - }, - ], - "AlarmName": "RegistrationCODERegistrationAvailabilityCODESloSlowBurnCompositeAlarm1FA4BC2F", - "AlarmRule": Object { - "Fn::Join": Array [ - "", - Array [ - "(ALARM(\\"", - Object { - "Fn::GetAtt": Array [ - "ChildAlarmLongPeriodRegistrationAvailabilityCODESloSlowBurnCompositeAlarmBA0A58D0", - "Arn", - ], - }, - "\\") AND ALARM(\\"", - Object { - "Fn::GetAtt": Array [ - "ChildAlarmShortPeriodRegistrationAvailabilityCODESloSlowBurnCompositeAlarm6D64C393", - "Arn", - ], - }, - "\\"))", - ], - ], - }, - }, - "Type": "AWS::CloudWatch::CompositeAlarm", - }, "RegistrationLaunchConfig": Object { "Properties": Object { "AssociatePublicIpAddress": false, @@ -1478,9 +830,7 @@ Object { }, }, "Metadata": Object { - "gu:cdk:constructs": Array [ - "GuErrorBudgetAlarmExperimental", - ], + "gu:cdk:constructs": Array [], "gu:cdk:version": "TEST", }, "Outputs": Object { @@ -1561,498 +911,6 @@ Object { }, }, "Resources": Object { - "ChildAlarmLongPeriodRegistrationAvailabilityPRODSloFastBurnCompositeAlarm904FE6B3": Object { - "Properties": Object { - "AlarmName": "ChildAlarmLongPeriodRegistrationAvailabilityPRODSloFastBurnCompositeAlarm", - "ComparisonOperator": "GreaterThanThreshold", - "EvaluationPeriods": 1, - "Metrics": Array [ - Object { - "Expression": "badEvents/validEvents", - "Id": "expr_1", - "Label": "Observed failure rate", - }, - Object { - "Expression": "applicationServerErrors + loadBalancerErrors", - "Id": "badEvents", - "ReturnData": false, - }, - Object { - "Id": "applicationServerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_Backend_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 3600, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "loadBalancerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_ELB_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 3600, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "validEvents", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "RequestCount", - "Namespace": "AWS/ELB", - }, - "Period": 3600, - "Stat": "Sum", - }, - "ReturnData": false, - }, - ], - "Threshold": 0.07200000000000006, - "TreatMissingData": "notBreaching", - }, - "Type": "AWS::CloudWatch::Alarm", - }, - "ChildAlarmLongPeriodRegistrationAvailabilityPRODSloMediumBurnCompositeAlarm6D4E00F5": Object { - "Properties": Object { - "AlarmName": "ChildAlarmLongPeriodRegistrationAvailabilityPRODSloMediumBurnCompositeAlarm", - "ComparisonOperator": "GreaterThanThreshold", - "EvaluationPeriods": 1, - "Metrics": Array [ - Object { - "Expression": "badEvents/validEvents", - "Id": "expr_1", - "Label": "Observed failure rate", - }, - Object { - "Expression": "applicationServerErrors + loadBalancerErrors", - "Id": "badEvents", - "ReturnData": false, - }, - Object { - "Id": "applicationServerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_Backend_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 21600, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "loadBalancerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_ELB_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 21600, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "validEvents", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "RequestCount", - "Namespace": "AWS/ELB", - }, - "Period": 21600, - "Stat": "Sum", - }, - "ReturnData": false, - }, - ], - "Threshold": 0.030000000000000027, - "TreatMissingData": "notBreaching", - }, - "Type": "AWS::CloudWatch::Alarm", - }, - "ChildAlarmLongPeriodRegistrationAvailabilityPRODSloSlowBurnCompositeAlarmFD2D9570": Object { - "Properties": Object { - "AlarmName": "ChildAlarmLongPeriodRegistrationAvailabilityPRODSloSlowBurnCompositeAlarm", - "ComparisonOperator": "GreaterThanThreshold", - "EvaluationPeriods": 1, - "Metrics": Array [ - Object { - "Expression": "badEvents/validEvents", - "Id": "expr_1", - "Label": "Observed failure rate", - }, - Object { - "Expression": "applicationServerErrors + loadBalancerErrors", - "Id": "badEvents", - "ReturnData": false, - }, - Object { - "Id": "applicationServerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_Backend_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 86400, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "loadBalancerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_ELB_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 86400, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "validEvents", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "RequestCount", - "Namespace": "AWS/ELB", - }, - "Period": 86400, - "Stat": "Sum", - }, - "ReturnData": false, - }, - ], - "Threshold": 0.015000000000000013, - "TreatMissingData": "notBreaching", - }, - "Type": "AWS::CloudWatch::Alarm", - }, - "ChildAlarmShortPeriodRegistrationAvailabilityPRODSloFastBurnCompositeAlarm77DE6914": Object { - "Properties": Object { - "AlarmName": "ChildAlarmShortPeriodRegistrationAvailabilityPRODSloFastBurnCompositeAlarm", - "ComparisonOperator": "GreaterThanThreshold", - "EvaluationPeriods": 1, - "Metrics": Array [ - Object { - "Expression": "badEvents/validEvents", - "Id": "expr_1", - "Label": "Observed failure rate", - }, - Object { - "Expression": "applicationServerErrors + loadBalancerErrors", - "Id": "badEvents", - "ReturnData": false, - }, - Object { - "Id": "applicationServerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_Backend_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 300, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "loadBalancerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_ELB_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 300, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "validEvents", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "RequestCount", - "Namespace": "AWS/ELB", - }, - "Period": 300, - "Stat": "Sum", - }, - "ReturnData": false, - }, - ], - "Threshold": 0.07200000000000006, - "TreatMissingData": "notBreaching", - }, - "Type": "AWS::CloudWatch::Alarm", - }, - "ChildAlarmShortPeriodRegistrationAvailabilityPRODSloMediumBurnCompositeAlarm0BAFCB45": Object { - "Properties": Object { - "AlarmName": "ChildAlarmShortPeriodRegistrationAvailabilityPRODSloMediumBurnCompositeAlarm", - "ComparisonOperator": "GreaterThanThreshold", - "EvaluationPeriods": 1, - "Metrics": Array [ - Object { - "Expression": "badEvents/validEvents", - "Id": "expr_1", - "Label": "Observed failure rate", - }, - Object { - "Expression": "applicationServerErrors + loadBalancerErrors", - "Id": "badEvents", - "ReturnData": false, - }, - Object { - "Id": "applicationServerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_Backend_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 1800, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "loadBalancerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_ELB_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 1800, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "validEvents", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "RequestCount", - "Namespace": "AWS/ELB", - }, - "Period": 1800, - "Stat": "Sum", - }, - "ReturnData": false, - }, - ], - "Threshold": 0.030000000000000027, - "TreatMissingData": "notBreaching", - }, - "Type": "AWS::CloudWatch::Alarm", - }, - "ChildAlarmShortPeriodRegistrationAvailabilityPRODSloSlowBurnCompositeAlarm2C6CA489": Object { - "Properties": Object { - "AlarmName": "ChildAlarmShortPeriodRegistrationAvailabilityPRODSloSlowBurnCompositeAlarm", - "ComparisonOperator": "GreaterThanThreshold", - "EvaluationPeriods": 1, - "Metrics": Array [ - Object { - "Expression": "badEvents/validEvents", - "Id": "expr_1", - "Label": "Observed failure rate", - }, - Object { - "Expression": "applicationServerErrors + loadBalancerErrors", - "Id": "badEvents", - "ReturnData": false, - }, - Object { - "Id": "applicationServerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_Backend_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 7200, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "loadBalancerErrors", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "HTTPCode_ELB_5XX", - "Namespace": "AWS/ELB", - }, - "Period": 7200, - "Stat": "Sum", - }, - "ReturnData": false, - }, - Object { - "Id": "validEvents", - "MetricStat": Object { - "Metric": Object { - "Dimensions": Array [ - Object { - "Name": "LoadBalancerName", - "Value": Object { - "Ref": "LoadBalancerToPrivateASG", - }, - }, - ], - "MetricName": "RequestCount", - "Namespace": "AWS/ELB", - }, - "Period": 7200, - "Stat": "Sum", - }, - "ReturnData": false, - }, - ], - "Threshold": 0.015000000000000013, - "TreatMissingData": "notBreaching", - }, - "Type": "AWS::CloudWatch::Alarm", - }, "DistributionInstanceProfile": Object { "Properties": Object { "Path": "/", @@ -2648,160 +1506,6 @@ Object { }, "Type": "AWS::AutoScaling::AutoScalingGroup", }, - "RegistrationAvailabilityPRODSloFastBurnCompositeAlarm98D5A44A": Object { - "Properties": Object { - "AlarmActions": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:aws:sns:", - Object { - "Ref": "AWS::Region", - }, - ":", - Object { - "Ref": "AWS::AccountId", - }, - ":mobile-server-side", - ], - ], - }, - ], - "AlarmName": "RegistrationPRODRegistrationAvailabilityPRODSloFastBurnCompositeAlarm05562A97", - "AlarmRule": Object { - "Fn::Join": Array [ - "", - Array [ - "(ALARM(\\"", - Object { - "Fn::GetAtt": Array [ - "ChildAlarmLongPeriodRegistrationAvailabilityPRODSloFastBurnCompositeAlarm904FE6B3", - "Arn", - ], - }, - "\\") AND ALARM(\\"", - Object { - "Fn::GetAtt": Array [ - "ChildAlarmShortPeriodRegistrationAvailabilityPRODSloFastBurnCompositeAlarm77DE6914", - "Arn", - ], - }, - "\\"))", - ], - ], - }, - }, - "Type": "AWS::CloudWatch::CompositeAlarm", - }, - "RegistrationAvailabilityPRODSloMediumBurnCompositeAlarmECC2D850": Object { - "Properties": Object { - "ActionsSuppressor": Object { - "Fn::GetAtt": Array [ - "RegistrationAvailabilityPRODSloFastBurnCompositeAlarm98D5A44A", - "Arn", - ], - }, - "ActionsSuppressorExtensionPeriod": 1800, - "ActionsSuppressorWaitPeriod": 120, - "AlarmActions": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:aws:sns:", - Object { - "Ref": "AWS::Region", - }, - ":", - Object { - "Ref": "AWS::AccountId", - }, - ":mobile-server-side", - ], - ], - }, - ], - "AlarmName": "RegistrationPRODRegistrationAvailabilityPRODSloMediumBurnCompositeAlarmBE88DBD9", - "AlarmRule": Object { - "Fn::Join": Array [ - "", - Array [ - "(ALARM(\\"", - Object { - "Fn::GetAtt": Array [ - "ChildAlarmLongPeriodRegistrationAvailabilityPRODSloMediumBurnCompositeAlarm6D4E00F5", - "Arn", - ], - }, - "\\") AND ALARM(\\"", - Object { - "Fn::GetAtt": Array [ - "ChildAlarmShortPeriodRegistrationAvailabilityPRODSloMediumBurnCompositeAlarm0BAFCB45", - "Arn", - ], - }, - "\\"))", - ], - ], - }, - }, - "Type": "AWS::CloudWatch::CompositeAlarm", - }, - "RegistrationAvailabilityPRODSloSlowBurnCompositeAlarmF843FA7A": Object { - "Properties": Object { - "ActionsSuppressor": Object { - "Fn::GetAtt": Array [ - "RegistrationAvailabilityPRODSloMediumBurnCompositeAlarmECC2D850", - "Arn", - ], - }, - "ActionsSuppressorExtensionPeriod": 7200, - "ActionsSuppressorWaitPeriod": 120, - "AlarmActions": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:aws:sns:", - Object { - "Ref": "AWS::Region", - }, - ":", - Object { - "Ref": "AWS::AccountId", - }, - ":mobile-server-side", - ], - ], - }, - ], - "AlarmName": "RegistrationPRODRegistrationAvailabilityPRODSloSlowBurnCompositeAlarmAA523B94", - "AlarmRule": Object { - "Fn::Join": Array [ - "", - Array [ - "(ALARM(\\"", - Object { - "Fn::GetAtt": Array [ - "ChildAlarmLongPeriodRegistrationAvailabilityPRODSloSlowBurnCompositeAlarmFD2D9570", - "Arn", - ], - }, - "\\") AND ALARM(\\"", - Object { - "Fn::GetAtt": Array [ - "ChildAlarmShortPeriodRegistrationAvailabilityPRODSloSlowBurnCompositeAlarm2C6CA489", - "Arn", - ], - }, - "\\"))", - ], - ], - }, - }, - "Type": "AWS::CloudWatch::CompositeAlarm", - }, "RegistrationLaunchConfig": Object { "Properties": Object { "AssociatePublicIpAddress": false, diff --git a/cdk/lib/registration.ts b/cdk/lib/registration.ts index 902e7260e..6e5eb50a8 100644 --- a/cdk/lib/registration.ts +++ b/cdk/lib/registration.ts @@ -1,10 +1,7 @@ import { join } from 'path'; import type { GuStackProps } from '@guardian/cdk/lib/constructs/core'; import { GuStack } from '@guardian/cdk/lib/constructs/core'; -import { GuErrorBudgetAlarmExperimental } from '@guardian/cdk/lib/experimental/constructs'; import type { App } from 'aws-cdk-lib'; -import { MathExpression, Metric } from 'aws-cdk-lib/aws-cloudwatch'; -import type { CfnLoadBalancer } from 'aws-cdk-lib/aws-elasticloadbalancing'; import { CfnInclude } from 'aws-cdk-lib/cloudformation-include'; export class Registration extends GuStack { @@ -17,43 +14,8 @@ export class Registration extends GuStack { // Until this project has been fully migrated to GuCDK you should update the 'old' infrastructure by modifying // the YAML file and then re-running the snapshot tests to confirm that the changes are being pulled through by // CDK - const cfnTemplate = new CfnInclude(this, 'YamlTemplate', { + new CfnInclude(this, 'YamlTemplate', { templateFile: yamlTemplateFilePath, }); - - const registrationLoadBalancer = cfnTemplate.getResource( - 'LoadBalancerToPrivateASG', - ) as CfnLoadBalancer; - - const loadBalancerName = registrationLoadBalancer.ref; - - function loadBalancerMetric(metricName: string) { - return new Metric({ - metricName, - namespace: 'AWS/ELB', - statistic: 'Sum', - dimensionsMap: { - LoadBalancerName: loadBalancerName, - }, - }); - } - - const applicationServerErrors = loadBalancerMetric('HTTPCode_Backend_5XX'); - const loadBalancerErrors = loadBalancerMetric('HTTPCode_ELB_5XX'); - const allRequests = loadBalancerMetric('RequestCount'); - - const budgetAlarm = new GuErrorBudgetAlarmExperimental(this, { - sloName: `RegistrationAvailability${this.stage}Slo`, - sloTarget: 0.995, - badEvents: new MathExpression({ - expression: 'applicationServerErrors + loadBalancerErrors', - usingMetrics: { - applicationServerErrors, - loadBalancerErrors, - }, - }), - validEvents: allRequests, - snsTopicNameForAlerts: 'mobile-server-side', - }); } }