diff --git a/API.md b/API.md
index 4013f88b..7d59947e 100644
--- a/API.md
+++ b/API.md
@@ -4477,9 +4477,13 @@ const apiGatewayMonitoringOptions: ApiGatewayMonitoringOptions = { ... }
| addLatencyTM70Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM90Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM95Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addLatencyTM95OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM9999Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addLatencyTM9999OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM999Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addLatencyTM999OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM99Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addLatencyTM99OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLowTpsAlarm
| {[ key: string ]: LowTpsThreshold}
| *No description.* |
| latencyTypesToRender
| LatencyType[]
| You can specify what latency types you want to be rendered in the dashboards. |
@@ -4763,6 +4767,16 @@ public readonly addLatencyTM95Alarm: {[ key: string ]: LatencyThreshold};
---
+##### `addLatencyTM95OutlierAlarm`Optional
+
+```typescript
+public readonly addLatencyTM95OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLatencyTM9999Alarm`Optional
```typescript
@@ -4773,6 +4787,16 @@ public readonly addLatencyTM9999Alarm: {[ key: string ]: LatencyThreshold};
---
+##### `addLatencyTM9999OutlierAlarm`Optional
+
+```typescript
+public readonly addLatencyTM9999OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLatencyTM999Alarm`Optional
```typescript
@@ -4783,6 +4807,16 @@ public readonly addLatencyTM999Alarm: {[ key: string ]: LatencyThreshold};
---
+##### `addLatencyTM999OutlierAlarm`Optional
+
+```typescript
+public readonly addLatencyTM999OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLatencyTM99Alarm`Optional
```typescript
@@ -4793,6 +4827,16 @@ public readonly addLatencyTM99Alarm: {[ key: string ]: LatencyThreshold};
---
+##### `addLatencyTM99OutlierAlarm`Optional
+
+```typescript
+public readonly addLatencyTM99OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLowTpsAlarm`Optional
```typescript
@@ -4867,9 +4911,13 @@ const apiGatewayMonitoringProps: ApiGatewayMonitoringProps = { ... }
| addLatencyTM70Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM90Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM95Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addLatencyTM95OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM9999Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addLatencyTM9999OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM999Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addLatencyTM999OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM99Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addLatencyTM99OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLowTpsAlarm
| {[ key: string ]: LowTpsThreshold}
| *No description.* |
| latencyTypesToRender
| LatencyType[]
| You can specify what latency types you want to be rendered in the dashboards. |
@@ -5222,6 +5270,16 @@ public readonly addLatencyTM95Alarm: {[ key: string ]: LatencyThreshold};
---
+##### `addLatencyTM95OutlierAlarm`Optional
+
+```typescript
+public readonly addLatencyTM95OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLatencyTM9999Alarm`Optional
```typescript
@@ -5232,6 +5290,16 @@ public readonly addLatencyTM9999Alarm: {[ key: string ]: LatencyThreshold};
---
+##### `addLatencyTM9999OutlierAlarm`Optional
+
+```typescript
+public readonly addLatencyTM9999OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLatencyTM999Alarm`Optional
```typescript
@@ -5242,6 +5310,16 @@ public readonly addLatencyTM999Alarm: {[ key: string ]: LatencyThreshold};
---
+##### `addLatencyTM999OutlierAlarm`Optional
+
+```typescript
+public readonly addLatencyTM999OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLatencyTM99Alarm`Optional
```typescript
@@ -5252,6 +5330,16 @@ public readonly addLatencyTM99Alarm: {[ key: string ]: LatencyThreshold};
---
+##### `addLatencyTM99OutlierAlarm`Optional
+
+```typescript
+public readonly addLatencyTM99OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLowTpsAlarm`Optional
```typescript
@@ -5416,9 +5504,13 @@ const apiGatewayV2HttpApiMonitoringProps: ApiGatewayV2HttpApiMonitoringProps = {
| addIntegrationLatencyTM70Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addIntegrationLatencyTM90Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addIntegrationLatencyTM95Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addIntegrationLatencyTM95OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addIntegrationLatencyTM9999Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addIntegrationLatencyTM9999OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addIntegrationLatencyTM999Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addIntegrationLatencyTM999OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addIntegrationLatencyTM99Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addIntegrationLatencyTM99OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyAverageAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyP100Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyP50Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
@@ -5432,9 +5524,13 @@ const apiGatewayV2HttpApiMonitoringProps: ApiGatewayV2HttpApiMonitoringProps = {
| addLatencyTM70Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM90Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM95Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addLatencyTM95OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM9999Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addLatencyTM9999OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM999Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addLatencyTM999OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM99Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addLatencyTM99OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLowTpsAlarm
| {[ key: string ]: LowTpsThreshold}
| *No description.* |
| latencyTypesToRender
| LatencyType[]
| You can specify what latency types you want to be rendered in the dashboards. |
@@ -5785,6 +5881,16 @@ public readonly addIntegrationLatencyTM95Alarm: {[ key: string ]: LatencyThresho
---
+##### `addIntegrationLatencyTM95OutlierAlarm`Optional
+
+```typescript
+public readonly addIntegrationLatencyTM95OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addIntegrationLatencyTM9999Alarm`Optional
```typescript
@@ -5795,6 +5901,16 @@ public readonly addIntegrationLatencyTM9999Alarm: {[ key: string ]: LatencyThres
---
+##### `addIntegrationLatencyTM9999OutlierAlarm`Optional
+
+```typescript
+public readonly addIntegrationLatencyTM9999OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addIntegrationLatencyTM999Alarm`Optional
```typescript
@@ -5805,6 +5921,16 @@ public readonly addIntegrationLatencyTM999Alarm: {[ key: string ]: LatencyThresh
---
+##### `addIntegrationLatencyTM999OutlierAlarm`Optional
+
+```typescript
+public readonly addIntegrationLatencyTM999OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addIntegrationLatencyTM99Alarm`Optional
```typescript
@@ -5815,6 +5941,16 @@ public readonly addIntegrationLatencyTM99Alarm: {[ key: string ]: LatencyThresho
---
+##### `addIntegrationLatencyTM99OutlierAlarm`Optional
+
+```typescript
+public readonly addIntegrationLatencyTM99OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLatencyAverageAlarm`Optional
```typescript
@@ -5945,6 +6081,16 @@ public readonly addLatencyTM95Alarm: {[ key: string ]: LatencyThreshold};
---
+##### `addLatencyTM95OutlierAlarm`Optional
+
+```typescript
+public readonly addLatencyTM95OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLatencyTM9999Alarm`Optional
```typescript
@@ -5955,6 +6101,16 @@ public readonly addLatencyTM9999Alarm: {[ key: string ]: LatencyThreshold};
---
+##### `addLatencyTM9999OutlierAlarm`Optional
+
+```typescript
+public readonly addLatencyTM9999OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLatencyTM999Alarm`Optional
```typescript
@@ -5965,6 +6121,16 @@ public readonly addLatencyTM999Alarm: {[ key: string ]: LatencyThreshold};
---
+##### `addLatencyTM999OutlierAlarm`Optional
+
+```typescript
+public readonly addLatencyTM999OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLatencyTM99Alarm`Optional
```typescript
@@ -5975,6 +6141,16 @@ public readonly addLatencyTM99Alarm: {[ key: string ]: LatencyThreshold};
---
+##### `addLatencyTM99OutlierAlarm`Optional
+
+```typescript
+public readonly addLatencyTM99OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLowTpsAlarm`Optional
```typescript
@@ -6043,9 +6219,13 @@ const apiGatewayV2MonitoringOptions: ApiGatewayV2MonitoringOptions = { ... }
| addIntegrationLatencyTM70Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addIntegrationLatencyTM90Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addIntegrationLatencyTM95Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addIntegrationLatencyTM95OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addIntegrationLatencyTM9999Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addIntegrationLatencyTM9999OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addIntegrationLatencyTM999Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addIntegrationLatencyTM999OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addIntegrationLatencyTM99Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addIntegrationLatencyTM99OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyAverageAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyP100Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyP50Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
@@ -6059,9 +6239,13 @@ const apiGatewayV2MonitoringOptions: ApiGatewayV2MonitoringOptions = { ... }
| addLatencyTM70Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM90Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM95Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addLatencyTM95OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM9999Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addLatencyTM9999OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM999Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addLatencyTM999OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLatencyTM99Alarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
+| addLatencyTM99OutlierAlarm
| {[ key: string ]: LatencyThreshold}
| *No description.* |
| addLowTpsAlarm
| {[ key: string ]: LowTpsThreshold}
| *No description.* |
| latencyTypesToRender
| LatencyType[]
| You can specify what latency types you want to be rendered in the dashboards. |
@@ -6345,6 +6529,16 @@ public readonly addIntegrationLatencyTM95Alarm: {[ key: string ]: LatencyThresho
---
+##### `addIntegrationLatencyTM95OutlierAlarm`Optional
+
+```typescript
+public readonly addIntegrationLatencyTM95OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addIntegrationLatencyTM9999Alarm`Optional
```typescript
@@ -6355,6 +6549,16 @@ public readonly addIntegrationLatencyTM9999Alarm: {[ key: string ]: LatencyThres
---
+##### `addIntegrationLatencyTM9999OutlierAlarm`Optional
+
+```typescript
+public readonly addIntegrationLatencyTM9999OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addIntegrationLatencyTM999Alarm`Optional
```typescript
@@ -6365,6 +6569,16 @@ public readonly addIntegrationLatencyTM999Alarm: {[ key: string ]: LatencyThresh
---
+##### `addIntegrationLatencyTM999OutlierAlarm`Optional
+
+```typescript
+public readonly addIntegrationLatencyTM999OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addIntegrationLatencyTM99Alarm`Optional
```typescript
@@ -6375,6 +6589,16 @@ public readonly addIntegrationLatencyTM99Alarm: {[ key: string ]: LatencyThresho
---
+##### `addIntegrationLatencyTM99OutlierAlarm`Optional
+
+```typescript
+public readonly addIntegrationLatencyTM99OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLatencyAverageAlarm`Optional
```typescript
@@ -6505,6 +6729,16 @@ public readonly addLatencyTM95Alarm: {[ key: string ]: LatencyThreshold};
---
+##### `addLatencyTM95OutlierAlarm`Optional
+
+```typescript
+public readonly addLatencyTM95OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLatencyTM9999Alarm`Optional
```typescript
@@ -6515,6 +6749,16 @@ public readonly addLatencyTM9999Alarm: {[ key: string ]: LatencyThreshold};
---
+##### `addLatencyTM9999OutlierAlarm`Optional
+
+```typescript
+public readonly addLatencyTM9999OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLatencyTM999Alarm`Optional
```typescript
@@ -6525,6 +6769,16 @@ public readonly addLatencyTM999Alarm: {[ key: string ]: LatencyThreshold};
---
+##### `addLatencyTM999OutlierAlarm`Optional
+
+```typescript
+public readonly addLatencyTM999OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLatencyTM99Alarm`Optional
```typescript
@@ -6535,6 +6789,16 @@ public readonly addLatencyTM99Alarm: {[ key: string ]: LatencyThreshold};
---
+##### `addLatencyTM99OutlierAlarm`Optional
+
+```typescript
+public readonly addLatencyTM99OutlierAlarm: {[ key: string ]: LatencyThreshold};
+```
+
+- *Type:* {[ key: string ]: LatencyThreshold}
+
+---
+
##### `addLowTpsAlarm`Optional
```typescript
@@ -68162,6 +68426,10 @@ Create a two sets of dashboards: standard set (interactive) and a copy (bitmap).
| TM99
| *No description.* |
| TM999
| *No description.* |
| TM9999
| *No description.* |
+| TM95_TOP
| *No description.* |
+| TM99_TOP
| *No description.* |
+| TM999_TOP
| *No description.* |
+| TM9999_TOP
| *No description.* |
| AVERAGE
| *No description.* |
---
@@ -68241,6 +68509,26 @@ Create a two sets of dashboards: standard set (interactive) and a copy (bitmap).
---
+##### `TM95_TOP`
+
+---
+
+
+##### `TM99_TOP`
+
+---
+
+
+##### `TM999_TOP`
+
+---
+
+
+##### `TM9999_TOP`
+
+---
+
+
##### `AVERAGE`
---
@@ -68307,6 +68595,10 @@ Metric aggregation statistic to be used with the IMetric objects.
| TM80_BOTH
| trimmed mean; |
| TM75_BOTH
| trimmed mean; |
| TM70_BOTH
| trimmed mean; |
+| TM95_TOP
| trimmed mean; |
+| TM99_TOP
| trimmed mean; |
+| TM999_TOP
| trimmed mean; |
+| TM9999_TOP
| trimmed mean; |
| WM50
| winsorized mean; |
| WM70
| winsorized mean; |
| WM90
| winsorized mean; |
@@ -68511,6 +68803,42 @@ calculates the average after removing the 30% lowest data points and the 30% hig
---
+##### `TM95_TOP`
+
+trimmed mean;
+
+calculates the average after removing the 95% lowest data points
+
+---
+
+
+##### `TM99_TOP`
+
+trimmed mean;
+
+calculates the average after removing the 99% lowest data points
+
+---
+
+
+##### `TM999_TOP`
+
+trimmed mean;
+
+calculates the average after removing the 99.9% lowest data points
+
+---
+
+
+##### `TM9999_TOP`
+
+trimmed mean;
+
+calculates the average after removing the 99.99% lowest data points
+
+---
+
+
##### `WM50`
winsorized mean;
diff --git a/lib/common/metric/MetricStatistic.ts b/lib/common/metric/MetricStatistic.ts
index a6d7561a..6c30e048 100644
--- a/lib/common/metric/MetricStatistic.ts
+++ b/lib/common/metric/MetricStatistic.ts
@@ -65,6 +65,7 @@ export enum MetricStatistic {
* trimmed mean; calculates the average after removing the 0.01% of data points with the highest values
*/
TM9999 = "tm99.99",
+
/**
* trimmed mean; calculates the average after removing the 1% lowest data points and the 1% highest data points
*/
@@ -94,6 +95,23 @@ export enum MetricStatistic {
*/
TM70_BOTH = "TM(30%:70%)",
+ /**
+ * trimmed mean; calculates the average after removing the 95% lowest data points
+ */
+ TM95_TOP = "TM(95%:100%)",
+ /**
+ * trimmed mean; calculates the average after removing the 99% lowest data points
+ */
+ TM99_TOP = "TM(99%:100%)",
+ /**
+ * trimmed mean; calculates the average after removing the 99.9% lowest data points
+ */
+ TM999_TOP = "TM(99.9%:100%)",
+ /**
+ * trimmed mean; calculates the average after removing the 99.99% lowest data points
+ */
+ TM9999_TOP = "TM(99.99%:100%)",
+
/**
* winsorized mean; calculates the average while treating the 50% of the highest values to be equal to the value at the 50th percentile
*/
diff --git a/lib/common/monitoring/alarms/LatencyAlarmFactory.ts b/lib/common/monitoring/alarms/LatencyAlarmFactory.ts
index 6849a802..9d18c751 100644
--- a/lib/common/monitoring/alarms/LatencyAlarmFactory.ts
+++ b/lib/common/monitoring/alarms/LatencyAlarmFactory.ts
@@ -23,6 +23,10 @@ export enum LatencyType {
TM99 = "TM99",
TM999 = "TM999",
TM9999 = "TM9999",
+ TM95_TOP = "TM(95%:100%)",
+ TM99_TOP = "TM(99%:100%)",
+ TM999_TOP = "TM(99.9%:100%)",
+ TM9999_TOP = "TM(99.99%:100%)",
AVERAGE = "Average",
}
@@ -58,6 +62,14 @@ export function getLatencyTypeStatistic(latencyType: LatencyType) {
return MetricStatistic.TM999;
case LatencyType.TM9999:
return MetricStatistic.TM9999;
+ case LatencyType.TM95_TOP:
+ return MetricStatistic.TM95_TOP;
+ case LatencyType.TM99_TOP:
+ return MetricStatistic.TM99_TOP;
+ case LatencyType.TM999_TOP:
+ return MetricStatistic.TM999_TOP;
+ case LatencyType.TM9999_TOP:
+ return MetricStatistic.TM9999_TOP;
case LatencyType.AVERAGE:
return MetricStatistic.AVERAGE;
default:
@@ -98,6 +110,10 @@ export function getLatencyTypeLabel(latencyType: LatencyType) {
return latencyType.replace("999", "99.9") + averageSuffix;
case LatencyType.P9999:
case LatencyType.TM9999:
+ case LatencyType.TM95_TOP:
+ case LatencyType.TM99_TOP:
+ case LatencyType.TM999_TOP:
+ case LatencyType.TM9999_TOP:
// we need proper decimal here
return latencyType.replace("9999", "99.99") + averageSuffix;
case LatencyType.AVERAGE:
diff --git a/lib/monitoring/aws-apigateway/ApiGatewayMonitoring.ts b/lib/monitoring/aws-apigateway/ApiGatewayMonitoring.ts
index ff1ad9e6..66d8e1da 100644
--- a/lib/monitoring/aws-apigateway/ApiGatewayMonitoring.ts
+++ b/lib/monitoring/aws-apigateway/ApiGatewayMonitoring.ts
@@ -64,6 +64,10 @@ export interface ApiGatewayMonitoringOptions extends BaseMonitoringProps {
readonly addLatencyTM99Alarm?: Record;
readonly addLatencyTM999Alarm?: Record;
readonly addLatencyTM9999Alarm?: Record;
+ readonly addLatencyTM95OutlierAlarm?: Record;
+ readonly addLatencyTM99OutlierAlarm?: Record;
+ readonly addLatencyTM999OutlierAlarm?: Record;
+ readonly addLatencyTM9999OutlierAlarm?: Record;
readonly addLatencyAverageAlarm?: Record;
readonly addLowTpsAlarm?: Record;
@@ -175,6 +179,10 @@ export class ApiGatewayMonitoring extends Monitoring {
[LatencyType.TM99]: props.addLatencyTM99Alarm,
[LatencyType.TM999]: props.addLatencyTM999Alarm,
[LatencyType.TM9999]: props.addLatencyTM9999Alarm,
+ [LatencyType.TM95_TOP]: props.addLatencyTM95OutlierAlarm,
+ [LatencyType.TM99_TOP]: props.addLatencyTM99OutlierAlarm,
+ [LatencyType.TM999_TOP]: props.addLatencyTM999OutlierAlarm,
+ [LatencyType.TM9999_TOP]: props.addLatencyTM999OutlierAlarm,
[LatencyType.AVERAGE]: props.addLatencyAverageAlarm,
};
diff --git a/lib/monitoring/aws-apigatewayv2/ApiGatewayV2HttpApiMonitoring.ts b/lib/monitoring/aws-apigatewayv2/ApiGatewayV2HttpApiMonitoring.ts
index b6c431f6..cf7fe1df 100644
--- a/lib/monitoring/aws-apigatewayv2/ApiGatewayV2HttpApiMonitoring.ts
+++ b/lib/monitoring/aws-apigatewayv2/ApiGatewayV2HttpApiMonitoring.ts
@@ -58,6 +58,7 @@ export interface ApiGatewayV2MonitoringOptions extends BaseMonitoringProps {
readonly addLatencyP999Alarm?: Record;
readonly addLatencyP9999Alarm?: Record;
readonly addLatencyP100Alarm?: Record;
+
readonly addLatencyTM50Alarm?: Record;
readonly addLatencyTM70Alarm?: Record;
readonly addLatencyTM90Alarm?: Record;
@@ -65,6 +66,12 @@ export interface ApiGatewayV2MonitoringOptions extends BaseMonitoringProps {
readonly addLatencyTM99Alarm?: Record;
readonly addLatencyTM999Alarm?: Record;
readonly addLatencyTM9999Alarm?: Record;
+
+ readonly addLatencyTM95OutlierAlarm?: Record;
+ readonly addLatencyTM99OutlierAlarm?: Record;
+ readonly addLatencyTM999OutlierAlarm?: Record;
+ readonly addLatencyTM9999OutlierAlarm?: Record;
+
readonly addLatencyAverageAlarm?: Record;
readonly addIntegrationLatencyP50Alarm?: Record;
@@ -75,6 +82,7 @@ export interface ApiGatewayV2MonitoringOptions extends BaseMonitoringProps {
readonly addIntegrationLatencyP999Alarm?: Record;
readonly addIntegrationLatencyP9999Alarm?: Record;
readonly addIntegrationLatencyP100Alarm?: Record;
+
readonly addIntegrationLatencyTM50Alarm?: Record;
readonly addIntegrationLatencyTM70Alarm?: Record;
readonly addIntegrationLatencyTM90Alarm?: Record;
@@ -82,6 +90,24 @@ export interface ApiGatewayV2MonitoringOptions extends BaseMonitoringProps {
readonly addIntegrationLatencyTM99Alarm?: Record;
readonly addIntegrationLatencyTM999Alarm?: Record;
readonly addIntegrationLatencyTM9999Alarm?: Record;
+
+ readonly addIntegrationLatencyTM95OutlierAlarm?: Record<
+ string,
+ LatencyThreshold
+ >;
+ readonly addIntegrationLatencyTM99OutlierAlarm?: Record<
+ string,
+ LatencyThreshold
+ >;
+ readonly addIntegrationLatencyTM999OutlierAlarm?: Record<
+ string,
+ LatencyThreshold
+ >;
+ readonly addIntegrationLatencyTM9999OutlierAlarm?: Record<
+ string,
+ LatencyThreshold
+ >;
+
readonly addIntegrationLatencyAverageAlarm?: Record;
readonly addLowTpsAlarm?: Record;
@@ -200,6 +226,10 @@ export class ApiGatewayV2HttpApiMonitoring extends Monitoring {
[LatencyType.TM99]: props.addLatencyTM99Alarm,
[LatencyType.TM999]: props.addLatencyTM999Alarm,
[LatencyType.TM9999]: props.addLatencyTM9999Alarm,
+ [LatencyType.TM95_TOP]: props.addLatencyTM95OutlierAlarm,
+ [LatencyType.TM99_TOP]: props.addLatencyTM99OutlierAlarm,
+ [LatencyType.TM999_TOP]: props.addLatencyTM999OutlierAlarm,
+ [LatencyType.TM9999_TOP]: props.addLatencyTM999OutlierAlarm,
[LatencyType.AVERAGE]: props.addLatencyAverageAlarm,
};
@@ -219,6 +249,10 @@ export class ApiGatewayV2HttpApiMonitoring extends Monitoring {
[LatencyType.TM99]: props.addIntegrationLatencyTM99Alarm,
[LatencyType.TM999]: props.addIntegrationLatencyTM999Alarm,
[LatencyType.TM9999]: props.addIntegrationLatencyTM9999Alarm,
+ [LatencyType.TM95_TOP]: props.addIntegrationLatencyTM95OutlierAlarm,
+ [LatencyType.TM99_TOP]: props.addIntegrationLatencyTM99OutlierAlarm,
+ [LatencyType.TM999_TOP]: props.addIntegrationLatencyTM999OutlierAlarm,
+ [LatencyType.TM9999_TOP]: props.addIntegrationLatencyTM9999OutlierAlarm,
[LatencyType.AVERAGE]: props.addIntegrationLatencyAverageAlarm,
};
diff --git a/test/monitoring/aws-apigateway/ApiGatewayMonitoring.test.ts b/test/monitoring/aws-apigateway/ApiGatewayMonitoring.test.ts
index f958df50..b18eba93 100644
--- a/test/monitoring/aws-apigateway/ApiGatewayMonitoring.test.ts
+++ b/test/monitoring/aws-apigateway/ApiGatewayMonitoring.test.ts
@@ -150,6 +150,30 @@ test("snapshot test: all alarms", () => {
datapointsToAlarm: 29999,
},
},
+ addLatencyTM95OutlierAlarm: {
+ Warning: {
+ maxLatency: Duration.millis(29999),
+ datapointsToAlarm: 29999,
+ },
+ },
+ addLatencyTM99OutlierAlarm: {
+ Warning: {
+ maxLatency: Duration.millis(29999),
+ datapointsToAlarm: 29999,
+ },
+ },
+ addLatencyTM999OutlierAlarm: {
+ Warning: {
+ maxLatency: Duration.millis(29999),
+ datapointsToAlarm: 29999,
+ },
+ },
+ addLatencyTM9999OutlierAlarm: {
+ Warning: {
+ maxLatency: Duration.millis(29999),
+ datapointsToAlarm: 29999,
+ },
+ },
addLatencyAverageAlarm: {
Warning: {
maxLatency: Duration.millis(20),
@@ -170,7 +194,7 @@ test("snapshot test: all alarms", () => {
});
addMonitoringDashboardsToStack(stack, monitoring);
- expect(numAlarmsCreated).toStrictEqual(22);
+ expect(numAlarmsCreated).toStrictEqual(26);
expect(Template.fromStack(stack)).toMatchSnapshot();
});
@@ -304,6 +328,30 @@ test("snapshot test: all alarms using interface", () => {
datapointsToAlarm: 29999,
},
},
+ addLatencyTM95OutlierAlarm: {
+ Warning: {
+ maxLatency: Duration.millis(29999),
+ datapointsToAlarm: 29999,
+ },
+ },
+ addLatencyTM99OutlierAlarm: {
+ Warning: {
+ maxLatency: Duration.millis(29999),
+ datapointsToAlarm: 29999,
+ },
+ },
+ addLatencyTM999OutlierAlarm: {
+ Warning: {
+ maxLatency: Duration.millis(29999),
+ datapointsToAlarm: 29999,
+ },
+ },
+ addLatencyTM9999OutlierAlarm: {
+ Warning: {
+ maxLatency: Duration.millis(29999),
+ datapointsToAlarm: 29999,
+ },
+ },
addLatencyAverageAlarm: {
Warning: {
maxLatency: Duration.millis(20),
@@ -324,6 +372,6 @@ test("snapshot test: all alarms using interface", () => {
});
addMonitoringDashboardsToStack(stack, monitoring);
- expect(numAlarmsCreated).toStrictEqual(22);
+ expect(numAlarmsCreated).toStrictEqual(26);
expect(Template.fromStack(stack)).toMatchSnapshot();
});
diff --git a/test/monitoring/aws-apigateway/__snapshots__/ApiGatewayMonitoring.test.ts.snap b/test/monitoring/aws-apigateway/__snapshots__/ApiGatewayMonitoring.test.ts.snap
index d7ab47a2..473849bf 100644
--- a/test/monitoring/aws-apigateway/__snapshots__/ApiGatewayMonitoring.test.ts.snap
+++ b/test/monitoring/aws-apigateway/__snapshots__/ApiGatewayMonitoring.test.ts.snap
@@ -216,7 +216,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiLatencyAverageWarning27D59767",
+ "ScopeTestDummyApiLatencyTM95100Warning206C89FE",
"Arn",
],
},
@@ -227,7 +227,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiFaultCountWarning6270BEC0",
+ "ScopeTestDummyApiLatencyTM99100Warning38223F80",
"Arn",
],
},
@@ -238,7 +238,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiErrorCountWarning11BE36AF",
+ "ScopeTestDummyApiLatencyTM999100Warning20E62DC6",
"Arn",
],
},
@@ -249,7 +249,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiErrorRateWarningD181D1C6",
+ "ScopeTestDummyApiLatencyTM9999100Warning800AFBBF",
"Arn",
],
},
@@ -260,7 +260,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiFaultRateWarning63CFB7F0",
+ "ScopeTestDummyApiLatencyAverageWarning27D59767",
"Arn",
],
},
@@ -271,7 +271,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiMinTPSWarning4E8DB4D0",
+ "ScopeTestDummyApiFaultCountWarning6270BEC0",
"Arn",
],
},
@@ -280,6 +280,50 @@ Object {
"Ref": "AWS::Region",
},
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
+ Object {
+ "Fn::GetAtt": Array [
+ "ScopeTestDummyApiErrorCountWarning11BE36AF",
+ "Arn",
+ ],
+ },
+ "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":20,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+ Object {
+ "Ref": "AWS::Region",
+ },
+ "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+ Object {
+ "Fn::GetAtt": Array [
+ "ScopeTestDummyApiErrorRateWarningD181D1C6",
+ "Arn",
+ ],
+ },
+ "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":18,\\"y\\":20,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+ Object {
+ "Ref": "AWS::Region",
+ },
+ "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+ Object {
+ "Fn::GetAtt": Array [
+ "ScopeTestDummyApiFaultRateWarning63CFB7F0",
+ "Arn",
+ ],
+ },
+ "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":24,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+ Object {
+ "Ref": "AWS::Region",
+ },
+ "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+ Object {
+ "Fn::GetAtt": Array [
+ "ScopeTestDummyApiMinTPSWarning4E8DB4D0",
+ "Arn",
+ ],
+ },
+ "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":24,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+ Object {
+ "Ref": "AWS::Region",
+ },
+ "\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
"ScopeTestDummyApiMaxTPSWarning62732F2B",
@@ -408,7 +452,7 @@ Object {
Object {
"Ref": "AWS::Region",
},
- "\\",\\"metrics\\":[[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"Average\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P100 (avg: \${AVG})\\",\\"stat\\":\\"p100\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P50 (avg: \${AVG})\\",\\"stat\\":\\"p50\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P70 (avg: \${AVG})\\",\\"stat\\":\\"p70\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P95 (avg: \${AVG})\\",\\"stat\\":\\"p95\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99 (avg: \${AVG})\\",\\"stat\\":\\"p99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99.9 (avg: \${AVG})\\",\\"stat\\":\\"p99.9\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99.99 (avg: \${AVG})\\",\\"stat\\":\\"p99.99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM50 (avg: \${AVG})\\",\\"stat\\":\\"tm50\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM70 (avg: \${AVG})\\",\\"stat\\":\\"tm70\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM90 (avg: \${AVG})\\",\\"stat\\":\\"tm90\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM95 (avg: \${AVG})\\",\\"stat\\":\\"tm95\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99 (avg: \${AVG})\\",\\"stat\\":\\"tm99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99.9 (avg: \${AVG})\\",\\"stat\\":\\"tm99.9\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99.99 (avg: \${AVG})\\",\\"stat\\":\\"tm99.99\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"P50 > 150 for 150 datapoints within 750 minutes\\",\\"value\\":150,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P70 > 170 for 170 datapoints within 850 minutes\\",\\"value\\":170,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P90 > 190 for 190 datapoints within 950 minutes\\",\\"value\\":190,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P95 > 195 for 195 datapoints within 975 minutes\\",\\"value\\":195,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99 > 199 for 199 datapoints within 995 minutes\\",\\"value\\":199,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.9 > 1999 for 1999 datapoints within 9995 minutes\\",\\"value\\":1999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.99 > 19999 for 19999 datapoints within 99995 minutes\\",\\"value\\":19999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P100 > 1100 for 1100 datapoints within 5500 minutes\\",\\"value\\":1100,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM50 > 250 for 250 datapoints within 1250 minutes\\",\\"value\\":250,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM70 > 270 for 270 datapoints within 1350 minutes\\",\\"value\\":270,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM90 > 290 for 290 datapoints within 1450 minutes\\",\\"value\\":290,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM95 > 295 for 295 datapoints within 1475 minutes\\",\\"value\\":295,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99 > 299 for 299 datapoints within 1495 minutes\\",\\"value\\":299,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.9 > 2999 for 2999 datapoints within 14995 minutes\\",\\"value\\":2999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.99 > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Average > 20 for 20 datapoints within 100 minutes\\",\\"value\\":20,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Errors\\",\\"region\\":\\"",
+ "\\",\\"metrics\\":[[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"Average\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P100 (avg: \${AVG})\\",\\"stat\\":\\"p100\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P50 (avg: \${AVG})\\",\\"stat\\":\\"p50\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P70 (avg: \${AVG})\\",\\"stat\\":\\"p70\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P95 (avg: \${AVG})\\",\\"stat\\":\\"p95\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99 (avg: \${AVG})\\",\\"stat\\":\\"p99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99.9 (avg: \${AVG})\\",\\"stat\\":\\"p99.9\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99.99 (avg: \${AVG})\\",\\"stat\\":\\"p99.99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM(95%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(95%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM(99%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM(99.9%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99.9%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM(99.99%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99.99%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM50 (avg: \${AVG})\\",\\"stat\\":\\"tm50\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM70 (avg: \${AVG})\\",\\"stat\\":\\"tm70\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM90 (avg: \${AVG})\\",\\"stat\\":\\"tm90\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM95 (avg: \${AVG})\\",\\"stat\\":\\"tm95\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99 (avg: \${AVG})\\",\\"stat\\":\\"tm99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99.9 (avg: \${AVG})\\",\\"stat\\":\\"tm99.9\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99.99 (avg: \${AVG})\\",\\"stat\\":\\"tm99.99\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"P50 > 150 for 150 datapoints within 750 minutes\\",\\"value\\":150,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P70 > 170 for 170 datapoints within 850 minutes\\",\\"value\\":170,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P90 > 190 for 190 datapoints within 950 minutes\\",\\"value\\":190,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P95 > 195 for 195 datapoints within 975 minutes\\",\\"value\\":195,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99 > 199 for 199 datapoints within 995 minutes\\",\\"value\\":199,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.9 > 1999 for 1999 datapoints within 9995 minutes\\",\\"value\\":1999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.99 > 19999 for 19999 datapoints within 99995 minutes\\",\\"value\\":19999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P100 > 1100 for 1100 datapoints within 5500 minutes\\",\\"value\\":1100,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM50 > 250 for 250 datapoints within 1250 minutes\\",\\"value\\":250,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM70 > 270 for 270 datapoints within 1350 minutes\\",\\"value\\":270,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM90 > 290 for 290 datapoints within 1450 minutes\\",\\"value\\":290,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM95 > 295 for 295 datapoints within 1475 minutes\\",\\"value\\":295,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99 > 299 for 299 datapoints within 1495 minutes\\",\\"value\\":299,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.9 > 2999 for 2999 datapoints within 14995 minutes\\",\\"value\\":2999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.99 > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(95%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99.9%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99.99%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Average > 20 for 20 datapoints within 100 minutes\\",\\"value\\":20,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Errors\\",\\"region\\":\\"",
Object {
"Ref": "AWS::Region",
},
@@ -1031,6 +1075,44 @@ Object {
},
"Type": "AWS::CloudWatch::Alarm",
},
+ "ScopeTestDummyApiLatencyTM95100Warning206C89FE": Object {
+ "Properties": Object {
+ "ActionsEnabled": true,
+ "AlarmDescription": "TM(95%:100%) latency is too high.",
+ "AlarmName": "Test-DummyApi-Latency-TM(95%:100%)-Warning",
+ "ComparisonOperator": "GreaterThanThreshold",
+ "DatapointsToAlarm": 29999,
+ "EvaluationPeriods": 29999,
+ "Metrics": Array [
+ Object {
+ "Id": "m1",
+ "Label": "TM(95%:100%)",
+ "MetricStat": Object {
+ "Metric": Object {
+ "Dimensions": Array [
+ Object {
+ "Name": "ApiName",
+ "Value": "DummyApi",
+ },
+ Object {
+ "Name": "Stage",
+ "Value": "prod",
+ },
+ ],
+ "MetricName": "Latency",
+ "Namespace": "AWS/ApiGateway",
+ },
+ "Period": 300,
+ "Stat": "TM(95%:100%)",
+ },
+ "ReturnData": true,
+ },
+ ],
+ "Threshold": 29999,
+ "TreatMissingData": "notBreaching",
+ },
+ "Type": "AWS::CloudWatch::Alarm",
+ },
"ScopeTestDummyApiLatencyTM95WarningFFD46CB8": Object {
"Properties": Object {
"ActionsEnabled": true,
@@ -1069,6 +1151,120 @@ Object {
},
"Type": "AWS::CloudWatch::Alarm",
},
+ "ScopeTestDummyApiLatencyTM99100Warning38223F80": Object {
+ "Properties": Object {
+ "ActionsEnabled": true,
+ "AlarmDescription": "TM(99%:100%) latency is too high.",
+ "AlarmName": "Test-DummyApi-Latency-TM(99%:100%)-Warning",
+ "ComparisonOperator": "GreaterThanThreshold",
+ "DatapointsToAlarm": 29999,
+ "EvaluationPeriods": 29999,
+ "Metrics": Array [
+ Object {
+ "Id": "m1",
+ "Label": "TM(99%:100%)",
+ "MetricStat": Object {
+ "Metric": Object {
+ "Dimensions": Array [
+ Object {
+ "Name": "ApiName",
+ "Value": "DummyApi",
+ },
+ Object {
+ "Name": "Stage",
+ "Value": "prod",
+ },
+ ],
+ "MetricName": "Latency",
+ "Namespace": "AWS/ApiGateway",
+ },
+ "Period": 300,
+ "Stat": "TM(99%:100%)",
+ },
+ "ReturnData": true,
+ },
+ ],
+ "Threshold": 29999,
+ "TreatMissingData": "notBreaching",
+ },
+ "Type": "AWS::CloudWatch::Alarm",
+ },
+ "ScopeTestDummyApiLatencyTM999100Warning20E62DC6": Object {
+ "Properties": Object {
+ "ActionsEnabled": true,
+ "AlarmDescription": "TM(99.9%:100%) latency is too high.",
+ "AlarmName": "Test-DummyApi-Latency-TM(99.9%:100%)-Warning",
+ "ComparisonOperator": "GreaterThanThreshold",
+ "DatapointsToAlarm": 29999,
+ "EvaluationPeriods": 29999,
+ "Metrics": Array [
+ Object {
+ "Id": "m1",
+ "Label": "TM(99.9%:100%)",
+ "MetricStat": Object {
+ "Metric": Object {
+ "Dimensions": Array [
+ Object {
+ "Name": "ApiName",
+ "Value": "DummyApi",
+ },
+ Object {
+ "Name": "Stage",
+ "Value": "prod",
+ },
+ ],
+ "MetricName": "Latency",
+ "Namespace": "AWS/ApiGateway",
+ },
+ "Period": 300,
+ "Stat": "TM(99.9%:100%)",
+ },
+ "ReturnData": true,
+ },
+ ],
+ "Threshold": 29999,
+ "TreatMissingData": "notBreaching",
+ },
+ "Type": "AWS::CloudWatch::Alarm",
+ },
+ "ScopeTestDummyApiLatencyTM9999100Warning800AFBBF": Object {
+ "Properties": Object {
+ "ActionsEnabled": true,
+ "AlarmDescription": "TM(99.99%:100%) latency is too high.",
+ "AlarmName": "Test-DummyApi-Latency-TM(99.99%:100%)-Warning",
+ "ComparisonOperator": "GreaterThanThreshold",
+ "DatapointsToAlarm": 29999,
+ "EvaluationPeriods": 29999,
+ "Metrics": Array [
+ Object {
+ "Id": "m1",
+ "Label": "TM(99.99%:100%)",
+ "MetricStat": Object {
+ "Metric": Object {
+ "Dimensions": Array [
+ Object {
+ "Name": "ApiName",
+ "Value": "DummyApi",
+ },
+ Object {
+ "Name": "Stage",
+ "Value": "prod",
+ },
+ ],
+ "MetricName": "Latency",
+ "Namespace": "AWS/ApiGateway",
+ },
+ "Period": 300,
+ "Stat": "TM(99.99%:100%)",
+ },
+ "ReturnData": true,
+ },
+ ],
+ "Threshold": 29999,
+ "TreatMissingData": "notBreaching",
+ },
+ "Type": "AWS::CloudWatch::Alarm",
+ },
"ScopeTestDummyApiLatencyTM9999Warning4181DE97": Object {
"Properties": Object {
"ActionsEnabled": true,
@@ -1283,7 +1479,7 @@ Object {
Object {
"Ref": "AWS::Region",
},
- "\\",\\"metrics\\":[[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"Average\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P100 (avg: \${AVG})\\",\\"stat\\":\\"p100\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P50 (avg: \${AVG})\\",\\"stat\\":\\"p50\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P70 (avg: \${AVG})\\",\\"stat\\":\\"p70\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P95 (avg: \${AVG})\\",\\"stat\\":\\"p95\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99 (avg: \${AVG})\\",\\"stat\\":\\"p99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99.9 (avg: \${AVG})\\",\\"stat\\":\\"p99.9\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99.99 (avg: \${AVG})\\",\\"stat\\":\\"p99.99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM50 (avg: \${AVG})\\",\\"stat\\":\\"tm50\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM70 (avg: \${AVG})\\",\\"stat\\":\\"tm70\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM90 (avg: \${AVG})\\",\\"stat\\":\\"tm90\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM95 (avg: \${AVG})\\",\\"stat\\":\\"tm95\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99 (avg: \${AVG})\\",\\"stat\\":\\"tm99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99.9 (avg: \${AVG})\\",\\"stat\\":\\"tm99.9\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99.99 (avg: \${AVG})\\",\\"stat\\":\\"tm99.99\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"P50 > 150 for 150 datapoints within 750 minutes\\",\\"value\\":150,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P70 > 170 for 170 datapoints within 850 minutes\\",\\"value\\":170,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P90 > 190 for 190 datapoints within 950 minutes\\",\\"value\\":190,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P95 > 195 for 195 datapoints within 975 minutes\\",\\"value\\":195,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99 > 199 for 199 datapoints within 995 minutes\\",\\"value\\":199,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.9 > 1999 for 1999 datapoints within 9995 minutes\\",\\"value\\":1999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.99 > 19999 for 19999 datapoints within 99995 minutes\\",\\"value\\":19999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P100 > 1100 for 1100 datapoints within 5500 minutes\\",\\"value\\":1100,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM50 > 250 for 250 datapoints within 1250 minutes\\",\\"value\\":250,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM70 > 270 for 270 datapoints within 1350 minutes\\",\\"value\\":270,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM90 > 290 for 290 datapoints within 1450 minutes\\",\\"value\\":290,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM95 > 295 for 295 datapoints within 1475 minutes\\",\\"value\\":295,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99 > 299 for 299 datapoints within 1495 minutes\\",\\"value\\":299,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.9 > 2999 for 2999 datapoints within 14995 minutes\\",\\"value\\":2999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.99 > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Average > 20 for 20 datapoints within 100 minutes\\",\\"value\\":20,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Errors (rate)\\",\\"region\\":\\"",
+ "\\",\\"metrics\\":[[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"Average\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P100 (avg: \${AVG})\\",\\"stat\\":\\"p100\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P50 (avg: \${AVG})\\",\\"stat\\":\\"p50\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P70 (avg: \${AVG})\\",\\"stat\\":\\"p70\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P95 (avg: \${AVG})\\",\\"stat\\":\\"p95\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99 (avg: \${AVG})\\",\\"stat\\":\\"p99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99.9 (avg: \${AVG})\\",\\"stat\\":\\"p99.9\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99.99 (avg: \${AVG})\\",\\"stat\\":\\"p99.99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM(95%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(95%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM(99%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM(99.9%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99.9%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM(99.99%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99.99%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM50 (avg: \${AVG})\\",\\"stat\\":\\"tm50\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM70 (avg: \${AVG})\\",\\"stat\\":\\"tm70\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM90 (avg: \${AVG})\\",\\"stat\\":\\"tm90\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM95 (avg: \${AVG})\\",\\"stat\\":\\"tm95\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99 (avg: \${AVG})\\",\\"stat\\":\\"tm99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99.9 (avg: \${AVG})\\",\\"stat\\":\\"tm99.9\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"DummyApi\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99.99 (avg: \${AVG})\\",\\"stat\\":\\"tm99.99\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"P50 > 150 for 150 datapoints within 750 minutes\\",\\"value\\":150,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P70 > 170 for 170 datapoints within 850 minutes\\",\\"value\\":170,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P90 > 190 for 190 datapoints within 950 minutes\\",\\"value\\":190,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P95 > 195 for 195 datapoints within 975 minutes\\",\\"value\\":195,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99 > 199 for 199 datapoints within 995 minutes\\",\\"value\\":199,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.9 > 1999 for 1999 datapoints within 9995 minutes\\",\\"value\\":1999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.99 > 19999 for 19999 datapoints within 99995 minutes\\",\\"value\\":19999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P100 > 1100 for 1100 datapoints within 5500 minutes\\",\\"value\\":1100,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM50 > 250 for 250 datapoints within 1250 minutes\\",\\"value\\":250,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM70 > 270 for 270 datapoints within 1350 minutes\\",\\"value\\":270,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM90 > 290 for 290 datapoints within 1450 minutes\\",\\"value\\":290,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM95 > 295 for 295 datapoints within 1475 minutes\\",\\"value\\":295,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99 > 299 for 299 datapoints within 1495 minutes\\",\\"value\\":299,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.9 > 2999 for 2999 datapoints within 14995 minutes\\",\\"value\\":2999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.99 > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(95%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99.9%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99.99%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Average > 20 for 20 datapoints within 100 minutes\\",\\"value\\":20,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Errors (rate)\\",\\"region\\":\\"",
Object {
"Ref": "AWS::Region",
},
@@ -1513,7 +1709,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiLatencyAverageWarning27D59767",
+ "ScopeTestDummyApiLatencyTM95100Warning206C89FE",
"Arn",
],
},
@@ -1524,7 +1720,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiFaultCountWarning6270BEC0",
+ "ScopeTestDummyApiLatencyTM99100Warning38223F80",
"Arn",
],
},
@@ -1535,7 +1731,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiErrorCountWarning11BE36AF",
+ "ScopeTestDummyApiLatencyTM999100Warning20E62DC6",
"Arn",
],
},
@@ -1546,7 +1742,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiErrorRateWarningD181D1C6",
+ "ScopeTestDummyApiLatencyTM9999100Warning800AFBBF",
"Arn",
],
},
@@ -1557,7 +1753,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiFaultRateWarning63CFB7F0",
+ "ScopeTestDummyApiLatencyAverageWarning27D59767",
"Arn",
],
},
@@ -1568,7 +1764,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiMinTPSWarning4E8DB4D0",
+ "ScopeTestDummyApiFaultCountWarning6270BEC0",
"Arn",
],
},
@@ -1577,6 +1773,50 @@ Object {
"Ref": "AWS::Region",
},
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
+ Object {
+ "Fn::GetAtt": Array [
+ "ScopeTestDummyApiErrorCountWarning11BE36AF",
+ "Arn",
+ ],
+ },
+ "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":20,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+ Object {
+ "Ref": "AWS::Region",
+ },
+ "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+ Object {
+ "Fn::GetAtt": Array [
+ "ScopeTestDummyApiErrorRateWarningD181D1C6",
+ "Arn",
+ ],
+ },
+ "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":18,\\"y\\":20,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+ Object {
+ "Ref": "AWS::Region",
+ },
+ "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+ Object {
+ "Fn::GetAtt": Array [
+ "ScopeTestDummyApiFaultRateWarning63CFB7F0",
+ "Arn",
+ ],
+ },
+ "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":24,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+ Object {
+ "Ref": "AWS::Region",
+ },
+ "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+ Object {
+ "Fn::GetAtt": Array [
+ "ScopeTestDummyApiMinTPSWarning4E8DB4D0",
+ "Arn",
+ ],
+ },
+ "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":24,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+ Object {
+ "Ref": "AWS::Region",
+ },
+ "\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
"ScopeTestDummyApiMaxTPSWarning62732F2B",
@@ -1604,7 +1844,7 @@ Object {
Object {
"Ref": "AWS::Region",
},
- "\\",\\"metrics\\":[[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"Average\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P100 (avg: \${AVG})\\",\\"stat\\":\\"p100\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P50 (avg: \${AVG})\\",\\"stat\\":\\"p50\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P70 (avg: \${AVG})\\",\\"stat\\":\\"p70\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P95 (avg: \${AVG})\\",\\"stat\\":\\"p95\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99 (avg: \${AVG})\\",\\"stat\\":\\"p99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99.9 (avg: \${AVG})\\",\\"stat\\":\\"p99.9\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99.99 (avg: \${AVG})\\",\\"stat\\":\\"p99.99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM50 (avg: \${AVG})\\",\\"stat\\":\\"tm50\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM70 (avg: \${AVG})\\",\\"stat\\":\\"tm70\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM90 (avg: \${AVG})\\",\\"stat\\":\\"tm90\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM95 (avg: \${AVG})\\",\\"stat\\":\\"tm95\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99 (avg: \${AVG})\\",\\"stat\\":\\"tm99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99.9 (avg: \${AVG})\\",\\"stat\\":\\"tm99.9\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99.99 (avg: \${AVG})\\",\\"stat\\":\\"tm99.99\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"P50 > 150 for 150 datapoints within 750 minutes\\",\\"value\\":150,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P70 > 170 for 170 datapoints within 850 minutes\\",\\"value\\":170,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P90 > 190 for 190 datapoints within 950 minutes\\",\\"value\\":190,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P95 > 195 for 195 datapoints within 975 minutes\\",\\"value\\":195,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99 > 199 for 199 datapoints within 995 minutes\\",\\"value\\":199,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.9 > 1999 for 1999 datapoints within 9995 minutes\\",\\"value\\":1999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.99 > 19999 for 19999 datapoints within 99995 minutes\\",\\"value\\":19999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P100 > 1100 for 1100 datapoints within 5500 minutes\\",\\"value\\":1100,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM50 > 250 for 250 datapoints within 1250 minutes\\",\\"value\\":250,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM70 > 270 for 270 datapoints within 1350 minutes\\",\\"value\\":270,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM90 > 290 for 290 datapoints within 1450 minutes\\",\\"value\\":290,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM95 > 295 for 295 datapoints within 1475 minutes\\",\\"value\\":295,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99 > 299 for 299 datapoints within 1495 minutes\\",\\"value\\":299,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.9 > 2999 for 2999 datapoints within 14995 minutes\\",\\"value\\":2999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.99 > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Average > 20 for 20 datapoints within 100 minutes\\",\\"value\\":20,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Errors\\",\\"region\\":\\"",
+ "\\",\\"metrics\\":[[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"Average\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P100 (avg: \${AVG})\\",\\"stat\\":\\"p100\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P50 (avg: \${AVG})\\",\\"stat\\":\\"p50\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P70 (avg: \${AVG})\\",\\"stat\\":\\"p70\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P95 (avg: \${AVG})\\",\\"stat\\":\\"p95\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99 (avg: \${AVG})\\",\\"stat\\":\\"p99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99.9 (avg: \${AVG})\\",\\"stat\\":\\"p99.9\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99.99 (avg: \${AVG})\\",\\"stat\\":\\"p99.99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM(95%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(95%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM(99%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM(99.9%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99.9%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM(99.99%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99.99%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM50 (avg: \${AVG})\\",\\"stat\\":\\"tm50\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM70 (avg: \${AVG})\\",\\"stat\\":\\"tm70\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM90 (avg: \${AVG})\\",\\"stat\\":\\"tm90\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM95 (avg: \${AVG})\\",\\"stat\\":\\"tm95\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99 (avg: \${AVG})\\",\\"stat\\":\\"tm99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99.9 (avg: \${AVG})\\",\\"stat\\":\\"tm99.9\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99.99 (avg: \${AVG})\\",\\"stat\\":\\"tm99.99\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"P50 > 150 for 150 datapoints within 750 minutes\\",\\"value\\":150,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P70 > 170 for 170 datapoints within 850 minutes\\",\\"value\\":170,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P90 > 190 for 190 datapoints within 950 minutes\\",\\"value\\":190,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P95 > 195 for 195 datapoints within 975 minutes\\",\\"value\\":195,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99 > 199 for 199 datapoints within 995 minutes\\",\\"value\\":199,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.9 > 1999 for 1999 datapoints within 9995 minutes\\",\\"value\\":1999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.99 > 19999 for 19999 datapoints within 99995 minutes\\",\\"value\\":19999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P100 > 1100 for 1100 datapoints within 5500 minutes\\",\\"value\\":1100,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM50 > 250 for 250 datapoints within 1250 minutes\\",\\"value\\":250,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM70 > 270 for 270 datapoints within 1350 minutes\\",\\"value\\":270,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM90 > 290 for 290 datapoints within 1450 minutes\\",\\"value\\":290,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM95 > 295 for 295 datapoints within 1475 minutes\\",\\"value\\":295,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99 > 299 for 299 datapoints within 1495 minutes\\",\\"value\\":299,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.9 > 2999 for 2999 datapoints within 14995 minutes\\",\\"value\\":2999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.99 > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(95%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99.9%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99.99%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Average > 20 for 20 datapoints within 100 minutes\\",\\"value\\":20,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Errors\\",\\"region\\":\\"",
Object {
"Ref": "AWS::Region",
},
@@ -2227,6 +2467,44 @@ Object {
},
"Type": "AWS::CloudWatch::Alarm",
},
+ "ScopeTestDummyApiLatencyTM95100Warning206C89FE": Object {
+ "Properties": Object {
+ "ActionsEnabled": true,
+ "AlarmDescription": "TM(95%:100%) latency is too high.",
+ "AlarmName": "Test-DummyApi-Latency-TM(95%:100%)-Warning",
+ "ComparisonOperator": "GreaterThanThreshold",
+ "DatapointsToAlarm": 29999,
+ "EvaluationPeriods": 29999,
+ "Metrics": Array [
+ Object {
+ "Id": "m1",
+ "Label": "TM(95%:100%)",
+ "MetricStat": Object {
+ "Metric": Object {
+ "Dimensions": Array [
+ Object {
+ "Name": "ApiName",
+ "Value": "ThisShouldBeTheApiName",
+ },
+ Object {
+ "Name": "Stage",
+ "Value": "prod",
+ },
+ ],
+ "MetricName": "Latency",
+ "Namespace": "AWS/ApiGateway",
+ },
+ "Period": 300,
+ "Stat": "TM(95%:100%)",
+ },
+ "ReturnData": true,
+ },
+ ],
+ "Threshold": 29999,
+ "TreatMissingData": "notBreaching",
+ },
+ "Type": "AWS::CloudWatch::Alarm",
+ },
"ScopeTestDummyApiLatencyTM95WarningFFD46CB8": Object {
"Properties": Object {
"ActionsEnabled": true,
@@ -2265,6 +2543,120 @@ Object {
},
"Type": "AWS::CloudWatch::Alarm",
},
+ "ScopeTestDummyApiLatencyTM99100Warning38223F80": Object {
+ "Properties": Object {
+ "ActionsEnabled": true,
+ "AlarmDescription": "TM(99%:100%) latency is too high.",
+ "AlarmName": "Test-DummyApi-Latency-TM(99%:100%)-Warning",
+ "ComparisonOperator": "GreaterThanThreshold",
+ "DatapointsToAlarm": 29999,
+ "EvaluationPeriods": 29999,
+ "Metrics": Array [
+ Object {
+ "Id": "m1",
+ "Label": "TM(99%:100%)",
+ "MetricStat": Object {
+ "Metric": Object {
+ "Dimensions": Array [
+ Object {
+ "Name": "ApiName",
+ "Value": "ThisShouldBeTheApiName",
+ },
+ Object {
+ "Name": "Stage",
+ "Value": "prod",
+ },
+ ],
+ "MetricName": "Latency",
+ "Namespace": "AWS/ApiGateway",
+ },
+ "Period": 300,
+ "Stat": "TM(99%:100%)",
+ },
+ "ReturnData": true,
+ },
+ ],
+ "Threshold": 29999,
+ "TreatMissingData": "notBreaching",
+ },
+ "Type": "AWS::CloudWatch::Alarm",
+ },
+ "ScopeTestDummyApiLatencyTM999100Warning20E62DC6": Object {
+ "Properties": Object {
+ "ActionsEnabled": true,
+ "AlarmDescription": "TM(99.9%:100%) latency is too high.",
+ "AlarmName": "Test-DummyApi-Latency-TM(99.9%:100%)-Warning",
+ "ComparisonOperator": "GreaterThanThreshold",
+ "DatapointsToAlarm": 29999,
+ "EvaluationPeriods": 29999,
+ "Metrics": Array [
+ Object {
+ "Id": "m1",
+ "Label": "TM(99.9%:100%)",
+ "MetricStat": Object {
+ "Metric": Object {
+ "Dimensions": Array [
+ Object {
+ "Name": "ApiName",
+ "Value": "ThisShouldBeTheApiName",
+ },
+ Object {
+ "Name": "Stage",
+ "Value": "prod",
+ },
+ ],
+ "MetricName": "Latency",
+ "Namespace": "AWS/ApiGateway",
+ },
+ "Period": 300,
+ "Stat": "TM(99.9%:100%)",
+ },
+ "ReturnData": true,
+ },
+ ],
+ "Threshold": 29999,
+ "TreatMissingData": "notBreaching",
+ },
+ "Type": "AWS::CloudWatch::Alarm",
+ },
+ "ScopeTestDummyApiLatencyTM9999100Warning800AFBBF": Object {
+ "Properties": Object {
+ "ActionsEnabled": true,
+ "AlarmDescription": "TM(99.99%:100%) latency is too high.",
+ "AlarmName": "Test-DummyApi-Latency-TM(99.99%:100%)-Warning",
+ "ComparisonOperator": "GreaterThanThreshold",
+ "DatapointsToAlarm": 29999,
+ "EvaluationPeriods": 29999,
+ "Metrics": Array [
+ Object {
+ "Id": "m1",
+ "Label": "TM(99.99%:100%)",
+ "MetricStat": Object {
+ "Metric": Object {
+ "Dimensions": Array [
+ Object {
+ "Name": "ApiName",
+ "Value": "ThisShouldBeTheApiName",
+ },
+ Object {
+ "Name": "Stage",
+ "Value": "prod",
+ },
+ ],
+ "MetricName": "Latency",
+ "Namespace": "AWS/ApiGateway",
+ },
+ "Period": 300,
+ "Stat": "TM(99.99%:100%)",
+ },
+ "ReturnData": true,
+ },
+ ],
+ "Threshold": 29999,
+ "TreatMissingData": "notBreaching",
+ },
+ "Type": "AWS::CloudWatch::Alarm",
+ },
"ScopeTestDummyApiLatencyTM9999Warning4181DE97": Object {
"Properties": Object {
"ActionsEnabled": true,
@@ -2479,7 +2871,7 @@ Object {
Object {
"Ref": "AWS::Region",
},
- "\\",\\"metrics\\":[[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"Average\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P100 (avg: \${AVG})\\",\\"stat\\":\\"p100\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P50 (avg: \${AVG})\\",\\"stat\\":\\"p50\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P70 (avg: \${AVG})\\",\\"stat\\":\\"p70\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P95 (avg: \${AVG})\\",\\"stat\\":\\"p95\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99 (avg: \${AVG})\\",\\"stat\\":\\"p99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99.9 (avg: \${AVG})\\",\\"stat\\":\\"p99.9\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99.99 (avg: \${AVG})\\",\\"stat\\":\\"p99.99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM50 (avg: \${AVG})\\",\\"stat\\":\\"tm50\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM70 (avg: \${AVG})\\",\\"stat\\":\\"tm70\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM90 (avg: \${AVG})\\",\\"stat\\":\\"tm90\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM95 (avg: \${AVG})\\",\\"stat\\":\\"tm95\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99 (avg: \${AVG})\\",\\"stat\\":\\"tm99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99.9 (avg: \${AVG})\\",\\"stat\\":\\"tm99.9\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99.99 (avg: \${AVG})\\",\\"stat\\":\\"tm99.99\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"P50 > 150 for 150 datapoints within 750 minutes\\",\\"value\\":150,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P70 > 170 for 170 datapoints within 850 minutes\\",\\"value\\":170,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P90 > 190 for 190 datapoints within 950 minutes\\",\\"value\\":190,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P95 > 195 for 195 datapoints within 975 minutes\\",\\"value\\":195,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99 > 199 for 199 datapoints within 995 minutes\\",\\"value\\":199,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.9 > 1999 for 1999 datapoints within 9995 minutes\\",\\"value\\":1999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.99 > 19999 for 19999 datapoints within 99995 minutes\\",\\"value\\":19999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P100 > 1100 for 1100 datapoints within 5500 minutes\\",\\"value\\":1100,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM50 > 250 for 250 datapoints within 1250 minutes\\",\\"value\\":250,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM70 > 270 for 270 datapoints within 1350 minutes\\",\\"value\\":270,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM90 > 290 for 290 datapoints within 1450 minutes\\",\\"value\\":290,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM95 > 295 for 295 datapoints within 1475 minutes\\",\\"value\\":295,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99 > 299 for 299 datapoints within 1495 minutes\\",\\"value\\":299,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.9 > 2999 for 2999 datapoints within 14995 minutes\\",\\"value\\":2999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.99 > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Average > 20 for 20 datapoints within 100 minutes\\",\\"value\\":20,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Errors (rate)\\",\\"region\\":\\"",
+ "\\",\\"metrics\\":[[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"Average\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P100 (avg: \${AVG})\\",\\"stat\\":\\"p100\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P50 (avg: \${AVG})\\",\\"stat\\":\\"p50\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P70 (avg: \${AVG})\\",\\"stat\\":\\"p70\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P90 (avg: \${AVG})\\",\\"stat\\":\\"p90\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P95 (avg: \${AVG})\\",\\"stat\\":\\"p95\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99 (avg: \${AVG})\\",\\"stat\\":\\"p99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99.9 (avg: \${AVG})\\",\\"stat\\":\\"p99.9\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"P99.99 (avg: \${AVG})\\",\\"stat\\":\\"p99.99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM(95%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(95%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM(99%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM(99.9%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99.9%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM(99.99%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99.99%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM50 (avg: \${AVG})\\",\\"stat\\":\\"tm50\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM70 (avg: \${AVG})\\",\\"stat\\":\\"tm70\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM90 (avg: \${AVG})\\",\\"stat\\":\\"tm90\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM95 (avg: \${AVG})\\",\\"stat\\":\\"tm95\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99 (avg: \${AVG})\\",\\"stat\\":\\"tm99\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99.9 (avg: \${AVG})\\",\\"stat\\":\\"tm99.9\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiName\\",\\"ThisShouldBeTheApiName\\",\\"Stage\\",\\"prod\\",{\\"label\\":\\"TM99.99 (avg: \${AVG})\\",\\"stat\\":\\"tm99.99\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"P50 > 150 for 150 datapoints within 750 minutes\\",\\"value\\":150,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P70 > 170 for 170 datapoints within 850 minutes\\",\\"value\\":170,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P90 > 190 for 190 datapoints within 950 minutes\\",\\"value\\":190,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P95 > 195 for 195 datapoints within 975 minutes\\",\\"value\\":195,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99 > 199 for 199 datapoints within 995 minutes\\",\\"value\\":199,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.9 > 1999 for 1999 datapoints within 9995 minutes\\",\\"value\\":1999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.99 > 19999 for 19999 datapoints within 99995 minutes\\",\\"value\\":19999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P100 > 1100 for 1100 datapoints within 5500 minutes\\",\\"value\\":1100,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM50 > 250 for 250 datapoints within 1250 minutes\\",\\"value\\":250,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM70 > 270 for 270 datapoints within 1350 minutes\\",\\"value\\":270,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM90 > 290 for 290 datapoints within 1450 minutes\\",\\"value\\":290,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM95 > 295 for 295 datapoints within 1475 minutes\\",\\"value\\":295,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99 > 299 for 299 datapoints within 1495 minutes\\",\\"value\\":299,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.9 > 2999 for 2999 datapoints within 14995 minutes\\",\\"value\\":2999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.99 > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(95%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99.9%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99.99%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Average > 20 for 20 datapoints within 100 minutes\\",\\"value\\":20,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Errors (rate)\\",\\"region\\":\\"",
Object {
"Ref": "AWS::Region",
},
diff --git a/test/monitoring/aws-apigatewayv2/ApiGatewayV2HttpApiMonitoring.test.ts b/test/monitoring/aws-apigatewayv2/ApiGatewayV2HttpApiMonitoring.test.ts
index fc832222..a3166174 100644
--- a/test/monitoring/aws-apigatewayv2/ApiGatewayV2HttpApiMonitoring.test.ts
+++ b/test/monitoring/aws-apigatewayv2/ApiGatewayV2HttpApiMonitoring.test.ts
@@ -133,6 +133,30 @@ test("snapshot test: all alarms", () => {
datapointsToAlarm: 29999,
},
},
+ addLatencyTM95OutlierAlarm: {
+ Warning: {
+ maxLatency: Duration.millis(29999),
+ datapointsToAlarm: 29999,
+ },
+ },
+ addLatencyTM99OutlierAlarm: {
+ Warning: {
+ maxLatency: Duration.millis(29999),
+ datapointsToAlarm: 29999,
+ },
+ },
+ addLatencyTM999OutlierAlarm: {
+ Warning: {
+ maxLatency: Duration.millis(29999),
+ datapointsToAlarm: 29999,
+ },
+ },
+ addLatencyTM9999OutlierAlarm: {
+ Warning: {
+ maxLatency: Duration.millis(29999),
+ datapointsToAlarm: 29999,
+ },
+ },
addLatencyAverageAlarm: {
Warning: {
maxLatency: Duration.millis(20),
@@ -229,6 +253,30 @@ test("snapshot test: all alarms", () => {
datapointsToAlarm: 29999,
},
},
+ addIntegrationLatencyTM95OutlierAlarm: {
+ Warning: {
+ maxLatency: Duration.millis(29999),
+ datapointsToAlarm: 29999,
+ },
+ },
+ addIntegrationLatencyTM99OutlierAlarm: {
+ Warning: {
+ maxLatency: Duration.millis(29999),
+ datapointsToAlarm: 29999,
+ },
+ },
+ addIntegrationLatencyTM999OutlierAlarm: {
+ Warning: {
+ maxLatency: Duration.millis(29999),
+ datapointsToAlarm: 29999,
+ },
+ },
+ addIntegrationLatencyTM9999OutlierAlarm: {
+ Warning: {
+ maxLatency: Duration.millis(29999),
+ datapointsToAlarm: 29999,
+ },
+ },
addIntegrationLatencyAverageAlarm: {
Warning: {
maxLatency: Duration.millis(20),
@@ -273,6 +321,6 @@ test("snapshot test: all alarms", () => {
});
addMonitoringDashboardsToStack(stack, monitoring);
- expect(numAlarmsCreated).toStrictEqual(38);
+ expect(numAlarmsCreated).toStrictEqual(46);
expect(Template.fromStack(stack)).toMatchSnapshot();
});
diff --git a/test/monitoring/aws-apigatewayv2/__snapshots__/ApiGatewayV2HttpApiMonitoring.test.ts.snap b/test/monitoring/aws-apigatewayv2/__snapshots__/ApiGatewayV2HttpApiMonitoring.test.ts.snap
index 40bb0cb5..b66e0c57 100644
--- a/test/monitoring/aws-apigatewayv2/__snapshots__/ApiGatewayV2HttpApiMonitoring.test.ts.snap
+++ b/test/monitoring/aws-apigatewayv2/__snapshots__/ApiGatewayV2HttpApiMonitoring.test.ts.snap
@@ -188,7 +188,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiLatencyAverageWarning27D59767",
+ "ScopeTestDummyApiLatencyTM95100Warning206C89FE",
"Arn",
],
},
@@ -199,7 +199,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiIntegrationLatencyP50WarningB23B4040",
+ "ScopeTestDummyApiLatencyTM99100Warning38223F80",
"Arn",
],
},
@@ -210,7 +210,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiIntegrationLatencyP70Warning3CC3EBD5",
+ "ScopeTestDummyApiLatencyTM999100Warning20E62DC6",
"Arn",
],
},
@@ -221,7 +221,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiIntegrationLatencyP90WarningF259FC77",
+ "ScopeTestDummyApiLatencyTM9999100Warning800AFBBF",
"Arn",
],
},
@@ -232,7 +232,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiIntegrationLatencyP95WarningD9A4B89B",
+ "ScopeTestDummyApiLatencyAverageWarning27D59767",
"Arn",
],
},
@@ -243,7 +243,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiIntegrationLatencyP99WarningC8929BAD",
+ "ScopeTestDummyApiIntegrationLatencyP50WarningB23B4040",
"Arn",
],
},
@@ -254,7 +254,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiIntegrationLatencyP999Warning9F27E61C",
+ "ScopeTestDummyApiIntegrationLatencyP70Warning3CC3EBD5",
"Arn",
],
},
@@ -265,7 +265,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiIntegrationLatencyP9999WarningA7C40063",
+ "ScopeTestDummyApiIntegrationLatencyP90WarningF259FC77",
"Arn",
],
},
@@ -276,7 +276,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiIntegrationLatencyP100Warning347C1F98",
+ "ScopeTestDummyApiIntegrationLatencyP95WarningD9A4B89B",
"Arn",
],
},
@@ -287,7 +287,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiIntegrationLatencyTM50Warning6B4229D0",
+ "ScopeTestDummyApiIntegrationLatencyP99WarningC8929BAD",
"Arn",
],
},
@@ -298,7 +298,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiIntegrationLatencyTM70WarningB60BC024",
+ "ScopeTestDummyApiIntegrationLatencyP999Warning9F27E61C",
"Arn",
],
},
@@ -309,7 +309,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiIntegrationLatencyTM90Warning2A0B535F",
+ "ScopeTestDummyApiIntegrationLatencyP9999WarningA7C40063",
"Arn",
],
},
@@ -320,7 +320,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiIntegrationLatencyTM95WarningCA30746B",
+ "ScopeTestDummyApiIntegrationLatencyP100Warning347C1F98",
"Arn",
],
},
@@ -331,7 +331,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiIntegrationLatencyTM99WarningACB026E2",
+ "ScopeTestDummyApiIntegrationLatencyTM50Warning6B4229D0",
"Arn",
],
},
@@ -342,7 +342,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiIntegrationLatencyTM999Warning08B604B1",
+ "ScopeTestDummyApiIntegrationLatencyTM70WarningB60BC024",
"Arn",
],
},
@@ -353,7 +353,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiIntegrationLatencyTM9999Warning26E553E4",
+ "ScopeTestDummyApiIntegrationLatencyTM90Warning2A0B535F",
"Arn",
],
},
@@ -364,7 +364,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiIntegrationLatencyAverageWarning1FB2E797",
+ "ScopeTestDummyApiIntegrationLatencyTM95WarningCA30746B",
"Arn",
],
},
@@ -375,7 +375,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiErrorCountWarning11BE36AF",
+ "ScopeTestDummyApiIntegrationLatencyTM99WarningACB026E2",
"Arn",
],
},
@@ -386,7 +386,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiErrorRateWarningD181D1C6",
+ "ScopeTestDummyApiIntegrationLatencyTM999Warning08B604B1",
"Arn",
],
},
@@ -397,7 +397,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiFaultCountWarning6270BEC0",
+ "ScopeTestDummyApiIntegrationLatencyTM9999Warning26E553E4",
"Arn",
],
},
@@ -408,7 +408,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiFaultRateWarning63CFB7F0",
+ "ScopeTestDummyApiIntegrationLatencyTM95100WarningDB62B359",
"Arn",
],
},
@@ -419,7 +419,7 @@ Object {
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
- "ScopeTestDummyApiMinTPSWarning4E8DB4D0",
+ "ScopeTestDummyApiIntegrationLatencyTM99100Warning304E790F",
"Arn",
],
},
@@ -428,6 +428,94 @@ Object {
"Ref": "AWS::Region",
},
"\\",\\"annotations\\":{\\"alarms\\":[\\"",
+ Object {
+ "Fn::GetAtt": Array [
+ "ScopeTestDummyApiIntegrationLatencyTM999100WarningE199BD2E",
+ "Arn",
+ ],
+ },
+ "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":36,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+ Object {
+ "Ref": "AWS::Region",
+ },
+ "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+ Object {
+ "Fn::GetAtt": Array [
+ "ScopeTestDummyApiIntegrationLatencyTM9999100Warning3D3FA4F3",
+ "Arn",
+ ],
+ },
+ "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":18,\\"y\\":36,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+ Object {
+ "Ref": "AWS::Region",
+ },
+ "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+ Object {
+ "Fn::GetAtt": Array [
+ "ScopeTestDummyApiIntegrationLatencyAverageWarning1FB2E797",
+ "Arn",
+ ],
+ },
+ "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":40,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+ Object {
+ "Ref": "AWS::Region",
+ },
+ "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+ Object {
+ "Fn::GetAtt": Array [
+ "ScopeTestDummyApiErrorCountWarning11BE36AF",
+ "Arn",
+ ],
+ },
+ "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":40,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+ Object {
+ "Ref": "AWS::Region",
+ },
+ "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+ Object {
+ "Fn::GetAtt": Array [
+ "ScopeTestDummyApiErrorRateWarningD181D1C6",
+ "Arn",
+ ],
+ },
+ "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":40,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+ Object {
+ "Ref": "AWS::Region",
+ },
+ "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+ Object {
+ "Fn::GetAtt": Array [
+ "ScopeTestDummyApiFaultCountWarning6270BEC0",
+ "Arn",
+ ],
+ },
+ "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":18,\\"y\\":40,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+ Object {
+ "Ref": "AWS::Region",
+ },
+ "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+ Object {
+ "Fn::GetAtt": Array [
+ "ScopeTestDummyApiFaultRateWarning63CFB7F0",
+ "Arn",
+ ],
+ },
+ "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":44,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+ Object {
+ "Ref": "AWS::Region",
+ },
+ "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+ Object {
+ "Fn::GetAtt": Array [
+ "ScopeTestDummyApiMinTPSWarning4E8DB4D0",
+ "Arn",
+ ],
+ },
+ "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":44,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+ Object {
+ "Ref": "AWS::Region",
+ },
+ "\\",\\"annotations\\":{\\"alarms\\":[\\"",
Object {
"Fn::GetAtt": Array [
"ScopeTestDummyApiMaxTPSWarning62732F2B",
@@ -535,6 +623,38 @@ Object {
Object {
"Ref": "testHttpApiC57B300F",
},
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM(95%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(95%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"IntegrationLatency\\",\\"ApiId\\",\\"",
+ Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM(95%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(95%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiId\\",\\"",
+ Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM(99%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"IntegrationLatency\\",\\"ApiId\\",\\"",
+ Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM(99%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiId\\",\\"",
+ Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM(99.9%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99.9%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"IntegrationLatency\\",\\"ApiId\\",\\"",
+ Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM(99.9%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99.9%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiId\\",\\"",
+ Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM(99.99%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99.99%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"IntegrationLatency\\",\\"ApiId\\",\\"",
+ Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM(99.99%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99.99%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiId\\",\\"",
+ Object {
+ "Ref": "testHttpApiC57B300F",
+ },
"\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM50 (avg: \${AVG})\\",\\"stat\\":\\"tm50\\"}],[\\"AWS/ApiGateway\\",\\"IntegrationLatency\\",\\"ApiId\\",\\"",
Object {
"Ref": "testHttpApiC57B300F",
@@ -587,7 +707,7 @@ Object {
Object {
"Ref": "testHttpApiC57B300F",
},
- "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM99.99 (avg: \${AVG})\\",\\"stat\\":\\"tm99.99\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"P50 > 150 for 150 datapoints within 750 minutes\\",\\"value\\":150,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P70 > 170 for 170 datapoints within 850 minutes\\",\\"value\\":170,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P90 > 190 for 190 datapoints within 950 minutes\\",\\"value\\":190,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P95 > 195 for 195 datapoints within 975 minutes\\",\\"value\\":195,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99 > 199 for 199 datapoints within 995 minutes\\",\\"value\\":199,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.9 > 1999 for 1999 datapoints within 9995 minutes\\",\\"value\\":1999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.99 > 19999 for 19999 datapoints within 99995 minutes\\",\\"value\\":19999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P100 > 1100 for 1100 datapoints within 5500 minutes\\",\\"value\\":1100,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM50 > 250 for 250 datapoints within 1250 minutes\\",\\"value\\":250,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM70 > 270 for 270 datapoints within 1350 minutes\\",\\"value\\":270,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM90 > 290 for 290 datapoints within 1450 minutes\\",\\"value\\":290,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM95 > 295 for 295 datapoints within 1475 minutes\\",\\"value\\":295,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99 > 299 for 299 datapoints within 1495 minutes\\",\\"value\\":299,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.9 > 2999 for 2999 datapoints within 14995 minutes\\",\\"value\\":2999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.99 > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Average > 20 for 20 datapoints within 100 minutes\\",\\"value\\":20,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P50 > 150 for 150 datapoints within 750 minutes\\",\\"value\\":150,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P70 > 170 for 170 datapoints within 850 minutes\\",\\"value\\":170,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P90 > 190 for 190 datapoints within 950 minutes\\",\\"value\\":190,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P95 > 195 for 195 datapoints within 975 minutes\\",\\"value\\":195,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99 > 199 for 199 datapoints within 995 minutes\\",\\"value\\":199,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.9 > 1999 for 1999 datapoints within 9995 minutes\\",\\"value\\":1999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.99 > 19999 for 19999 datapoints within 99995 minutes\\",\\"value\\":19999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P100 > 1100 for 1100 datapoints within 5500 minutes\\",\\"value\\":1100,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM50 > 250 for 250 datapoints within 1250 minutes\\",\\"value\\":250,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM70 > 270 for 270 datapoints within 1350 minutes\\",\\"value\\":270,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM90 > 290 for 290 datapoints within 1450 minutes\\",\\"value\\":290,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM95 > 295 for 295 datapoints within 1475 minutes\\",\\"value\\":295,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99 > 299 for 299 datapoints within 1495 minutes\\",\\"value\\":299,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.9 > 2999 for 2999 datapoints within 14995 minutes\\",\\"value\\":2999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.99 > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Average > 20 for 20 datapoints within 100 minutes\\",\\"value\\":20,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Errors\\",\\"region\\":\\"",
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM99.99 (avg: \${AVG})\\",\\"stat\\":\\"tm99.99\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"P50 > 150 for 150 datapoints within 750 minutes\\",\\"value\\":150,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P70 > 170 for 170 datapoints within 850 minutes\\",\\"value\\":170,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P90 > 190 for 190 datapoints within 950 minutes\\",\\"value\\":190,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P95 > 195 for 195 datapoints within 975 minutes\\",\\"value\\":195,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99 > 199 for 199 datapoints within 995 minutes\\",\\"value\\":199,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.9 > 1999 for 1999 datapoints within 9995 minutes\\",\\"value\\":1999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.99 > 19999 for 19999 datapoints within 99995 minutes\\",\\"value\\":19999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P100 > 1100 for 1100 datapoints within 5500 minutes\\",\\"value\\":1100,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM50 > 250 for 250 datapoints within 1250 minutes\\",\\"value\\":250,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM70 > 270 for 270 datapoints within 1350 minutes\\",\\"value\\":270,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM90 > 290 for 290 datapoints within 1450 minutes\\",\\"value\\":290,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM95 > 295 for 295 datapoints within 1475 minutes\\",\\"value\\":295,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99 > 299 for 299 datapoints within 1495 minutes\\",\\"value\\":299,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.9 > 2999 for 2999 datapoints within 14995 minutes\\",\\"value\\":2999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.99 > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(95%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99.9%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99.99%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Average > 20 for 20 datapoints within 100 minutes\\",\\"value\\":20,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P50 > 150 for 150 datapoints within 750 minutes\\",\\"value\\":150,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P70 > 170 for 170 datapoints within 850 minutes\\",\\"value\\":170,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P90 > 190 for 190 datapoints within 950 minutes\\",\\"value\\":190,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P95 > 195 for 195 datapoints within 975 minutes\\",\\"value\\":195,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99 > 199 for 199 datapoints within 995 minutes\\",\\"value\\":199,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.9 > 1999 for 1999 datapoints within 9995 minutes\\",\\"value\\":1999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.99 > 19999 for 19999 datapoints within 99995 minutes\\",\\"value\\":19999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P100 > 1100 for 1100 datapoints within 5500 minutes\\",\\"value\\":1100,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM50 > 250 for 250 datapoints within 1250 minutes\\",\\"value\\":250,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM70 > 270 for 270 datapoints within 1350 minutes\\",\\"value\\":270,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM90 > 290 for 290 datapoints within 1450 minutes\\",\\"value\\":290,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM95 > 295 for 295 datapoints within 1475 minutes\\",\\"value\\":295,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99 > 299 for 299 datapoints within 1495 minutes\\",\\"value\\":299,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.9 > 2999 for 2999 datapoints within 14995 minutes\\",\\"value\\":2999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.99 > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(95%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99.9%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99.99%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Average > 20 for 20 datapoints within 100 minutes\\",\\"value\\":20,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Errors\\",\\"region\\":\\"",
Object {
"Ref": "AWS::Region",
},
@@ -1258,6 +1378,46 @@ Object {
},
"Type": "AWS::CloudWatch::Alarm",
},
+ "ScopeTestDummyApiIntegrationLatencyTM95100WarningDB62B359": Object {
+ "Properties": Object {
+ "ActionsEnabled": true,
+ "AlarmDescription": "TM(95%:100%) integration latency is too high.",
+ "AlarmName": "Test-DummyApi-IntegrationLatency-TM(95%:100%)-Warning",
+ "ComparisonOperator": "GreaterThanThreshold",
+ "DatapointsToAlarm": 29999,
+ "EvaluationPeriods": 29999,
+ "Metrics": Array [
+ Object {
+ "Id": "m1",
+ "Label": "TM(95%:100%)",
+ "MetricStat": Object {
+ "Metric": Object {
+ "Dimensions": Array [
+ Object {
+ "Name": "ApiId",
+ "Value": Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ },
+ Object {
+ "Name": "Stage",
+ "Value": "$default",
+ },
+ ],
+ "MetricName": "IntegrationLatency",
+ "Namespace": "AWS/ApiGateway",
+ },
+ "Period": 300,
+ "Stat": "TM(95%:100%)",
+ },
+ "ReturnData": true,
+ },
+ ],
+ "Threshold": 29999,
+ "TreatMissingData": "notBreaching",
+ },
+ "Type": "AWS::CloudWatch::Alarm",
+ },
"ScopeTestDummyApiIntegrationLatencyTM95WarningCA30746B": Object {
"Properties": Object {
"ActionsEnabled": true,
@@ -1298,6 +1458,126 @@ Object {
},
"Type": "AWS::CloudWatch::Alarm",
},
+ "ScopeTestDummyApiIntegrationLatencyTM99100Warning304E790F": Object {
+ "Properties": Object {
+ "ActionsEnabled": true,
+ "AlarmDescription": "TM(99%:100%) integration latency is too high.",
+ "AlarmName": "Test-DummyApi-IntegrationLatency-TM(99%:100%)-Warning",
+ "ComparisonOperator": "GreaterThanThreshold",
+ "DatapointsToAlarm": 29999,
+ "EvaluationPeriods": 29999,
+ "Metrics": Array [
+ Object {
+ "Id": "m1",
+ "Label": "TM(99%:100%)",
+ "MetricStat": Object {
+ "Metric": Object {
+ "Dimensions": Array [
+ Object {
+ "Name": "ApiId",
+ "Value": Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ },
+ Object {
+ "Name": "Stage",
+ "Value": "$default",
+ },
+ ],
+ "MetricName": "IntegrationLatency",
+ "Namespace": "AWS/ApiGateway",
+ },
+ "Period": 300,
+ "Stat": "TM(99%:100%)",
+ },
+ "ReturnData": true,
+ },
+ ],
+ "Threshold": 29999,
+ "TreatMissingData": "notBreaching",
+ },
+ "Type": "AWS::CloudWatch::Alarm",
+ },
+ "ScopeTestDummyApiIntegrationLatencyTM999100WarningE199BD2E": Object {
+ "Properties": Object {
+ "ActionsEnabled": true,
+ "AlarmDescription": "TM(99.9%:100%) integration latency is too high.",
+ "AlarmName": "Test-DummyApi-IntegrationLatency-TM(99.9%:100%)-Warning",
+ "ComparisonOperator": "GreaterThanThreshold",
+ "DatapointsToAlarm": 29999,
+ "EvaluationPeriods": 29999,
+ "Metrics": Array [
+ Object {
+ "Id": "m1",
+ "Label": "TM(99.9%:100%)",
+ "MetricStat": Object {
+ "Metric": Object {
+ "Dimensions": Array [
+ Object {
+ "Name": "ApiId",
+ "Value": Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ },
+ Object {
+ "Name": "Stage",
+ "Value": "$default",
+ },
+ ],
+ "MetricName": "IntegrationLatency",
+ "Namespace": "AWS/ApiGateway",
+ },
+ "Period": 300,
+ "Stat": "TM(99.9%:100%)",
+ },
+ "ReturnData": true,
+ },
+ ],
+ "Threshold": 29999,
+ "TreatMissingData": "notBreaching",
+ },
+ "Type": "AWS::CloudWatch::Alarm",
+ },
+ "ScopeTestDummyApiIntegrationLatencyTM9999100Warning3D3FA4F3": Object {
+ "Properties": Object {
+ "ActionsEnabled": true,
+ "AlarmDescription": "TM(99.99%:100%) integration latency is too high.",
+ "AlarmName": "Test-DummyApi-IntegrationLatency-TM(99.99%:100%)-Warning",
+ "ComparisonOperator": "GreaterThanThreshold",
+ "DatapointsToAlarm": 29999,
+ "EvaluationPeriods": 29999,
+ "Metrics": Array [
+ Object {
+ "Id": "m1",
+ "Label": "TM(99.99%:100%)",
+ "MetricStat": Object {
+ "Metric": Object {
+ "Dimensions": Array [
+ Object {
+ "Name": "ApiId",
+ "Value": Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ },
+ Object {
+ "Name": "Stage",
+ "Value": "$default",
+ },
+ ],
+ "MetricName": "IntegrationLatency",
+ "Namespace": "AWS/ApiGateway",
+ },
+ "Period": 300,
+ "Stat": "TM(99.99%:100%)",
+ },
+ "ReturnData": true,
+ },
+ ],
+ "Threshold": 29999,
+ "TreatMissingData": "notBreaching",
+ },
+ "Type": "AWS::CloudWatch::Alarm",
+ },
"ScopeTestDummyApiIntegrationLatencyTM9999Warning26E553E4": Object {
"Properties": Object {
"ActionsEnabled": true,
@@ -1898,6 +2178,46 @@ Object {
},
"Type": "AWS::CloudWatch::Alarm",
},
+ "ScopeTestDummyApiLatencyTM95100Warning206C89FE": Object {
+ "Properties": Object {
+ "ActionsEnabled": true,
+ "AlarmDescription": "TM(95%:100%) latency is too high.",
+ "AlarmName": "Test-DummyApi-Latency-TM(95%:100%)-Warning",
+ "ComparisonOperator": "GreaterThanThreshold",
+ "DatapointsToAlarm": 29999,
+ "EvaluationPeriods": 29999,
+ "Metrics": Array [
+ Object {
+ "Id": "m1",
+ "Label": "TM(95%:100%)",
+ "MetricStat": Object {
+ "Metric": Object {
+ "Dimensions": Array [
+ Object {
+ "Name": "ApiId",
+ "Value": Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ },
+ Object {
+ "Name": "Stage",
+ "Value": "$default",
+ },
+ ],
+ "MetricName": "Latency",
+ "Namespace": "AWS/ApiGateway",
+ },
+ "Period": 300,
+ "Stat": "TM(95%:100%)",
+ },
+ "ReturnData": true,
+ },
+ ],
+ "Threshold": 29999,
+ "TreatMissingData": "notBreaching",
+ },
+ "Type": "AWS::CloudWatch::Alarm",
+ },
"ScopeTestDummyApiLatencyTM95WarningFFD46CB8": Object {
"Properties": Object {
"ActionsEnabled": true,
@@ -1938,6 +2258,126 @@ Object {
},
"Type": "AWS::CloudWatch::Alarm",
},
+ "ScopeTestDummyApiLatencyTM99100Warning38223F80": Object {
+ "Properties": Object {
+ "ActionsEnabled": true,
+ "AlarmDescription": "TM(99%:100%) latency is too high.",
+ "AlarmName": "Test-DummyApi-Latency-TM(99%:100%)-Warning",
+ "ComparisonOperator": "GreaterThanThreshold",
+ "DatapointsToAlarm": 29999,
+ "EvaluationPeriods": 29999,
+ "Metrics": Array [
+ Object {
+ "Id": "m1",
+ "Label": "TM(99%:100%)",
+ "MetricStat": Object {
+ "Metric": Object {
+ "Dimensions": Array [
+ Object {
+ "Name": "ApiId",
+ "Value": Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ },
+ Object {
+ "Name": "Stage",
+ "Value": "$default",
+ },
+ ],
+ "MetricName": "Latency",
+ "Namespace": "AWS/ApiGateway",
+ },
+ "Period": 300,
+ "Stat": "TM(99%:100%)",
+ },
+ "ReturnData": true,
+ },
+ ],
+ "Threshold": 29999,
+ "TreatMissingData": "notBreaching",
+ },
+ "Type": "AWS::CloudWatch::Alarm",
+ },
+ "ScopeTestDummyApiLatencyTM999100Warning20E62DC6": Object {
+ "Properties": Object {
+ "ActionsEnabled": true,
+ "AlarmDescription": "TM(99.9%:100%) latency is too high.",
+ "AlarmName": "Test-DummyApi-Latency-TM(99.9%:100%)-Warning",
+ "ComparisonOperator": "GreaterThanThreshold",
+ "DatapointsToAlarm": 29999,
+ "EvaluationPeriods": 29999,
+ "Metrics": Array [
+ Object {
+ "Id": "m1",
+ "Label": "TM(99.9%:100%)",
+ "MetricStat": Object {
+ "Metric": Object {
+ "Dimensions": Array [
+ Object {
+ "Name": "ApiId",
+ "Value": Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ },
+ Object {
+ "Name": "Stage",
+ "Value": "$default",
+ },
+ ],
+ "MetricName": "Latency",
+ "Namespace": "AWS/ApiGateway",
+ },
+ "Period": 300,
+ "Stat": "TM(99.9%:100%)",
+ },
+ "ReturnData": true,
+ },
+ ],
+ "Threshold": 29999,
+ "TreatMissingData": "notBreaching",
+ },
+ "Type": "AWS::CloudWatch::Alarm",
+ },
+ "ScopeTestDummyApiLatencyTM9999100Warning800AFBBF": Object {
+ "Properties": Object {
+ "ActionsEnabled": true,
+ "AlarmDescription": "TM(99.99%:100%) latency is too high.",
+ "AlarmName": "Test-DummyApi-Latency-TM(99.99%:100%)-Warning",
+ "ComparisonOperator": "GreaterThanThreshold",
+ "DatapointsToAlarm": 29999,
+ "EvaluationPeriods": 29999,
+ "Metrics": Array [
+ Object {
+ "Id": "m1",
+ "Label": "TM(99.99%:100%)",
+ "MetricStat": Object {
+ "Metric": Object {
+ "Dimensions": Array [
+ Object {
+ "Name": "ApiId",
+ "Value": Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ },
+ Object {
+ "Name": "Stage",
+ "Value": "$default",
+ },
+ ],
+ "MetricName": "Latency",
+ "Namespace": "AWS/ApiGateway",
+ },
+ "Period": 300,
+ "Stat": "TM(99.99%:100%)",
+ },
+ "ReturnData": true,
+ },
+ ],
+ "Threshold": 29999,
+ "TreatMissingData": "notBreaching",
+ },
+ "Type": "AWS::CloudWatch::Alarm",
+ },
"ScopeTestDummyApiLatencyTM9999Warning4181DE97": Object {
"Properties": Object {
"ActionsEnabled": true,
@@ -2242,6 +2682,38 @@ Object {
Object {
"Ref": "testHttpApiC57B300F",
},
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM(95%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(95%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"IntegrationLatency\\",\\"ApiId\\",\\"",
+ Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM(95%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(95%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiId\\",\\"",
+ Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM(99%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"IntegrationLatency\\",\\"ApiId\\",\\"",
+ Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM(99%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiId\\",\\"",
+ Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM(99.9%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99.9%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"IntegrationLatency\\",\\"ApiId\\",\\"",
+ Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM(99.9%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99.9%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiId\\",\\"",
+ Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM(99.99%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99.99%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"IntegrationLatency\\",\\"ApiId\\",\\"",
+ Object {
+ "Ref": "testHttpApiC57B300F",
+ },
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM(99.99%:100%) (avg: \${AVG})\\",\\"stat\\":\\"TM(99.99%:100%)\\"}],[\\"AWS/ApiGateway\\",\\"Latency\\",\\"ApiId\\",\\"",
+ Object {
+ "Ref": "testHttpApiC57B300F",
+ },
"\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM50 (avg: \${AVG})\\",\\"stat\\":\\"tm50\\"}],[\\"AWS/ApiGateway\\",\\"IntegrationLatency\\",\\"ApiId\\",\\"",
Object {
"Ref": "testHttpApiC57B300F",
@@ -2294,7 +2766,7 @@ Object {
Object {
"Ref": "testHttpApiC57B300F",
},
- "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM99.99 (avg: \${AVG})\\",\\"stat\\":\\"tm99.99\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"P50 > 150 for 150 datapoints within 750 minutes\\",\\"value\\":150,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P70 > 170 for 170 datapoints within 850 minutes\\",\\"value\\":170,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P90 > 190 for 190 datapoints within 950 minutes\\",\\"value\\":190,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P95 > 195 for 195 datapoints within 975 minutes\\",\\"value\\":195,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99 > 199 for 199 datapoints within 995 minutes\\",\\"value\\":199,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.9 > 1999 for 1999 datapoints within 9995 minutes\\",\\"value\\":1999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.99 > 19999 for 19999 datapoints within 99995 minutes\\",\\"value\\":19999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P100 > 1100 for 1100 datapoints within 5500 minutes\\",\\"value\\":1100,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM50 > 250 for 250 datapoints within 1250 minutes\\",\\"value\\":250,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM70 > 270 for 270 datapoints within 1350 minutes\\",\\"value\\":270,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM90 > 290 for 290 datapoints within 1450 minutes\\",\\"value\\":290,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM95 > 295 for 295 datapoints within 1475 minutes\\",\\"value\\":295,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99 > 299 for 299 datapoints within 1495 minutes\\",\\"value\\":299,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.9 > 2999 for 2999 datapoints within 14995 minutes\\",\\"value\\":2999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.99 > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Average > 20 for 20 datapoints within 100 minutes\\",\\"value\\":20,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P50 > 150 for 150 datapoints within 750 minutes\\",\\"value\\":150,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P70 > 170 for 170 datapoints within 850 minutes\\",\\"value\\":170,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P90 > 190 for 190 datapoints within 950 minutes\\",\\"value\\":190,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P95 > 195 for 195 datapoints within 975 minutes\\",\\"value\\":195,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99 > 199 for 199 datapoints within 995 minutes\\",\\"value\\":199,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.9 > 1999 for 1999 datapoints within 9995 minutes\\",\\"value\\":1999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.99 > 19999 for 19999 datapoints within 99995 minutes\\",\\"value\\":19999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P100 > 1100 for 1100 datapoints within 5500 minutes\\",\\"value\\":1100,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM50 > 250 for 250 datapoints within 1250 minutes\\",\\"value\\":250,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM70 > 270 for 270 datapoints within 1350 minutes\\",\\"value\\":270,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM90 > 290 for 290 datapoints within 1450 minutes\\",\\"value\\":290,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM95 > 295 for 295 datapoints within 1475 minutes\\",\\"value\\":295,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99 > 299 for 299 datapoints within 1495 minutes\\",\\"value\\":299,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.9 > 2999 for 2999 datapoints within 14995 minutes\\",\\"value\\":2999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.99 > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Average > 20 for 20 datapoints within 100 minutes\\",\\"value\\":20,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Errors (rate)\\",\\"region\\":\\"",
+ "\\",\\"Stage\\",\\"$default\\",{\\"label\\":\\"TM99.99 (avg: \${AVG})\\",\\"stat\\":\\"tm99.99\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"P50 > 150 for 150 datapoints within 750 minutes\\",\\"value\\":150,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P70 > 170 for 170 datapoints within 850 minutes\\",\\"value\\":170,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P90 > 190 for 190 datapoints within 950 minutes\\",\\"value\\":190,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P95 > 195 for 195 datapoints within 975 minutes\\",\\"value\\":195,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99 > 199 for 199 datapoints within 995 minutes\\",\\"value\\":199,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.9 > 1999 for 1999 datapoints within 9995 minutes\\",\\"value\\":1999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.99 > 19999 for 19999 datapoints within 99995 minutes\\",\\"value\\":19999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P100 > 1100 for 1100 datapoints within 5500 minutes\\",\\"value\\":1100,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM50 > 250 for 250 datapoints within 1250 minutes\\",\\"value\\":250,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM70 > 270 for 270 datapoints within 1350 minutes\\",\\"value\\":270,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM90 > 290 for 290 datapoints within 1450 minutes\\",\\"value\\":290,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM95 > 295 for 295 datapoints within 1475 minutes\\",\\"value\\":295,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99 > 299 for 299 datapoints within 1495 minutes\\",\\"value\\":299,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.9 > 2999 for 2999 datapoints within 14995 minutes\\",\\"value\\":2999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.99 > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(95%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99.9%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99.99%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Average > 20 for 20 datapoints within 100 minutes\\",\\"value\\":20,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P50 > 150 for 150 datapoints within 750 minutes\\",\\"value\\":150,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P70 > 170 for 170 datapoints within 850 minutes\\",\\"value\\":170,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P90 > 190 for 190 datapoints within 950 minutes\\",\\"value\\":190,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P95 > 195 for 195 datapoints within 975 minutes\\",\\"value\\":195,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99 > 199 for 199 datapoints within 995 minutes\\",\\"value\\":199,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.9 > 1999 for 1999 datapoints within 9995 minutes\\",\\"value\\":1999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P99.99 > 19999 for 19999 datapoints within 99995 minutes\\",\\"value\\":19999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"P100 > 1100 for 1100 datapoints within 5500 minutes\\",\\"value\\":1100,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM50 > 250 for 250 datapoints within 1250 minutes\\",\\"value\\":250,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM70 > 270 for 270 datapoints within 1350 minutes\\",\\"value\\":270,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM90 > 290 for 290 datapoints within 1450 minutes\\",\\"value\\":290,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM95 > 295 for 295 datapoints within 1475 minutes\\",\\"value\\":295,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99 > 299 for 299 datapoints within 1495 minutes\\",\\"value\\":299,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.9 > 2999 for 2999 datapoints within 14995 minutes\\",\\"value\\":2999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM99.99 > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(95%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99.9%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"TM(99.99%:100%) > 29999 for 29999 datapoints within 149995 minutes\\",\\"value\\":29999,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Average > 20 for 20 datapoints within 100 minutes\\",\\"value\\":20,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":8,\\"height\\":6,\\"x\\":16,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Errors (rate)\\",\\"region\\":\\"",
Object {
"Ref": "AWS::Region",
},