Skip to content

Commit fecff60

Browse files
authored
feat(apigateway): add p95 latency alarms (#104)
Fixes #95 --- _By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license_
1 parent be36460 commit fecff60

File tree

7 files changed

+418
-2
lines changed

7 files changed

+418
-2
lines changed

API.md

Lines changed: 132 additions & 0 deletions
Large diffs are not rendered by default.

lib/monitoring/aws-apigateway/ApiGatewayMonitoring.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,15 @@ export interface ApiGatewayMonitoringOptions extends BaseMonitoringProps {
4747
readonly addLatencyP50Alarm?: Record<string, LatencyThreshold>;
4848
readonly addLatencyP70Alarm?: Record<string, LatencyThreshold>;
4949
readonly addLatencyP90Alarm?: Record<string, LatencyThreshold>;
50+
readonly addLatencyP95Alarm?: Record<string, LatencyThreshold>;
5051
readonly addLatencyP99Alarm?: Record<string, LatencyThreshold>;
5152
readonly addLatencyP999Alarm?: Record<string, LatencyThreshold>;
5253
readonly addLatencyP9999Alarm?: Record<string, LatencyThreshold>;
5354
readonly addLatencyP100Alarm?: Record<string, LatencyThreshold>;
5455
readonly addLatencyTM50Alarm?: Record<string, LatencyThreshold>;
5556
readonly addLatencyTM70Alarm?: Record<string, LatencyThreshold>;
5657
readonly addLatencyTM90Alarm?: Record<string, LatencyThreshold>;
58+
readonly addLatencyTM95Alarm?: Record<string, LatencyThreshold>;
5759
readonly addLatencyTM99Alarm?: Record<string, LatencyThreshold>;
5860
readonly addLatencyTM999Alarm?: Record<string, LatencyThreshold>;
5961
readonly addLatencyTM9999Alarm?: Record<string, LatencyThreshold>;
@@ -159,13 +161,15 @@ export class ApiGatewayMonitoring extends Monitoring {
159161
[LatencyType.P50]: props.addLatencyP50Alarm,
160162
[LatencyType.P70]: props.addLatencyP70Alarm,
161163
[LatencyType.P90]: props.addLatencyP90Alarm,
164+
[LatencyType.P95]: props.addLatencyP95Alarm,
162165
[LatencyType.P99]: props.addLatencyP99Alarm,
163166
[LatencyType.P999]: props.addLatencyP999Alarm,
164167
[LatencyType.P9999]: props.addLatencyP9999Alarm,
165168
[LatencyType.P100]: props.addLatencyP100Alarm,
166169
[LatencyType.TM50]: props.addLatencyTM50Alarm,
167170
[LatencyType.TM70]: props.addLatencyTM70Alarm,
168171
[LatencyType.TM90]: props.addLatencyTM90Alarm,
172+
[LatencyType.TM95]: props.addLatencyTM95Alarm,
169173
[LatencyType.TM99]: props.addLatencyTM99Alarm,
170174
[LatencyType.TM999]: props.addLatencyTM999Alarm,
171175
[LatencyType.TM9999]: props.addLatencyTM9999Alarm,

lib/monitoring/aws-apigatewayv2/ApiGatewayV2HttpApiMonitoring.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,15 @@ export interface ApiGatewayV2MonitoringOptions extends BaseMonitoringProps {
5454
readonly addLatencyP50Alarm?: Record<string, LatencyThreshold>;
5555
readonly addLatencyP70Alarm?: Record<string, LatencyThreshold>;
5656
readonly addLatencyP90Alarm?: Record<string, LatencyThreshold>;
57+
readonly addLatencyP95Alarm?: Record<string, LatencyThreshold>;
5758
readonly addLatencyP99Alarm?: Record<string, LatencyThreshold>;
5859
readonly addLatencyP999Alarm?: Record<string, LatencyThreshold>;
5960
readonly addLatencyP9999Alarm?: Record<string, LatencyThreshold>;
6061
readonly addLatencyP100Alarm?: Record<string, LatencyThreshold>;
6162
readonly addLatencyTM50Alarm?: Record<string, LatencyThreshold>;
6263
readonly addLatencyTM70Alarm?: Record<string, LatencyThreshold>;
6364
readonly addLatencyTM90Alarm?: Record<string, LatencyThreshold>;
65+
readonly addLatencyTM95Alarm?: Record<string, LatencyThreshold>;
6466
readonly addLatencyTM99Alarm?: Record<string, LatencyThreshold>;
6567
readonly addLatencyTM999Alarm?: Record<string, LatencyThreshold>;
6668
readonly addLatencyTM9999Alarm?: Record<string, LatencyThreshold>;
@@ -69,13 +71,15 @@ export interface ApiGatewayV2MonitoringOptions extends BaseMonitoringProps {
6971
readonly addIntegrationLatencyP50Alarm?: Record<string, LatencyThreshold>;
7072
readonly addIntegrationLatencyP70Alarm?: Record<string, LatencyThreshold>;
7173
readonly addIntegrationLatencyP90Alarm?: Record<string, LatencyThreshold>;
74+
readonly addIntegrationLatencyP95Alarm?: Record<string, LatencyThreshold>;
7275
readonly addIntegrationLatencyP99Alarm?: Record<string, LatencyThreshold>;
7376
readonly addIntegrationLatencyP999Alarm?: Record<string, LatencyThreshold>;
7477
readonly addIntegrationLatencyP9999Alarm?: Record<string, LatencyThreshold>;
7578
readonly addIntegrationLatencyP100Alarm?: Record<string, LatencyThreshold>;
7679
readonly addIntegrationLatencyTM50Alarm?: Record<string, LatencyThreshold>;
7780
readonly addIntegrationLatencyTM70Alarm?: Record<string, LatencyThreshold>;
7881
readonly addIntegrationLatencyTM90Alarm?: Record<string, LatencyThreshold>;
82+
readonly addIntegrationLatencyTM95Alarm?: Record<string, LatencyThreshold>;
7983
readonly addIntegrationLatencyTM99Alarm?: Record<string, LatencyThreshold>;
8084
readonly addIntegrationLatencyTM999Alarm?: Record<string, LatencyThreshold>;
8185
readonly addIntegrationLatencyTM9999Alarm?: Record<string, LatencyThreshold>;
@@ -180,13 +184,15 @@ export class ApiGatewayV2HttpApiMonitoring extends Monitoring {
180184
[LatencyType.P50]: props.addLatencyP50Alarm,
181185
[LatencyType.P70]: props.addLatencyP70Alarm,
182186
[LatencyType.P90]: props.addLatencyP90Alarm,
187+
[LatencyType.P95]: props.addLatencyP95Alarm,
183188
[LatencyType.P99]: props.addLatencyP99Alarm,
184189
[LatencyType.P999]: props.addLatencyP999Alarm,
185190
[LatencyType.P9999]: props.addLatencyP9999Alarm,
186191
[LatencyType.P100]: props.addLatencyP100Alarm,
187192
[LatencyType.TM50]: props.addLatencyTM50Alarm,
188193
[LatencyType.TM70]: props.addLatencyTM70Alarm,
189194
[LatencyType.TM90]: props.addLatencyTM90Alarm,
195+
[LatencyType.TM95]: props.addLatencyTM95Alarm,
190196
[LatencyType.TM99]: props.addLatencyTM99Alarm,
191197
[LatencyType.TM999]: props.addLatencyTM999Alarm,
192198
[LatencyType.TM9999]: props.addLatencyTM9999Alarm,
@@ -197,13 +203,15 @@ export class ApiGatewayV2HttpApiMonitoring extends Monitoring {
197203
[LatencyType.P50]: props.addIntegrationLatencyP50Alarm,
198204
[LatencyType.P70]: props.addIntegrationLatencyP70Alarm,
199205
[LatencyType.P90]: props.addIntegrationLatencyP90Alarm,
206+
[LatencyType.P95]: props.addIntegrationLatencyP95Alarm,
200207
[LatencyType.P99]: props.addIntegrationLatencyP99Alarm,
201208
[LatencyType.P999]: props.addIntegrationLatencyP999Alarm,
202209
[LatencyType.P9999]: props.addIntegrationLatencyP9999Alarm,
203210
[LatencyType.P100]: props.addIntegrationLatencyP100Alarm,
204211
[LatencyType.TM50]: props.addIntegrationLatencyTM50Alarm,
205212
[LatencyType.TM70]: props.addIntegrationLatencyTM70Alarm,
206213
[LatencyType.TM90]: props.addIntegrationLatencyTM90Alarm,
214+
[LatencyType.TM95]: props.addIntegrationLatencyTM95Alarm,
207215
[LatencyType.TM99]: props.addIntegrationLatencyTM99Alarm,
208216
[LatencyType.TM999]: props.addIntegrationLatencyTM999Alarm,
209217
[LatencyType.TM9999]: props.addIntegrationLatencyTM9999Alarm,

test/monitoring/aws-apigateway/ApiGatewayMonitoring.test.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,12 @@ test("snapshot test: all alarms", () => {
7676
datapointsToAlarm: 190,
7777
},
7878
},
79+
addLatencyP95Alarm: {
80+
Warning: {
81+
maxLatency: Duration.millis(195),
82+
datapointsToAlarm: 195,
83+
},
84+
},
7985
addLatencyP99Alarm: {
8086
Warning: {
8187
maxLatency: Duration.millis(199),
@@ -118,6 +124,12 @@ test("snapshot test: all alarms", () => {
118124
datapointsToAlarm: 290,
119125
},
120126
},
127+
addLatencyTM95Alarm: {
128+
Warning: {
129+
maxLatency: Duration.millis(295),
130+
datapointsToAlarm: 295,
131+
},
132+
},
121133
addLatencyTM99Alarm: {
122134
Warning: {
123135
maxLatency: Duration.millis(299),
@@ -155,6 +167,6 @@ test("snapshot test: all alarms", () => {
155167
},
156168
});
157169

158-
expect(numAlarmsCreated).toStrictEqual(20);
170+
expect(numAlarmsCreated).toStrictEqual(22);
159171
expect(Template.fromStack(stack)).toMatchSnapshot();
160172
});

test/monitoring/aws-apigateway/__snapshots__/ApiGatewayMonitoring.test.ts.snap

Lines changed: 76 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/monitoring/aws-apigatewayv2/ApiGatewayV2HttpApiMonitoring.test.ts

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@ test("snapshot test: all alarms", () => {
5959
datapointsToAlarm: 190,
6060
},
6161
},
62+
addLatencyP95Alarm: {
63+
Warning: {
64+
maxLatency: Duration.millis(195),
65+
datapointsToAlarm: 195,
66+
},
67+
},
6268
addLatencyP99Alarm: {
6369
Warning: {
6470
maxLatency: Duration.millis(199),
@@ -101,6 +107,12 @@ test("snapshot test: all alarms", () => {
101107
datapointsToAlarm: 290,
102108
},
103109
},
110+
addLatencyTM95Alarm: {
111+
Warning: {
112+
maxLatency: Duration.millis(295),
113+
datapointsToAlarm: 295,
114+
},
115+
},
104116
addLatencyTM99Alarm: {
105117
Warning: {
106118
maxLatency: Duration.millis(299),
@@ -143,6 +155,12 @@ test("snapshot test: all alarms", () => {
143155
datapointsToAlarm: 190,
144156
},
145157
},
158+
addIntegrationLatencyP95Alarm: {
159+
Warning: {
160+
maxLatency: Duration.millis(195),
161+
datapointsToAlarm: 195,
162+
},
163+
},
146164
addIntegrationLatencyP99Alarm: {
147165
Warning: {
148166
maxLatency: Duration.millis(199),
@@ -185,6 +203,12 @@ test("snapshot test: all alarms", () => {
185203
datapointsToAlarm: 290,
186204
},
187205
},
206+
addIntegrationLatencyTM95Alarm: {
207+
Warning: {
208+
maxLatency: Duration.millis(295),
209+
datapointsToAlarm: 295,
210+
},
211+
},
188212
addIntegrationLatencyTM99Alarm: {
189213
Warning: {
190214
maxLatency: Duration.millis(299),
@@ -246,6 +270,6 @@ test("snapshot test: all alarms", () => {
246270
},
247271
});
248272

249-
expect(numAlarmsCreated).toStrictEqual(34);
273+
expect(numAlarmsCreated).toStrictEqual(38);
250274
expect(Template.fromStack(stack)).toMatchSnapshot();
251275
});

0 commit comments

Comments
 (0)