@cdklabs/multi-az-observability 0.0.1-alpha.4 → 0.0.1-alpha.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +2237 -769
- package/API.md +5141 -1591
- package/README.md +33 -26
- package/cdk.json +1 -1
- package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.d.ts +14 -12
- package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.js +49 -49
- package/lib/alarmsandrules/BaseOperationRegionalAlarmsAndRules.js +2 -2
- package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.d.ts +6 -15
- package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.js +2 -10
- package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.d.ts +11 -3
- package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.js +24 -13
- package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.d.ts +0 -8
- package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.js +1 -1
- package/lib/alarmsandrules/IOperationAlarmsAndRules.d.ts +20 -27
- package/lib/alarmsandrules/IOperationAlarmsAndRules.js +1 -1
- package/lib/alarmsandrules/IServerSideOperationRegionalAlarmsAndRules.js +1 -1
- package/lib/alarmsandrules/IServiceAlarmsAndRules.d.ts +19 -15
- package/lib/alarmsandrules/IServiceAlarmsAndRules.js +1 -1
- package/lib/alarmsandrules/OperationAlarmsAndRules.d.ts +15 -22
- package/lib/alarmsandrules/OperationAlarmsAndRules.js +52 -72
- package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.d.ts +5 -5
- package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.js +2 -3
- package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.d.ts +21 -13
- package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.js +43 -29
- package/lib/alarmsandrules/ServiceAlarmsAndRules.d.ts +19 -15
- package/lib/alarmsandrules/ServiceAlarmsAndRules.js +34 -136
- package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.d.ts +4 -3
- package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.js +1 -1
- package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.d.ts +6 -44
- package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.js +1 -1
- package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.d.ts +28 -7
- package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.js +1 -1
- package/lib/azmapper/AvailabilityZoneMapper.js +8 -9
- package/lib/basic_observability/BasicServiceDashboard.d.ts +0 -3
- package/lib/basic_observability/BasicServiceDashboard.js +24 -112
- package/lib/basic_observability/BasicServiceMultiAZObservability.d.ts +8 -9
- package/lib/basic_observability/BasicServiceMultiAZObservability.js +98 -312
- package/lib/basic_observability/props/ApplicationLoadBalancerDetectionProps.d.ts +51 -0
- package/lib/basic_observability/props/ApplicationLoadBalancerDetectionProps.js +3 -0
- package/lib/basic_observability/props/BasicServiceDashboardProps.d.ts +27 -13
- package/lib/basic_observability/props/BasicServiceDashboardProps.js +1 -1
- package/lib/basic_observability/props/BasicServiceMultiAZObservabilityProps.d.ts +10 -38
- package/lib/basic_observability/props/BasicServiceMultiAZObservabilityProps.js +1 -1
- package/lib/basic_observability/props/NatGatewayDetectionProps.d.ts +31 -0
- package/lib/basic_observability/props/NatGatewayDetectionProps.js +3 -0
- package/lib/canaries/CanaryFunction.js +14 -13
- package/lib/canaries/CanaryTest.js +4 -4
- package/lib/canaries/src/canary.zip +0 -0
- package/lib/dashboards/ContributorInsightsWidget.d.ts +1 -1
- package/lib/dashboards/ContributorInsightsWidget.js +13 -17
- package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.d.ts +2 -6
- package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.js +445 -507
- package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.d.ts +2 -10
- package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.js +350 -437
- package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.d.ts +3 -66
- package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.js +1 -1
- package/lib/dashboards/props/OperationAvailabilityWidgetProps.d.ts +7 -2
- package/lib/dashboards/props/OperationAvailabilityWidgetProps.js +1 -1
- package/lib/dashboards/props/OperationLatencyWidgetProps.d.ts +7 -2
- package/lib/dashboards/props/OperationLatencyWidgetProps.js +1 -1
- package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.d.ts +8 -8
- package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.js +1 -1
- package/lib/index.d.ts +54 -24
- package/lib/index.js +36 -17
- package/lib/metrics/ApplicationLoadBalancerMetrics.d.ts +77 -3
- package/lib/metrics/ApplicationLoadBalancerMetrics.js +813 -32
- package/lib/metrics/AvailabilityAndLatencyMetrics.d.ts +23 -0
- package/lib/metrics/AvailabilityAndLatencyMetrics.js +118 -24
- package/lib/metrics/NatGatewayMetrics.d.ts +113 -0
- package/lib/metrics/NatGatewayMetrics.js +357 -0
- package/lib/metrics/RegionalAvailabilityMetrics.js +4 -5
- package/lib/metrics/RegionalLatencyMetrics.d.ts +1 -1
- package/lib/metrics/RegionalLatencyMetrics.js +27 -20
- package/lib/metrics/ZonalAvailabilityMetrics.d.ts +2 -8
- package/lib/metrics/ZonalAvailabilityMetrics.js +10 -25
- package/lib/metrics/ZonalLatencyMetrics.d.ts +2 -1
- package/lib/metrics/ZonalLatencyMetrics.js +33 -23
- package/lib/metrics/props/AvailabilityAndLatencyMetricProps.d.ts +4 -0
- package/lib/metrics/props/AvailabilityAndLatencyMetricProps.js +1 -1
- package/lib/metrics/props/LatencyMetricProps.d.ts +6 -0
- package/lib/metrics/props/LatencyMetricProps.js +1 -1
- package/lib/metrics/props/ZonalAvailabilityMetricProps.d.ts +4 -0
- package/lib/metrics/props/ZonalAvailabilityMetricProps.js +1 -1
- package/lib/metrics/props/ZonalLatencyMetricProps.d.ts +4 -0
- package/lib/metrics/props/ZonalLatencyMetricProps.js +1 -1
- package/lib/monitoring/src/monitoring-layer.zip +0 -0
- package/lib/outlier-detection/ApplicationLoadBalancerAvailabilityOutlierAlgorithm.d.ts +10 -0
- package/lib/outlier-detection/ApplicationLoadBalancerAvailabilityOutlierAlgorithm.js +15 -0
- package/lib/outlier-detection/ApplicationLoadBalancerLatencyOutlierAlgorithm.d.ts +18 -0
- package/lib/outlier-detection/ApplicationLoadBalancerLatencyOutlierAlgorithm.js +23 -0
- package/lib/outlier-detection/OutlierDetectionFunction.js +7 -6
- package/lib/outlier-detection/PacketLossOutlierAlgorithm.d.ts +10 -0
- package/lib/outlier-detection/PacketLossOutlierAlgorithm.js +15 -0
- package/lib/outlier-detection/src/outlier-detection.zip +0 -0
- package/lib/outlier-detection/src/scipy-layer.zip +0 -0
- package/lib/services/CanaryMetrics.d.ts +4 -3
- package/lib/services/CanaryMetrics.js +3 -4
- package/lib/services/CanaryTestAvailabilityMetricsOverride.d.ts +21 -0
- package/lib/services/CanaryTestAvailabilityMetricsOverride.js +23 -0
- package/lib/services/CanaryTestLatencyMetricsOverride.d.ts +15 -0
- package/lib/services/CanaryTestLatencyMetricsOverride.js +20 -0
- package/lib/services/CanaryTestMetricsOverride.d.ts +1 -13
- package/lib/services/CanaryTestMetricsOverride.js +2 -4
- package/lib/services/ContributorInsightRuleDetails.js +1 -1
- package/lib/services/ICanaryMetrics.d.ts +4 -3
- package/lib/services/ICanaryMetrics.js +1 -1
- package/lib/services/ICanaryTestAvailabilityMetricsOverride.d.ts +23 -0
- package/lib/services/ICanaryTestAvailabilityMetricsOverride.js +3 -0
- package/lib/services/ICanaryTestLatencyMetricsOverride.d.ts +13 -0
- package/lib/services/ICanaryTestLatencyMetricsOverride.js +3 -0
- package/lib/services/ICanaryTestMetricsOverride.d.ts +0 -12
- package/lib/services/ICanaryTestMetricsOverride.js +1 -1
- package/lib/services/IInstrumentedServiceMultiAZObservability.d.ts +13 -3
- package/lib/services/IInstrumentedServiceMultiAZObservability.js +1 -1
- package/lib/services/IOperation.d.ts +8 -6
- package/lib/services/IOperation.js +1 -1
- package/lib/services/IOperationAvailabilityMetricDetails.d.ts +18 -0
- package/lib/services/IOperationAvailabilityMetricDetails.js +3 -0
- package/lib/services/IOperationLatencyMetricDetails.d.ts +12 -0
- package/lib/services/IOperationLatencyMetricDetails.js +3 -0
- package/lib/services/IOperationMetricDetails.d.ts +0 -12
- package/lib/services/IOperationMetricDetails.js +1 -1
- package/lib/services/IService.d.ts +4 -3
- package/lib/services/IService.js +1 -1
- package/lib/services/IServiceAvailabilityMetricDetails.d.ts +18 -0
- package/lib/services/IServiceAvailabilityMetricDetails.js +3 -0
- package/lib/services/IServiceLatencyMetricDetails.d.ts +12 -0
- package/lib/services/IServiceLatencyMetricDetails.js +3 -0
- package/lib/services/IServiceMetricDetails.d.ts +0 -12
- package/lib/services/IServiceMetricDetails.js +1 -1
- package/lib/services/InstrumentedServiceMultiAZObservability.d.ts +15 -3
- package/lib/services/InstrumentedServiceMultiAZObservability.js +197 -208
- package/lib/services/Operation.d.ts +8 -6
- package/lib/services/Operation.js +2 -2
- package/lib/services/OperationAvailabilityMetricDetails.d.ts +22 -0
- package/lib/services/OperationAvailabilityMetricDetails.js +24 -0
- package/lib/services/OperationLatencyMetricDetails.d.ts +16 -0
- package/lib/services/OperationLatencyMetricDetails.js +21 -0
- package/lib/services/OperationMetricDetails.d.ts +1 -13
- package/lib/services/OperationMetricDetails.js +2 -8
- package/lib/services/Service.d.ts +4 -3
- package/lib/services/Service.js +2 -2
- package/lib/services/ServiceAvailabilityMetricDetails.d.ts +21 -0
- package/lib/services/ServiceAvailabilityMetricDetails.js +20 -0
- package/lib/services/ServiceLatencyMetricDetails.d.ts +15 -0
- package/lib/services/ServiceLatencyMetricDetails.js +19 -0
- package/lib/services/ServiceMetricDetails.d.ts +1 -13
- package/lib/services/ServiceMetricDetails.js +2 -4
- package/lib/services/props/CanaryMetricProps.d.ts +4 -3
- package/lib/services/props/CanaryMetricProps.js +1 -1
- package/lib/services/props/CanaryTestAvailabilityMetricsOverrideProps.d.ts +22 -0
- package/lib/services/props/CanaryTestAvailabilityMetricsOverrideProps.js +3 -0
- package/lib/services/props/CanaryTestLatencyMetricsOverrideProps.d.ts +14 -0
- package/lib/services/props/CanaryTestLatencyMetricsOverrideProps.js +3 -0
- package/lib/services/props/CanaryTestMetricsOverrideProps.d.ts +0 -16
- package/lib/services/props/CanaryTestMetricsOverrideProps.js +1 -1
- package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.d.ts +1 -1
- package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.js +1 -1
- package/lib/services/props/MetricDimensions.js +1 -1
- package/lib/services/props/OperationAvailabilityMetricDetailsProps.d.ts +22 -0
- package/lib/services/props/OperationAvailabilityMetricDetailsProps.js +3 -0
- package/lib/services/props/OperationLatencyMetricDetailsProps.d.ts +14 -0
- package/lib/services/props/OperationLatencyMetricDetailsProps.js +3 -0
- package/lib/services/props/OperationMetricDetailsProps.d.ts +0 -16
- package/lib/services/props/OperationMetricDetailsProps.js +1 -1
- package/lib/services/props/OperationProps.d.ts +4 -3
- package/lib/services/props/OperationProps.js +1 -1
- package/lib/services/props/ServiceAvailabilityMetricDetailsProps.d.ts +18 -0
- package/lib/services/props/ServiceAvailabilityMetricDetailsProps.js +3 -0
- package/lib/services/props/ServiceLatencyMetricDetailsProps.d.ts +12 -0
- package/lib/services/props/ServiceLatencyMetricDetailsProps.js +3 -0
- package/lib/services/props/ServiceMetricDetailsProps.d.ts +0 -12
- package/lib/services/props/ServiceMetricDetailsProps.js +1 -1
- package/lib/services/props/ServiceProps.d.ts +4 -3
- package/lib/services/props/ServiceProps.js +1 -1
- package/lib/utilities/MetricsHelper.d.ts +17 -9
- package/lib/utilities/MetricsHelper.js +34 -10
- package/package.json +10 -10
- package/lib/services/IBasicServiceMultiAZObservability.d.ts +0 -45
- package/lib/services/IBasicServiceMultiAZObservability.js +0 -3
package/README.md
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
  
|
|
2
|
+
|
|
1
3
|
# multi-az-observability
|
|
2
4
|
This is a CDK construct for multi-AZ observability to help detect single-AZ impairments. This is currently an `alpha` version, but is being used in the AWS [Advanced Multi-AZ Resilience Patterns](https://catalog.workshops.aws/multi-az-gray-failures/en-US) workshop.
|
|
3
5
|
|
|
4
|
-
There is a lot of available information to think through and combine to provide signals about single-AZ impact. To simplify the setup and use reasonable defaults, this construct (available in TypeScript, Go, Python,
|
|
6
|
+
There is a lot of available information to think through and combine to provide signals about single-AZ impact. To simplify the setup and use reasonable defaults, this construct (available in [TypeScript](https://www.npmjs.com/package/@cdklabs/multi-az-observability), [Go](https://github.com/cdklabs/cdk-multi-az-observability-go), [Python](https://pypi.org/project/cdklabs.multi-az-observability/), [.NET](https://www.nuget.org/packages/Cdklabs.MultiAZObservability), and [Java](https://central.sonatype.com/artifact/io.github.cdklabs/cdk-multi-az-observability)) sets up the necessary observability. To use the CDK construct, you first define your service like this:
|
|
5
7
|
|
|
6
8
|
```csharp
|
|
7
9
|
var wildRydesService = new Service(new ServiceProps(){
|
|
@@ -35,7 +37,7 @@ var wildRydesService = new Service(new ServiceProps(){
|
|
|
35
37
|
GraphedSuccessStatistics = new string[] { "p50", "p99", "tm50", "tm99" },
|
|
36
38
|
MetricNamespace = metricsNamespace,
|
|
37
39
|
Period = Duration.Seconds(60),
|
|
38
|
-
SuccessAlarmThreshold = 100,
|
|
40
|
+
SuccessAlarmThreshold = Duration.Millis(100),
|
|
39
41
|
SuccessMetricNames = new string[] {"SuccessLatency"},
|
|
40
42
|
Unit = Unit.MILLISECONDS,
|
|
41
43
|
}),
|
|
@@ -69,11 +71,11 @@ wildRydesService.AddOperation(new Operation(new OperationProps() {
|
|
|
69
71
|
}, wildRydesService.DefaultAvailabilityMetricDetails),
|
|
70
72
|
ServerSideLatencyMetricDetails = new OperationMetricDetails(new OperationMetricDetailsProps() {
|
|
71
73
|
OperationName = "Signin",
|
|
72
|
-
SuccessAlarmThreshold = 150,
|
|
74
|
+
SuccessAlarmThreshold = Duration.Millis(150),
|
|
73
75
|
MetricDimensions = new MetricDimensions(new Dictionary<string, string> {{ "Operation", "Signin"}}, "AZ-ID", "Region")
|
|
74
76
|
}, wildRydesService.DefaultLatencyMetricDetails),
|
|
75
77
|
CanaryTestLatencyMetricsOverride = new CanaryTestMetricsOverride(new CanaryTestMetricsOverrideProps() {
|
|
76
|
-
SuccessAlarmThreshold = 250
|
|
78
|
+
SuccessAlarmThreshold = Duration.Millis(250),
|
|
77
79
|
})
|
|
78
80
|
}));
|
|
79
81
|
wildRydesService.AddOperation(new Operation(new OperationProps() {
|
|
@@ -88,11 +90,11 @@ wildRydesService.AddOperation(new Operation(new OperationProps() {
|
|
|
88
90
|
}, wildRydesService.DefaultAvailabilityMetricDetails),
|
|
89
91
|
ServerSideLatencyMetricDetails = new OperationMetricDetails(new OperationMetricDetailsProps() {
|
|
90
92
|
OperationName = "Pay",
|
|
91
|
-
SuccessAlarmThreshold = 200,
|
|
93
|
+
SuccessAlarmThreshold = Duration.Millis(200),
|
|
92
94
|
MetricDimensions = new MetricDimensions(new Dictionary<string, string> {{ "Operation", "Pay"}}, "AZ-ID", "Region")
|
|
93
95
|
}, wildRydesService.DefaultLatencyMetricDetails),
|
|
94
96
|
CanaryTestLatencyMetricsOverride = new CanaryTestMetricsOverride(new CanaryTestMetricsOverrideProps() {
|
|
95
|
-
SuccessAlarmThreshold = 300
|
|
97
|
+
SuccessAlarmThreshold = Duration.Millis(300)
|
|
96
98
|
})
|
|
97
99
|
}));
|
|
98
100
|
wildRydesService.AddOperation(new Operation(new OperationProps() {
|
|
@@ -107,11 +109,11 @@ wildRydesService.AddOperation(new Operation(new OperationProps() {
|
|
|
107
109
|
}, wildRydesService.DefaultAvailabilityMetricDetails),
|
|
108
110
|
ServerSideLatencyMetricDetails = new OperationMetricDetails(new OperationMetricDetailsProps() {
|
|
109
111
|
OperationName = "Ride",
|
|
110
|
-
SuccessAlarmThreshold = 350,
|
|
112
|
+
SuccessAlarmThreshold = Duration.Millis(350),
|
|
111
113
|
MetricDimensions = new MetricDimensions(new Dictionary<string, string> {{ "Operation", "Ride"}}, "AZ-ID", "Region")
|
|
112
114
|
}, wildRydesService.DefaultLatencyMetricDetails),
|
|
113
115
|
CanaryTestLatencyMetricsOverride = new CanaryTestMetricsOverride(new CanaryTestMetricsOverrideProps() {
|
|
114
|
-
SuccessAlarmThreshold = 550
|
|
116
|
+
SuccessAlarmThreshold = Duration.Millis(550)
|
|
115
117
|
})
|
|
116
118
|
}));
|
|
117
119
|
wildRydesService.AddOperation(new Operation(new OperationProps() {
|
|
@@ -126,11 +128,11 @@ wildRydesService.AddOperation(new Operation(new OperationProps() {
|
|
|
126
128
|
}, wildRydesService.DefaultAvailabilityMetricDetails),
|
|
127
129
|
ServerSideLatencyMetricDetails = new OperationMetricDetails(new OperationMetricDetailsProps() {
|
|
128
130
|
OperationName = "Home",
|
|
129
|
-
SuccessAlarmThreshold = 100,
|
|
131
|
+
SuccessAlarmThreshold = Duration.Millis(100),
|
|
130
132
|
MetricDimensions = new MetricDimensions(new Dictionary<string, string> {{ "Operation", "Ride"}}, "AZ-ID", "Region")
|
|
131
133
|
}, wildRydesService.DefaultLatencyMetricDetails),
|
|
132
134
|
CanaryTestLatencyMetricsOverride = new CanaryTestMetricsOverride(new CanaryTestMetricsOverrideProps() {
|
|
133
|
-
SuccessAlarmThreshold = 200
|
|
135
|
+
SuccessAlarmThreshold = Duration.Millis(200)
|
|
134
136
|
})
|
|
135
137
|
}));
|
|
136
138
|
```
|
|
@@ -146,30 +148,35 @@ InstrumentedServiceMultiAZObservability multiAvailabilityZoneObservability = new
|
|
|
146
148
|
});
|
|
147
149
|
```
|
|
148
150
|
|
|
149
|
-
You define some characteristics of the service, default values for metrics and alarms, and then add operations as well as any overrides for default values that you need. The construct can also automatically create synthetic canaries that test each operation with a very simple HTTP check, or you can configure your own synthetics and just tell the construct about the metric details and optionally log files. This creates metrics, alarms, and dashboards that can be used to detect single-AZ impact.
|
|
151
|
+
You define some characteristics of the service, default values for metrics and alarms, and then add operations as well as any overrides for default values that you need. The construct can also automatically create synthetic canaries that test each operation with a very simple HTTP check, or you can configure your own synthetics and just tell the construct about the metric details and optionally log files. This creates metrics, alarms, and dashboards that can be used to detect single-AZ impact. You can access these alarms from the `multiAvailabilityZoneObservability` object and use them in your CDK project to start automation, send SNS notifications, or incorporate in your own dashboards.
|
|
150
152
|
|
|
151
|
-
If you don't have service specific logs and custom metrics with per-AZ dimensions, you can still use the construct to evaluate ALB and NAT Gateway metrics to find single AZ
|
|
153
|
+
If you don't have service specific logs and custom metrics with per-AZ dimensions, you can still use the construct to evaluate ALB and/or NAT Gateway metrics to find single AZ impairments.
|
|
152
154
|
|
|
153
155
|
```csharp
|
|
154
|
-
BasicServiceMultiAZObservability
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
156
|
+
BasicServiceMultiAZObservability multiAZObservability = new BasicServiceMultiAZObservability(this, "basic-service-", new BasicServiceMultiAZObservabilityProps() {
|
|
157
|
+
ApplicationLoadBalancerProps = new ApplicationLoadBalancerDetectionProps() {
|
|
158
|
+
ApplicationLoadBalancers = [ myALB ],
|
|
159
|
+
LatencyStatistic = Stats.Percentile(99),
|
|
160
|
+
FaultCountPercentThreshold = 1,
|
|
161
|
+
LatencyThreshold = Duration.Millis(500)
|
|
162
|
+
},
|
|
163
|
+
NatGatewayProps = new NatGatewayDetectionProps() {
|
|
164
|
+
PacketLossPercentThreshold = 0.01,
|
|
165
|
+
NatGateways = {
|
|
166
|
+
{ "us-east-1a", [ natGateway1 ] },
|
|
167
|
+
{ "us-east-1b", [ natGateway2 ] },
|
|
168
|
+
{ "us-east-1c", [ natGateway3 ] }
|
|
169
|
+
},
|
|
160
170
|
},
|
|
161
171
|
CreateDashboard = true,
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
PacketLossImpactPercentageThreshold = 0.01, // The percentage of packet loss to alarm on for the NAT Gateways in the same AZ
|
|
172
|
+
DatapointsToAlarm = 2,
|
|
173
|
+
EvaluationPeriods = 3,
|
|
165
174
|
ServiceName = "WildRydes",
|
|
166
|
-
Period = Duration.Seconds(60),
|
|
167
|
-
Interval = Duration.Minutes(60)
|
|
168
|
-
EvaluationPeriods = 5,
|
|
169
|
-
DatapointsToAlarm = 3
|
|
175
|
+
Period = Duration.Seconds(60),
|
|
176
|
+
Interval = Duration.Minutes(60),
|
|
170
177
|
});
|
|
171
178
|
```
|
|
172
179
|
|
|
173
180
|
If you provide a load balancer, the construct assumes it is deployed in each AZ of the VPC the load balancer is associated with and will look for HTTP metrics using those AZs as dimensions.
|
|
174
181
|
|
|
175
|
-
Both options support running workloads on EC2, ECS, Lambda, and EKS.
|
|
182
|
+
Both options support running workloads on EC2, ECS, Lambda, and EKS.
|
package/cdk.json
CHANGED
|
@@ -9,6 +9,8 @@ import { IContributorInsightRuleDetails } from '../services/IContributorInsightR
|
|
|
9
9
|
import { IOperation } from '../services/IOperation';
|
|
10
10
|
import { IOperationMetricDetails } from '../services/IOperationMetricDetails';
|
|
11
11
|
import { OutlierDetectionAlgorithm } from '../utilities/OutlierDetectionAlgorithm';
|
|
12
|
+
import { IOperationAvailabilityMetricDetails } from '../services/IOperationAvailabilityMetricDetails';
|
|
13
|
+
import { IOperationLatencyMetricDetails } from '../services/IOperationLatencyMetricDetails';
|
|
12
14
|
/**
|
|
13
15
|
* Class used to create availability and latency alarms and Contributor Insight rules
|
|
14
16
|
*/
|
|
@@ -22,7 +24,7 @@ export declare class AvailabilityAndLatencyAlarmsAndRules {
|
|
|
22
24
|
* @param counter
|
|
23
25
|
* @returns
|
|
24
26
|
*/
|
|
25
|
-
static createZonalAvailabilityAlarm(scope: Construct, metricDetails:
|
|
27
|
+
static createZonalAvailabilityAlarm(scope: Construct, metricDetails: IOperationAvailabilityMetricDetails, availabilityZone: string, availabilityZoneId: string, counter: number, nameSuffix?: string): IAlarm;
|
|
26
28
|
/**
|
|
27
29
|
* Creates a zonal latency alarm
|
|
28
30
|
* @param scope
|
|
@@ -32,7 +34,7 @@ export declare class AvailabilityAndLatencyAlarmsAndRules {
|
|
|
32
34
|
* @param counter
|
|
33
35
|
* @returns
|
|
34
36
|
*/
|
|
35
|
-
static createZonalLatencyAlarm(scope: Construct, metricDetails:
|
|
37
|
+
static createZonalLatencyAlarm(scope: Construct, metricDetails: IOperationLatencyMetricDetails, availabilityZone: string, availabilityZoneId: string, counter: number, nameSuffix?: string): IAlarm;
|
|
36
38
|
/**
|
|
37
39
|
* Creates a composite alarm when either latency or availability is breached in the Availabiltiy Zone
|
|
38
40
|
* @param scope
|
|
@@ -55,7 +57,7 @@ export declare class AvailabilityAndLatencyAlarmsAndRules {
|
|
|
55
57
|
* @param outlierThreshold
|
|
56
58
|
* @returns
|
|
57
59
|
*/
|
|
58
|
-
static createZonalFaultRateStaticOutlierAlarm(scope: Construct, metricDetails: IOperationMetricDetails, availabilityZoneId: string, counter: number, outlierThreshold: number, nameSuffix?: string): IAlarm;
|
|
60
|
+
static createZonalFaultRateStaticOutlierAlarm(scope: Construct, metricDetails: IOperationMetricDetails, availabilityZone: string, availabilityZoneId: string, counter: number, outlierThreshold: number, nameSuffix?: string): IAlarm;
|
|
59
61
|
/**
|
|
60
62
|
* An alarm that compares error rate in this AZ to the overall region error based only on metric data.
|
|
61
63
|
* This is different for canaries because the metrics they test at the regional level are different
|
|
@@ -69,15 +71,15 @@ export declare class AvailabilityAndLatencyAlarmsAndRules {
|
|
|
69
71
|
* @param outlierThreshold
|
|
70
72
|
* @returns
|
|
71
73
|
*/
|
|
72
|
-
static createZonalFaultRateStaticOutlierAlarmForCanaries(scope: Construct, metricDetails: IOperationMetricDetails, availabilityZoneId: string,
|
|
74
|
+
static createZonalFaultRateStaticOutlierAlarmForCanaries(scope: Construct, metricDetails: IOperationMetricDetails, availabilityZone: string, availabilityZoneId: string, availabilityZoneIds: string[], counter: number, outlierThreshold: number, nameSuffix?: string): IAlarm;
|
|
73
75
|
static createZonalFaultRateOutlierAlarm(scope: IConstruct, metricDetails: IOperationMetricDetails, availabilityZoneId: string, allAvailabilityZoneIds: string[], outlierThreshold: number, outlierDetectionFunction: IFunction, outlierDetectionAlgorithm: OutlierDetectionAlgorithm, counter: number, nameSuffix?: string): IAlarm;
|
|
74
76
|
static createZonalFaultRateOutlierAlarmForAlb(scope: IConstruct, loadBalancers: IApplicationLoadBalancer[], availabilityZoneId: string, outlierThreshold: number, outlierDetectionFunction: IFunction, outlierDetectionAlgorithm: OutlierDetectionAlgorithm, azMapper: IAvailabilityZoneMapper, counter: number, evaluationPeriods: number, datapointsToAlarm: number, period: Duration, nameSuffix?: string): IAlarm;
|
|
75
77
|
static createZonalFaultRateOutlierAlarmForNatGW(scope: IConstruct, natGateways: {
|
|
76
78
|
[key: string]: CfnNatGateway[];
|
|
77
79
|
}, availabilityZoneId: string, outlierThreshold: number, outlierDetectionFunction: IFunction, outlierDetectionAlgorithm: OutlierDetectionAlgorithm, azMapper: IAvailabilityZoneMapper, counter: number, evaluationPeriods: number, datapointsToAlarm: number, period: Duration, nameSuffix?: string): IAlarm;
|
|
78
|
-
static createZonalHighLatencyOutlierAlarm(scope: IConstruct, metricDetails:
|
|
79
|
-
static createZonalHighLatencyStaticOutlierAlarm(scope: Construct, metricDetails:
|
|
80
|
-
static createZonalHighLatencyStaticOutlierAlarmForCanaries(scope: Construct, metricDetails:
|
|
80
|
+
static createZonalHighLatencyOutlierAlarm(scope: IConstruct, metricDetails: IOperationLatencyMetricDetails, availabilityZoneId: string, allAvailabilityZoneIds: string[], outlierThreshold: number, outlierDetectionFunction: IFunction, outlierDetectionAlgorithm: OutlierDetectionAlgorithm, counter: number, nameSuffix?: string): IAlarm;
|
|
81
|
+
static createZonalHighLatencyStaticOutlierAlarm(scope: Construct, metricDetails: IOperationLatencyMetricDetails, availabilityZone: string, availabilityZoneId: string, counter: number, outlierThreshold: number, nameSuffix?: string): IAlarm;
|
|
82
|
+
static createZonalHighLatencyStaticOutlierAlarmForCanaries(scope: Construct, metricDetails: IOperationLatencyMetricDetails, availabilityZone: string, availabilityZoneId: string, availabilityZones: string[], counter: number, outlierThreshold: number, nameSuffix?: string): IAlarm;
|
|
81
83
|
/**
|
|
82
84
|
* An insight rule that calculates how many instances are responding to requests in
|
|
83
85
|
* the specified AZ. Only useful for server-side metrics since the canary doesn't record instance id metrics.
|
|
@@ -120,7 +122,7 @@ export declare class AvailabilityAndLatencyAlarmsAndRules {
|
|
|
120
122
|
* @param counter
|
|
121
123
|
* @returns
|
|
122
124
|
*/
|
|
123
|
-
static createServerSideInstanceHighLatencyContributorsInThisAZRule(scope: Construct, metricDetails:
|
|
125
|
+
static createServerSideInstanceHighLatencyContributorsInThisAZRule(scope: Construct, metricDetails: IOperationLatencyMetricDetails, availabilityZoneId: string, ruleDetails: IContributorInsightRuleDetails, counter: number, nameSuffix?: string): CfnInsightRule;
|
|
124
126
|
/**
|
|
125
127
|
* An alarm that indicates some percentage of the instances in this AZ are producing errors. Only
|
|
126
128
|
* useful for server-side metrics since the canary doesn't record instance id metrics.
|
|
@@ -204,7 +206,7 @@ export declare class AvailabilityAndLatencyAlarmsAndRules {
|
|
|
204
206
|
* @param counter
|
|
205
207
|
* @returns
|
|
206
208
|
*/
|
|
207
|
-
static createRegionalAvailabilityAlarm(scope: Construct, metricDetails:
|
|
209
|
+
static createRegionalAvailabilityAlarm(scope: Construct, metricDetails: IOperationAvailabilityMetricDetails, nameSuffix: string): IAlarm;
|
|
208
210
|
/**
|
|
209
211
|
* Creates a regional latency alarm for the operation
|
|
210
212
|
* @param scope
|
|
@@ -213,7 +215,7 @@ export declare class AvailabilityAndLatencyAlarmsAndRules {
|
|
|
213
215
|
* @param counter
|
|
214
216
|
* @returns
|
|
215
217
|
*/
|
|
216
|
-
static createRegionalLatencyAlarm(scope: Construct, metricDetails:
|
|
218
|
+
static createRegionalLatencyAlarm(scope: Construct, metricDetails: IOperationLatencyMetricDetails, nameSuffix: string): IAlarm;
|
|
217
219
|
/**
|
|
218
220
|
* A composite alarm combining latency and availability alarms for this operation in the region
|
|
219
221
|
* as measured from either the server side or canary
|
|
@@ -224,7 +226,7 @@ export declare class AvailabilityAndLatencyAlarmsAndRules {
|
|
|
224
226
|
* @param regionalLatencyAlarm
|
|
225
227
|
* @returns
|
|
226
228
|
*/
|
|
227
|
-
static
|
|
228
|
-
static createRegionalInstanceContributorsToHighLatency(scope: Construct, metricDetails:
|
|
229
|
+
static createRegionalAvailabilityOrLatencyImpactAlarm(scope: Construct, operationName: string, nameSuffix: string, regionalAvailabilityAlarm: IAlarm, regionalLatencyAlarm: IAlarm): IAlarm;
|
|
230
|
+
static createRegionalInstanceContributorsToHighLatency(scope: Construct, metricDetails: IOperationLatencyMetricDetails, ruleDetails: IContributorInsightRuleDetails): CfnInsightRule;
|
|
229
231
|
static createRegionalInstanceContributorsToFaults(scope: Construct, metricDetails: IOperationMetricDetails, ruleDetails: IContributorInsightRuleDetails): CfnInsightRule;
|
|
230
232
|
}
|