funktor 0.7.19 → 0.7.22

Sign up to get free protection for your applications and to get access to all the features.
@@ -44,7 +44,7 @@ Resources:
44
44
  "metrics": [
45
45
  [ "${self:custom.funktor.DashboardNamespace}", "processed", "WorkerClassName", "HelloWorker", { "color": "#2ca02c" } ],
46
46
  [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "HelloWorker", { "label": "p90", "color": "#ff7f0e", "stat": "p90" } ],
47
- [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "HelloWorker", { "label": "p60", "color": "#1f77b4", "stat": "p60" } ]
47
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "HelloWorker", { "label": "p50", "color": "#1f77b4", "stat": "p50" } ]
48
48
  ],
49
49
  "view": "singleValue",
50
50
  "region": "us-east-1",
@@ -83,7 +83,7 @@ Resources:
83
83
  "metrics": [
84
84
  [ "${self:custom.funktor.DashboardNamespace}", "processed", "WorkerClassName", "AuditWorker", { "color": "#2ca02c" } ],
85
85
  [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "AuditWorker", { "label": "p90", "color": "#ff7f0e", "stat": "p90" } ],
86
- [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "AuditWorker", { "label": "p60", "color": "#1f77b4", "stat": "p60" } ]
86
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "AuditWorker", { "label": "p50", "color": "#1f77b4", "stat": "p50" } ]
87
87
  ],
88
88
  "view": "singleValue",
89
89
  "region": "us-east-1",
@@ -122,7 +122,7 @@ Resources:
122
122
  "metrics": [
123
123
  [ "${self:custom.funktor.DashboardNamespace}", "processed", "WorkerClassName", "GreetingsWorker", { "color": "#2ca02c" } ],
124
124
  [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "GreetingsWorker", { "label": "p90", "color": "#ff7f0e", "stat": "p90" } ],
125
- [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "GreetingsWorker", { "label": "p60", "color": "#1f77b4", "stat": "p60" } ]
125
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "GreetingsWorker", { "label": "p50", "color": "#1f77b4", "stat": "p50" } ]
126
126
  ],
127
127
  "view": "singleValue",
128
128
  "region": "us-east-1",
@@ -161,7 +161,7 @@ Resources:
161
161
  "metrics": [
162
162
  [ "${self:custom.funktor.DashboardNamespace}", "processed", "WorkerClassName", "SingleThreadAuditWorker", { "color": "#2ca02c" } ],
163
163
  [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "SingleThreadAuditWorker", { "label": "p90", "color": "#ff7f0e", "stat": "p90" } ],
164
- [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "SingleThreadAuditWorker", { "label": "p60", "color": "#1f77b4", "stat": "p60" } ]
164
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "SingleThreadAuditWorker", { "label": "p50", "color": "#1f77b4", "stat": "p50" } ]
165
165
  ],
166
166
  "view": "singleValue",
167
167
  "region": "us-east-1",
@@ -248,14 +248,14 @@ Resources:
248
248
  "type": "metric",
249
249
  "properties": {
250
250
  "metrics": [
251
- [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "HelloWorker", { "label": "p60", "color": "#1f77b4" } ]
251
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "HelloWorker", { "label": "p20", "color": "#1f77b4" } ]
252
252
  ],
253
253
  "view": "singleValue",
254
254
  "region": "us-east-1",
255
- "stat": "p60",
255
+ "stat": "p20",
256
256
  "period": 60,
257
257
  "sparkline": true,
258
- "title": "HelloWorker p60"
258
+ "title": "HelloWorker p20"
259
259
  }
260
260
  },
261
261
  {
@@ -266,14 +266,14 @@ Resources:
266
266
  "type": "metric",
267
267
  "properties": {
268
268
  "metrics": [
269
- [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "HelloWorker", { "label": "p70", "color": "#ff7f0e" } ]
269
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "HelloWorker", { "label": "p50", "color": "#ff7f0e" } ]
270
270
  ],
271
271
  "view": "singleValue",
272
272
  "region": "us-east-1",
273
- "stat": "p70",
273
+ "stat": "p50",
274
274
  "period": 60,
275
275
  "sparkline": true,
276
- "title": "HelloWorker p70"
276
+ "title": "HelloWorker p50"
277
277
  }
278
278
  },
279
279
  {
@@ -350,9 +350,6 @@ Resources:
350
350
  },
351
351
 
352
352
 
353
-
354
-
355
-
356
353
  {
357
354
  "height": 3,
358
355
  "width": 3,
@@ -405,13 +402,13 @@ Resources:
405
402
  "metrics": [
406
403
  [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "HelloWorker", { "stat": "p90", "color": "#d62728" } ],
407
404
  [ "...", { "stat": "p80", "color": "#2ca02c" } ],
408
- [ "...", { "stat": "p70", "color": "#ff7f0e" } ],
405
+ [ "...", { "stat": "p50", "color": "#ff7f0e" } ],
409
406
  [ "...", { "color": "#1f77b4" } ]
410
407
  ],
411
408
  "view": "timeSeries",
412
409
  "stacked": false,
413
410
  "region": "us-east-1",
414
- "stat": "p60",
411
+ "stat": "p20",
415
412
  "period": 60,
416
413
  "title": "HelloWorker Duration Percentiles",
417
414
  "legend": {
@@ -518,14 +515,14 @@ Resources:
518
515
  "type": "metric",
519
516
  "properties": {
520
517
  "metrics": [
521
- [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "AuditWorker", { "label": "p60", "color": "#1f77b4" } ]
518
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "AuditWorker", { "label": "p20", "color": "#1f77b4" } ]
522
519
  ],
523
520
  "view": "singleValue",
524
521
  "region": "us-east-1",
525
- "stat": "p60",
522
+ "stat": "p20",
526
523
  "period": 60,
527
524
  "sparkline": true,
528
- "title": "AuditWorker p60"
525
+ "title": "AuditWorker p20"
529
526
  }
530
527
  },
531
528
  {
@@ -536,14 +533,14 @@ Resources:
536
533
  "type": "metric",
537
534
  "properties": {
538
535
  "metrics": [
539
- [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "AuditWorker", { "label": "p70", "color": "#ff7f0e" } ]
536
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "AuditWorker", { "label": "p50", "color": "#ff7f0e" } ]
540
537
  ],
541
538
  "view": "singleValue",
542
539
  "region": "us-east-1",
543
- "stat": "p70",
540
+ "stat": "p50",
544
541
  "period": 60,
545
542
  "sparkline": true,
546
- "title": "AuditWorker p70"
543
+ "title": "AuditWorker p50"
547
544
  }
548
545
  },
549
546
  {
@@ -620,9 +617,6 @@ Resources:
620
617
  },
621
618
 
622
619
 
623
-
624
-
625
-
626
620
  {
627
621
  "height": 3,
628
622
  "width": 3,
@@ -675,13 +669,13 @@ Resources:
675
669
  "metrics": [
676
670
  [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "AuditWorker", { "stat": "p90", "color": "#d62728" } ],
677
671
  [ "...", { "stat": "p80", "color": "#2ca02c" } ],
678
- [ "...", { "stat": "p70", "color": "#ff7f0e" } ],
672
+ [ "...", { "stat": "p50", "color": "#ff7f0e" } ],
679
673
  [ "...", { "color": "#1f77b4" } ]
680
674
  ],
681
675
  "view": "timeSeries",
682
676
  "stacked": false,
683
677
  "region": "us-east-1",
684
- "stat": "p60",
678
+ "stat": "p20",
685
679
  "period": 60,
686
680
  "title": "AuditWorker Duration Percentiles",
687
681
  "legend": {
@@ -788,14 +782,14 @@ Resources:
788
782
  "type": "metric",
789
783
  "properties": {
790
784
  "metrics": [
791
- [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "GreetingsWorker", { "label": "p60", "color": "#1f77b4" } ]
785
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "GreetingsWorker", { "label": "p20", "color": "#1f77b4" } ]
792
786
  ],
793
787
  "view": "singleValue",
794
788
  "region": "us-east-1",
795
- "stat": "p60",
789
+ "stat": "p20",
796
790
  "period": 60,
797
791
  "sparkline": true,
798
- "title": "GreetingsWorker p60"
792
+ "title": "GreetingsWorker p20"
799
793
  }
800
794
  },
801
795
  {
@@ -806,14 +800,14 @@ Resources:
806
800
  "type": "metric",
807
801
  "properties": {
808
802
  "metrics": [
809
- [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "GreetingsWorker", { "label": "p70", "color": "#ff7f0e" } ]
803
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "GreetingsWorker", { "label": "p50", "color": "#ff7f0e" } ]
810
804
  ],
811
805
  "view": "singleValue",
812
806
  "region": "us-east-1",
813
- "stat": "p70",
807
+ "stat": "p50",
814
808
  "period": 60,
815
809
  "sparkline": true,
816
- "title": "GreetingsWorker p70"
810
+ "title": "GreetingsWorker p50"
817
811
  }
818
812
  },
819
813
  {
@@ -890,9 +884,6 @@ Resources:
890
884
  },
891
885
 
892
886
 
893
-
894
-
895
-
896
887
  {
897
888
  "height": 3,
898
889
  "width": 3,
@@ -945,13 +936,13 @@ Resources:
945
936
  "metrics": [
946
937
  [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "GreetingsWorker", { "stat": "p90", "color": "#d62728" } ],
947
938
  [ "...", { "stat": "p80", "color": "#2ca02c" } ],
948
- [ "...", { "stat": "p70", "color": "#ff7f0e" } ],
939
+ [ "...", { "stat": "p50", "color": "#ff7f0e" } ],
949
940
  [ "...", { "color": "#1f77b4" } ]
950
941
  ],
951
942
  "view": "timeSeries",
952
943
  "stacked": false,
953
944
  "region": "us-east-1",
954
- "stat": "p60",
945
+ "stat": "p20",
955
946
  "period": 60,
956
947
  "title": "GreetingsWorker Duration Percentiles",
957
948
  "legend": {
@@ -1058,14 +1049,14 @@ Resources:
1058
1049
  "type": "metric",
1059
1050
  "properties": {
1060
1051
  "metrics": [
1061
- [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "SingleThreadAuditWorker", { "label": "p60", "color": "#1f77b4" } ]
1052
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "SingleThreadAuditWorker", { "label": "p20", "color": "#1f77b4" } ]
1062
1053
  ],
1063
1054
  "view": "singleValue",
1064
1055
  "region": "us-east-1",
1065
- "stat": "p60",
1056
+ "stat": "p20",
1066
1057
  "period": 60,
1067
1058
  "sparkline": true,
1068
- "title": "SingleThreadAuditWorker p60"
1059
+ "title": "SingleThreadAuditWorker p20"
1069
1060
  }
1070
1061
  },
1071
1062
  {
@@ -1076,14 +1067,14 @@ Resources:
1076
1067
  "type": "metric",
1077
1068
  "properties": {
1078
1069
  "metrics": [
1079
- [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "SingleThreadAuditWorker", { "label": "p70", "color": "#ff7f0e" } ]
1070
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "SingleThreadAuditWorker", { "label": "p50", "color": "#ff7f0e" } ]
1080
1071
  ],
1081
1072
  "view": "singleValue",
1082
1073
  "region": "us-east-1",
1083
- "stat": "p70",
1074
+ "stat": "p50",
1084
1075
  "period": 60,
1085
1076
  "sparkline": true,
1086
- "title": "SingleThreadAuditWorker p70"
1077
+ "title": "SingleThreadAuditWorker p50"
1087
1078
  }
1088
1079
  },
1089
1080
  {
@@ -1160,9 +1151,6 @@ Resources:
1160
1151
  },
1161
1152
 
1162
1153
 
1163
-
1164
-
1165
-
1166
1154
  {
1167
1155
  "height": 3,
1168
1156
  "width": 3,
@@ -1215,13 +1203,13 @@ Resources:
1215
1203
  "metrics": [
1216
1204
  [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "SingleThreadAuditWorker", { "stat": "p90", "color": "#d62728" } ],
1217
1205
  [ "...", { "stat": "p80", "color": "#2ca02c" } ],
1218
- [ "...", { "stat": "p70", "color": "#ff7f0e" } ],
1206
+ [ "...", { "stat": "p50", "color": "#ff7f0e" } ],
1219
1207
  [ "...", { "color": "#1f77b4" } ]
1220
1208
  ],
1221
1209
  "view": "timeSeries",
1222
1210
  "stacked": false,
1223
1211
  "region": "us-east-1",
1224
- "stat": "p60",
1212
+ "stat": "p20",
1225
1213
  "period": 60,
1226
1214
  "title": "SingleThreadAuditWorker Duration Percentiles",
1227
1215
  "legend": {
@@ -1274,7 +1262,7 @@ Resources:
1274
1262
 
1275
1263
 
1276
1264
  {
1277
- "height": 3,
1265
+ "height": 2,
1278
1266
  "width": 24,
1279
1267
  "y": 54,
1280
1268
  "x": 0,
@@ -1283,23 +1271,23 @@ Resources:
1283
1271
  "markdown": "\n# Behind the scenes\n\n The stats below give some insight into the inner workings of the Funktor apparatus."
1284
1272
  }
1285
1273
  },
1274
+
1286
1275
 
1287
1276
 
1288
-
1289
1277
  {
1290
1278
  "height": 3,
1291
1279
  "width": 6,
1292
- "y": 60,
1280
+ "y": 56,
1293
1281
  "x": 0,
1294
1282
  "type": "text",
1295
1283
  "properties": {
1296
- "markdown": "\n# Incoming Jobs\n"
1284
+ "markdown": "\n# Incoming Jobs\n All jobs enter the system here. Jobs that are to be executed within the next 90 second go directly to a work queue. Jobs farther in the future are put in the jobs table."
1297
1285
  }
1298
1286
  },
1299
1287
  {
1300
1288
  "height": 3,
1301
1289
  "width": 3,
1302
- "y": 60,
1290
+ "y": 56,
1303
1291
  "x": 6,
1304
1292
  "type": "metric",
1305
1293
  "properties": {
@@ -1317,31 +1305,31 @@ Resources:
1317
1305
  {
1318
1306
  "height": 3,
1319
1307
  "width": 15,
1320
- "y": 60,
1308
+ "y": 56,
1321
1309
  "x": 9,
1322
1310
  "type": "metric",
1323
1311
  "properties": {
1324
1312
  "metrics": [
1325
- [ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", "Resource", "${self:custom.funktor.IncomingJobHandlerName}", { "label": "p60" } ],
1326
- [ "...", { "label": "p70", "stat": "p70" } ],
1313
+ [ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", "Resource", "${self:custom.funktor.IncomingJobHandlerName}", { "label": "p20" } ],
1314
+ [ "...", { "label": "p50", "stat": "p50" } ],
1327
1315
  [ "...", { "label": "p80", "stat": "p80" } ],
1328
1316
  [ "...", { "label": "p90", "stat": "p90" } ]
1329
1317
  ],
1330
1318
  "view": "singleValue",
1331
1319
  "region": "us-east-1",
1332
- "stat": "p60",
1320
+ "stat": "p20",
1333
1321
  "period": 60,
1334
1322
  "sparkline": true,
1335
1323
  "title": "Handler Duration Percentiles"
1336
1324
  }
1337
1325
  },
1326
+
1338
1327
 
1339
1328
 
1340
-
1341
1329
  {
1342
- "height": 6,
1330
+ "height": 4,
1343
1331
  "width": 9,
1344
- "y": 63,
1332
+ "y": 59,
1345
1333
  "x": 0,
1346
1334
  "type": "metric",
1347
1335
  "properties": {
@@ -1357,7 +1345,7 @@ Resources:
1357
1345
  "view": "timeSeries",
1358
1346
  "stacked": false,
1359
1347
  "region": "us-east-1",
1360
- "title": "Incoming Job Queue (Async & scheduled jobs land here first)",
1348
+ "title": "Incoming Job Queue Counts",
1361
1349
  "period": 60,
1362
1350
  "stat": "Sum",
1363
1351
  "setPeriodToTimeRange": true,
@@ -1365,21 +1353,25 @@ Resources:
1365
1353
  }
1366
1354
  },
1367
1355
  {
1368
- "height": 6,
1369
- "width": 9,
1356
+ "height": 3,
1357
+ "width": 4,
1370
1358
  "y": 63,
1371
- "x": 9,
1359
+ "x": 0,
1372
1360
  "type": "metric",
1373
1361
  "properties": {
1374
1362
  "period": 60,
1375
1363
  "metrics": [
1376
- [ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "stat": "p60" } ],
1377
- [ "...", { "stat": "p70" } ],
1378
- [ "...", { "stat": "p80" } ],
1379
- [ "...", { "stat": "p90" } ]
1364
+ [ "AWS/Lambda", "Errors", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "id": "errors", "stat": "Sum", "color": "#d13212" } ],
1365
+ [ ".", "Invocations", ".", ".", { "id": "invocations", "stat": "Sum", "visible": false } ],
1366
+ [ { "expression": "100 - 100 * errors / MAX([errors, invocations])", "label": "Success rate (%)", "id": "availability", "yAxis": "right", "region": "us-east-1" } ]
1380
1367
  ],
1381
1368
  "region": "us-east-1",
1382
- "title": "Incoming Job Handler Duration in Milliseconds",
1369
+ "title": "Incoming Job Handler Error count and success rate (%)",
1370
+ "yAxis": {
1371
+ "right": {
1372
+ "max": 100
1373
+ }
1374
+ },
1383
1375
  "view": "timeSeries",
1384
1376
  "stacked": false,
1385
1377
  "liveData": true
@@ -1387,67 +1379,90 @@ Resources:
1387
1379
  },
1388
1380
  {
1389
1381
  "height": 3,
1390
- "width": 6,
1382
+ "width": 5,
1391
1383
  "y": 63,
1392
- "x": 18,
1384
+ "x": 4,
1393
1385
  "type": "metric",
1394
1386
  "properties": {
1395
1387
  "period": 60,
1396
1388
  "metrics": [
1397
- [ "AWS/Lambda", "Errors", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "id": "errors", "stat": "Sum", "color": "#d13212" } ],
1398
- [ ".", "Invocations", ".", ".", { "id": "invocations", "stat": "Sum", "visible": false } ],
1399
- [ { "expression": "100 - 100 * errors / MAX([errors, invocations])", "label": "Success rate (%)", "id": "availability", "yAxis": "right", "region": "us-east-1" } ]
1389
+ [ "AWS/Lambda", "ConcurrentExecutions", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "stat": "Maximum" } ]
1400
1390
  ],
1401
1391
  "region": "us-east-1",
1402
- "title": "Incoming Job Handler Error count and success rate (%)",
1403
- "yAxis": {
1404
- "right": {
1405
- "max": 100
1406
- }
1407
- },
1392
+ "title": "Incoming Job Handler Concurrent Executions",
1408
1393
  "view": "timeSeries",
1409
1394
  "stacked": false,
1410
1395
  "liveData": true
1411
1396
  }
1412
1397
  },
1413
-
1414
-
1398
+
1415
1399
  {
1416
- "height": 3,
1417
- "width": 6,
1418
- "y": 66,
1419
- "x": 18,
1400
+ "x": 9,
1401
+ "y": 59,
1402
+ "width": 10,
1403
+ "height": 7,
1420
1404
  "type": "metric",
1421
1405
  "properties": {
1422
1406
  "period": 60,
1423
1407
  "metrics": [
1424
- [ "AWS/Lambda", "ConcurrentExecutions", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "stat": "Maximum" } ]
1408
+ [ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "stat": "p20" } ],
1409
+ [ "...", { "stat": "p50" } ],
1410
+ [ "...", { "stat": "p80" } ],
1411
+ [ "...", { "stat": "p90" } ]
1425
1412
  ],
1426
1413
  "region": "us-east-1",
1427
- "title": "Incoming Job Handler Concurrent Executions",
1414
+ "title": "Incoming Job Handler Duration in Milliseconds",
1428
1415
  "view": "timeSeries",
1429
1416
  "stacked": false,
1430
1417
  "liveData": true
1431
1418
  }
1432
1419
  },
1420
+ {
1421
+ "type": "log",
1422
+ "height": 4,
1423
+ "width": 5,
1424
+ "y": 59,
1425
+ "x": 19,
1426
+ "properties": {
1427
+ "query": "SOURCE '/aws/lambda/${self:custom.funktor.IncomingJobHandlerName}' | fields @initDuration\n| filter ispresent(@initDuration)\n| stats pct(@initDuration, 5) as p5,\n\n\n\n pct(@initDuration, 50) as p50,\n\n\n\n pct(@initDuration, 95) as p95,\n\n\n\n pct(@initDuration, 99) as p99\n\n\n\n by bin(20m)\n",
1428
+ "region": "us-east-1",
1429
+ "stacked": false,
1430
+ "view": "timeSeries",
1431
+ "title": "Incoming Job Handler Init Duration"
1432
+ }
1433
+ },
1434
+ {
1435
+ "height": 3,
1436
+ "width": 5,
1437
+ "y": 63,
1438
+ "x": 19,
1439
+ "type": "log",
1440
+ "properties": {
1441
+ "query": "SOURCE '/aws/lambda/${self:custom.funktor.IncomingJobHandlerName}' | filter @type=\"REPORT\"\n| stats max(@memorySize) as provisioned,\navg(@maxMemoryUsed) as avg_used,\nmax(@maxMemoryUsed) as max_used by bin(60s)",
1442
+ "region": "us-east-1",
1443
+ "stacked": false,
1444
+ "title": "IncomingJobHandler Memory",
1445
+ "view": "timeSeries"
1446
+ }
1447
+ },
1448
+
1433
1449
 
1434
1450
 
1435
1451
 
1436
-
1437
1452
  {
1438
1453
  "height": 3,
1439
1454
  "width": 6,
1440
- "y": 69,
1455
+ "y": 66,
1441
1456
  "x": 0,
1442
1457
  "type": "text",
1443
1458
  "properties": {
1444
- "markdown": "\n# Default Queue\n"
1459
+ "markdown": "\n# Default Queue\n Async jobs land here immediately, scheduled jobs land here in the minute before they're scheduled."
1445
1460
  }
1446
1461
  },
1447
1462
  {
1448
1463
  "height": 3,
1449
1464
  "width": 3,
1450
- "y": 69,
1465
+ "y": 66,
1451
1466
  "x": 6,
1452
1467
  "type": "metric",
1453
1468
  "properties": {
@@ -1466,30 +1481,32 @@ Resources:
1466
1481
  {
1467
1482
  "height": 3,
1468
1483
  "width": 15,
1469
- "y": 69,
1484
+ "y": 66,
1470
1485
  "x": 9,
1471
1486
  "type": "metric",
1472
1487
  "properties": {
1473
1488
  "metrics": [
1474
1489
  [ "AWS/Lambda", "Duration", "FunctionName",
1475
1490
  "${self:custom.funktor.DefaultQueueHandlerName}", "Resource",
1476
- "${self:custom.funktor.DefaultQueueHandlerName}", { "label": "p60" } ],
1477
- [ "...", { "label": "p70", "stat": "p70" } ],
1491
+ "${self:custom.funktor.DefaultQueueHandlerName}", { "label": "p20" } ],
1492
+ [ "...", { "label": "p50", "stat": "p50" } ],
1478
1493
  [ "...", { "label": "p80", "stat": "p80" } ],
1479
1494
  [ "...", { "label": "p90", "stat": "p90" } ]
1480
1495
  ],
1481
1496
  "view": "singleValue",
1482
1497
  "region": "us-east-1",
1483
- "stat": "p60",
1498
+ "stat": "p20",
1484
1499
  "period": 60,
1485
1500
  "sparkline": true,
1486
1501
  "title": "Handler Duration"
1487
1502
  }
1488
1503
  },
1504
+
1505
+
1489
1506
  {
1490
- "height": 6,
1507
+ "height": 4,
1491
1508
  "width": 9,
1492
- "y": 72,
1509
+ "y": 69,
1493
1510
  "x": 0,
1494
1511
  "type": "metric",
1495
1512
  "properties": {
@@ -1510,38 +1527,17 @@ Resources:
1510
1527
  "view": "timeSeries",
1511
1528
  "stacked": false,
1512
1529
  "region": "us-east-1",
1513
- "title": "Default Queue (Async jobs go here immediately, scheduled jobs land here in the minute before they're scheduled)",
1530
+ "title": "Default Queue Counts",
1514
1531
  "period": 60,
1515
1532
  "stat": "Sum",
1516
1533
  "liveData": true
1517
1534
  }
1518
1535
  },
1519
- {
1520
- "height": 6,
1521
- "width": 9,
1522
- "y": 72,
1523
- "x": 9,
1524
- "type": "metric",
1525
- "properties": {
1526
- "period": 60,
1527
- "metrics": [
1528
- [ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.DefaultQueueHandlerName}", { "stat": "p60" } ],
1529
- [ "...", { "stat": "p70" } ],
1530
- [ "...", { "stat": "p80" } ],
1531
- [ "...", { "stat": "p90" } ]
1532
- ],
1533
- "region": "us-east-1",
1534
- "title": "Default Queue Handler Duration in Milliseconds",
1535
- "view": "timeSeries",
1536
- "stacked": false,
1537
- "liveData": true
1538
- }
1539
- },
1540
1536
  {
1541
1537
  "height": 3,
1542
- "width": 6,
1543
- "y": 72,
1544
- "x": 18,
1538
+ "width": 4,
1539
+ "y": 73,
1540
+ "x": 0,
1545
1541
  "type": "metric",
1546
1542
  "properties": {
1547
1543
  "period": 60,
@@ -1565,9 +1561,9 @@ Resources:
1565
1561
  },
1566
1562
  {
1567
1563
  "height": 3,
1568
- "width": 6,
1569
- "y": 75,
1570
- "x": 18,
1564
+ "width": 5,
1565
+ "y": 73,
1566
+ "x": 4,
1571
1567
  "type": "metric",
1572
1568
  "properties": {
1573
1569
  "period": 60,
@@ -1583,21 +1579,70 @@ Resources:
1583
1579
  }
1584
1580
  },
1585
1581
 
1582
+ {
1583
+ "x": 9,
1584
+ "y": 69,
1585
+ "width": 10,
1586
+ "height": 7,
1587
+ "type": "metric",
1588
+ "properties": {
1589
+ "period": 60,
1590
+ "metrics": [
1591
+ [ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.DefaultQueueHandlerName}", { "stat": "p20" } ],
1592
+ [ "...", { "stat": "p50" } ],
1593
+ [ "...", { "stat": "p80" } ],
1594
+ [ "...", { "stat": "p90" } ]
1595
+ ],
1596
+ "region": "us-east-1",
1597
+ "title": "Default Queue Handler Duration in Milliseconds",
1598
+ "view": "timeSeries",
1599
+ "stacked": false,
1600
+ "liveData": true
1601
+ }
1602
+ },
1603
+ {
1604
+ "type": "log",
1605
+ "height": 4,
1606
+ "width": 5,
1607
+ "y": 69,
1608
+ "x": 19,
1609
+ "properties": {
1610
+ "query": "SOURCE '/aws/lambda/${self:custom.funktor.DefaultQueueHandlerName}' | fields @initDuration\n| filter ispresent(@initDuration)\n| stats pct(@initDuration, 5) as p5,\n\n\n\n pct(@initDuration, 50) as p50,\n\n\n\n pct(@initDuration, 95) as p95,\n\n\n\n pct(@initDuration, 99) as p99\n\n\n\n by bin(20m)\n",
1611
+ "region": "us-east-1",
1612
+ "stacked": false,
1613
+ "view": "timeSeries",
1614
+ "title": "Default Handler Init Duration"
1615
+ }
1616
+ },
1617
+ {
1618
+ "height": 3,
1619
+ "width": 5,
1620
+ "y": 73,
1621
+ "x": 19,
1622
+ "type": "log",
1623
+ "properties": {
1624
+ "query": "SOURCE '/aws/lambda/${self:custom.funktor.DefaultQueueHandlerName}' | filter @type=\"REPORT\"\n| stats max(@memorySize) as provisioned,\navg(@maxMemoryUsed) as avg_used,\nmax(@maxMemoryUsed) as max_used by bin(60s)",
1625
+ "region": "us-east-1",
1626
+ "stacked": false,
1627
+ "title": "Default Handler Memory",
1628
+ "view": "timeSeries"
1629
+ }
1630
+ },
1586
1631
 
1587
1632
  {
1588
1633
  "height": 3,
1589
1634
  "width": 6,
1590
- "y": 78,
1635
+ "y": 76,
1591
1636
  "x": 0,
1592
1637
  "type": "text",
1593
1638
  "properties": {
1594
- "markdown": "\n# LowConcurrency Queue\n"
1639
+ "markdown": "\n# LowConcurrency Queue\n Async jobs land here immediately, scheduled jobs land here in the minute before they're scheduled."
1595
1640
  }
1596
1641
  },
1597
1642
  {
1598
1643
  "height": 3,
1599
1644
  "width": 3,
1600
- "y": 78,
1645
+ "y": 76,
1601
1646
  "x": 6,
1602
1647
  "type": "metric",
1603
1648
  "properties": {
@@ -1616,30 +1661,32 @@ Resources:
1616
1661
  {
1617
1662
  "height": 3,
1618
1663
  "width": 15,
1619
- "y": 78,
1664
+ "y": 76,
1620
1665
  "x": 9,
1621
1666
  "type": "metric",
1622
1667
  "properties": {
1623
1668
  "metrics": [
1624
1669
  [ "AWS/Lambda", "Duration", "FunctionName",
1625
1670
  "${self:custom.funktor.LowConcurrencyQueueHandlerName}", "Resource",
1626
- "${self:custom.funktor.LowConcurrencyQueueHandlerName}", { "label": "p60" } ],
1627
- [ "...", { "label": "p70", "stat": "p70" } ],
1671
+ "${self:custom.funktor.LowConcurrencyQueueHandlerName}", { "label": "p20" } ],
1672
+ [ "...", { "label": "p50", "stat": "p50" } ],
1628
1673
  [ "...", { "label": "p80", "stat": "p80" } ],
1629
1674
  [ "...", { "label": "p90", "stat": "p90" } ]
1630
1675
  ],
1631
1676
  "view": "singleValue",
1632
1677
  "region": "us-east-1",
1633
- "stat": "p60",
1678
+ "stat": "p20",
1634
1679
  "period": 60,
1635
1680
  "sparkline": true,
1636
1681
  "title": "Handler Duration"
1637
1682
  }
1638
1683
  },
1684
+
1685
+
1639
1686
  {
1640
- "height": 6,
1687
+ "height": 4,
1641
1688
  "width": 9,
1642
- "y": 81,
1689
+ "y": 79,
1643
1690
  "x": 0,
1644
1691
  "type": "metric",
1645
1692
  "properties": {
@@ -1660,38 +1707,17 @@ Resources:
1660
1707
  "view": "timeSeries",
1661
1708
  "stacked": false,
1662
1709
  "region": "us-east-1",
1663
- "title": "LowConcurrency Queue (Async jobs go here immediately, scheduled jobs land here in the minute before they're scheduled)",
1710
+ "title": "LowConcurrency Queue Counts",
1664
1711
  "period": 60,
1665
1712
  "stat": "Sum",
1666
1713
  "liveData": true
1667
1714
  }
1668
1715
  },
1669
- {
1670
- "height": 6,
1671
- "width": 9,
1672
- "y": 81,
1673
- "x": 9,
1674
- "type": "metric",
1675
- "properties": {
1676
- "period": 60,
1677
- "metrics": [
1678
- [ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.LowConcurrencyQueueHandlerName}", { "stat": "p60" } ],
1679
- [ "...", { "stat": "p70" } ],
1680
- [ "...", { "stat": "p80" } ],
1681
- [ "...", { "stat": "p90" } ]
1682
- ],
1683
- "region": "us-east-1",
1684
- "title": "LowConcurrency Queue Handler Duration in Milliseconds",
1685
- "view": "timeSeries",
1686
- "stacked": false,
1687
- "liveData": true
1688
- }
1689
- },
1690
1716
  {
1691
1717
  "height": 3,
1692
- "width": 6,
1693
- "y": 81,
1694
- "x": 18,
1718
+ "width": 4,
1719
+ "y": 83,
1720
+ "x": 0,
1695
1721
  "type": "metric",
1696
1722
  "properties": {
1697
1723
  "period": 60,
@@ -1715,9 +1741,9 @@ Resources:
1715
1741
  },
1716
1742
  {
1717
1743
  "height": 3,
1718
- "width": 6,
1719
- "y": 84,
1720
- "x": 18,
1744
+ "width": 5,
1745
+ "y": 83,
1746
+ "x": 4,
1721
1747
  "type": "metric",
1722
1748
  "properties": {
1723
1749
  "period": 60,
@@ -1733,24 +1759,72 @@ Resources:
1733
1759
  }
1734
1760
  },
1735
1761
 
1762
+ {
1763
+ "x": 9,
1764
+ "y": 79,
1765
+ "width": 10,
1766
+ "height": 7,
1767
+ "type": "metric",
1768
+ "properties": {
1769
+ "period": 60,
1770
+ "metrics": [
1771
+ [ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.LowConcurrencyQueueHandlerName}", { "stat": "p20" } ],
1772
+ [ "...", { "stat": "p50" } ],
1773
+ [ "...", { "stat": "p80" } ],
1774
+ [ "...", { "stat": "p90" } ]
1775
+ ],
1776
+ "region": "us-east-1",
1777
+ "title": "LowConcurrency Queue Handler Duration in Milliseconds",
1778
+ "view": "timeSeries",
1779
+ "stacked": false,
1780
+ "liveData": true
1781
+ }
1782
+ },
1783
+ {
1784
+ "type": "log",
1785
+ "height": 4,
1786
+ "width": 5,
1787
+ "y": 79,
1788
+ "x": 19,
1789
+ "properties": {
1790
+ "query": "SOURCE '/aws/lambda/${self:custom.funktor.LowConcurrencyQueueHandlerName}' | fields @initDuration\n| filter ispresent(@initDuration)\n| stats pct(@initDuration, 5) as p5,\n\n\n\n pct(@initDuration, 50) as p50,\n\n\n\n pct(@initDuration, 95) as p95,\n\n\n\n pct(@initDuration, 99) as p99\n\n\n\n by bin(20m)\n",
1791
+ "region": "us-east-1",
1792
+ "stacked": false,
1793
+ "view": "timeSeries",
1794
+ "title": "LowConcurrency Handler Init Duration"
1795
+ }
1796
+ },
1797
+ {
1798
+ "height": 3,
1799
+ "width": 5,
1800
+ "y": 83,
1801
+ "x": 19,
1802
+ "type": "log",
1803
+ "properties": {
1804
+ "query": "SOURCE '/aws/lambda/${self:custom.funktor.LowConcurrencyQueueHandlerName}' | filter @type=\"REPORT\"\n| stats max(@memorySize) as provisioned,\navg(@maxMemoryUsed) as avg_used,\nmax(@maxMemoryUsed) as max_used by bin(60s)",
1805
+ "region": "us-east-1",
1806
+ "stacked": false,
1807
+ "title": "LowConcurrency Handler Memory",
1808
+ "view": "timeSeries"
1809
+ }
1810
+ },
1736
1811
 
1737
1812
 
1738
-
1739
1813
 
1740
1814
  {
1741
1815
  "height": 3,
1742
1816
  "width": 6,
1743
- "y": 87,
1817
+ "y": 86,
1744
1818
  "x": 0,
1745
1819
  "type": "text",
1746
1820
  "properties": {
1747
- "markdown": "\n# Delayed Jobs\n"
1821
+ "markdown": "\n# Delayed Job Activator\n This job fires every minute and pulls jobs scheduled in the next 90 seconds from the table and sends them to the Incoming Jobs Queue."
1748
1822
  }
1749
1823
  },
1750
1824
  {
1751
1825
  "height": 3,
1752
1826
  "width": 3,
1753
- "y": 87,
1827
+ "y": 86,
1754
1828
  "x": 6,
1755
1829
  "type": "metric",
1756
1830
  "properties": {
@@ -1768,33 +1842,35 @@ Resources:
1768
1842
  {
1769
1843
  "height": 3,
1770
1844
  "width": 15,
1771
- "y": 87,
1845
+ "y": 86,
1772
1846
  "x": 9,
1773
1847
  "type": "metric",
1774
1848
  "properties": {
1775
1849
  "metrics": [
1776
- [ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.JobActivatorName}", "Resource", "${self:custom.funktor.JobActivatorName}", { "label": "p60" } ],
1777
- [ "...", { "label": "p70", "stat": "p70" } ],
1850
+ [ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.JobActivatorName}", "Resource", "${self:custom.funktor.JobActivatorName}", { "label": "p20" } ],
1851
+ [ "...", { "label": "p50", "stat": "p50" } ],
1778
1852
  [ "...", { "label": "p80", "stat": "p80" } ],
1779
1853
  [ "...", { "label": "p90", "stat": "p90" } ]
1780
1854
  ],
1781
1855
  "view": "singleValue",
1782
1856
  "region": "us-east-1",
1783
- "stat": "p60",
1857
+ "stat": "p20",
1784
1858
  "period": 60,
1785
1859
  "sparkline": true,
1786
1860
  "title": "Handler Duration"
1787
1861
  }
1788
1862
  },
1863
+
1864
+
1865
+
1789
1866
 
1790
1867
 
1791
1868
 
1792
-
1793
1869
  {
1794
1870
  "height": 3,
1795
- "width": 6,
1796
- "y": 90,
1797
- "x": 18,
1871
+ "width": 4,
1872
+ "y": 93,
1873
+ "x": 0,
1798
1874
  "type": "metric",
1799
1875
  "properties": {
1800
1876
  "period": 60,
@@ -1804,7 +1880,7 @@ Resources:
1804
1880
  [ { "expression": "100 - 100 * errors / MAX([errors, invocations])", "label": "Success rate (%)", "id": "availability", "yAxis": "right", "region": "us-east-1" } ]
1805
1881
  ],
1806
1882
  "region": "us-east-1",
1807
- "title": "Delayed Job SchedulerError count and success rate (%)",
1883
+ "title": "Job Activator Error count and success rate (%)",
1808
1884
  "yAxis": {
1809
1885
  "right": {
1810
1886
  "max": 100
@@ -1817,29 +1893,26 @@ Resources:
1817
1893
  },
1818
1894
  {
1819
1895
  "height": 3,
1820
- "width": 9,
1821
- "y": 90,
1822
- "x": 9,
1896
+ "width": 5,
1897
+ "y": 93,
1898
+ "x": 4,
1823
1899
  "type": "metric",
1824
1900
  "properties": {
1825
1901
  "period": 60,
1826
1902
  "metrics": [
1827
- [ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.JobActivatorName}", { "stat": "p60" } ],
1828
- [ "...", { "stat": "p70" } ],
1829
- [ "...", { "stat": "p80" } ],
1830
- [ "...", { "stat": "p90" } ]
1903
+ [ "AWS/Lambda", "ConcurrentExecutions", "FunctionName", "${self:custom.funktor.JobActivatorName}", { "stat": "Maximum" } ]
1831
1904
  ],
1832
1905
  "region": "us-east-1",
1833
- "title": "Delayed Job Scheduler Duration",
1906
+ "title": "Job Activator Concurrent Executions",
1834
1907
  "view": "timeSeries",
1835
1908
  "stacked": false,
1836
1909
  "liveData": true
1837
1910
  }
1838
1911
  },
1839
1912
  {
1840
- "height": 3,
1913
+ "height": 4,
1841
1914
  "width": 9,
1842
- "y": 90,
1915
+ "y": 92,
1843
1916
  "x": 0,
1844
1917
  "type": "metric",
1845
1918
  "properties": {
@@ -1855,13 +1928,63 @@ Resources:
1855
1928
  "liveData": true
1856
1929
  }
1857
1930
  },
1931
+ {
1932
+ "x": 9,
1933
+ "y": 89,
1934
+ "width": 10,
1935
+ "height": 7,
1936
+ "type": "metric",
1937
+ "properties": {
1938
+ "period": 60,
1939
+ "metrics": [
1940
+ [ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.JobActivatorName}", { "stat": "p20" } ],
1941
+ [ "...", { "stat": "p50" } ],
1942
+ [ "...", { "stat": "p80" } ],
1943
+ [ "...", { "stat": "p90" } ]
1944
+ ],
1945
+ "region": "us-east-1",
1946
+ "title": "Job Activator Duration in Milliseconds",
1947
+ "view": "timeSeries",
1948
+ "stacked": false,
1949
+ "liveData": true
1950
+ }
1951
+ },
1952
+ {
1953
+ "type": "log",
1954
+ "height": 4,
1955
+ "width": 5,
1956
+ "y": 89,
1957
+ "x": 19,
1958
+ "properties": {
1959
+ "query": "SOURCE '/aws/lambda/${self:custom.funktor.JobActivatorName}' | fields @initDuration\n| filter ispresent(@initDuration)\n| stats pct(@initDuration, 5) as p5,\n\n\n\n pct(@initDuration, 50) as p50,\n\n\n\n pct(@initDuration, 95) as p95,\n\n\n\n pct(@initDuration, 99) as p99\n\n\n\n by bin(20m)\n",
1960
+ "region": "us-east-1",
1961
+ "stacked": false,
1962
+ "view": "timeSeries",
1963
+ "title": "Job Activator Init Duration"
1964
+ }
1965
+ },
1966
+ {
1967
+ "height": 3,
1968
+ "width": 5,
1969
+ "y": 93,
1970
+ "x": 19,
1971
+ "type": "log",
1972
+ "properties": {
1973
+ "query": "SOURCE '/aws/lambda/${self:custom.funktor.JobActivatorName}' | filter @type=\"REPORT\"\n| stats max(@memorySize) as provisioned,\navg(@maxMemoryUsed) as avg_used,\nmax(@maxMemoryUsed) as max_used by bin(60s)",
1974
+ "region": "us-east-1",
1975
+ "stacked": false,
1976
+ "title": "Job Activator Memory",
1977
+ "view": "timeSeries"
1978
+ }
1979
+ },
1980
+
1981
+
1858
1982
 
1859
1983
 
1860
-
1861
1984
  {
1862
1985
  "height": 3,
1863
1986
  "width": 9,
1864
- "y": 93,
1987
+ "y": 96,
1865
1988
  "x": 0,
1866
1989
  "type": "metric",
1867
1990
  "properties": {
@@ -1880,29 +2003,11 @@ Resources:
1880
2003
  "liveData": true
1881
2004
  }
1882
2005
  },
1883
- {
1884
- "height": 3,
1885
- "width": 6,
1886
- "y": 93,
1887
- "x": 18,
1888
- "type": "metric",
1889
- "properties": {
1890
- "period": 60,
1891
- "metrics": [
1892
- [ "AWS/Lambda", "ConcurrentExecutions", "FunctionName", "${self:custom.funktor.JobActivatorName}", { "stat": "Maximum" } ]
1893
- ],
1894
- "region": "us-east-1",
1895
- "title": "Delayd Job Schedule Concurrent executions",
1896
- "view": "timeSeries",
1897
- "stacked": false,
1898
- "liveData": true
1899
- }
1900
- },
1901
2006
  {
1902
2007
  "height": 3,
1903
2008
  "width": 9,
1904
- "y": 93,
1905
- "x": 9,
2009
+ "y": 99,
2010
+ "x": 0,
1906
2011
  "type": "metric",
1907
2012
  "properties": {
1908
2013
  "metrics": [
@@ -1921,14 +2026,11 @@ Resources:
1921
2026
  }
1922
2027
  },
1923
2028
 
1924
-
1925
-
1926
-
1927
2029
  {
1928
- "height": 3,
1929
- "width": 18,
2030
+ "height": 6,
2031
+ "width": 10,
1930
2032
  "y": 96,
1931
- "x": 0,
2033
+ "x": 9,
1932
2034
  "type": "metric",
1933
2035
  "properties": {
1934
2036
  "metrics": [
@@ -1937,6 +2039,7 @@ Resources:
1937
2039
  [ ".", "ThrottledRequests", ".", ".", ".", "PutItem", { "yAxis": "right", "visible": false } ],
1938
2040
  [ ".", "SuccessfulRequestLatency", ".", ".", ".", "DeleteItem" ],
1939
2041
  [ ".", "SuccessfulRequestLatency", ".", ".", ".", "UpdateItem" ],
2042
+ [ ".", "SuccessfulRequestLatency", ".", ".", ".", "GetItem" ],
1940
2043
  [ ".", "ThrottledRequests", ".", ".", ".", ".", { "yAxis": "right", "visible": false } ]
1941
2044
  ],
1942
2045
  "view": "timeSeries",
@@ -1948,16 +2051,19 @@ Resources:
1948
2051
  "liveData": true
1949
2052
  }
1950
2053
  },
2054
+
1951
2055
  {
1952
- "height": 3,
1953
- "width": 6,
2056
+ "height": 6,
2057
+ "width": 5,
1954
2058
  "y": 96,
1955
- "x": 18,
2059
+ "x": 19,
1956
2060
  "type": "metric",
1957
2061
  "properties": {
1958
2062
  "metrics": [
1959
2063
  [ "AWS/DynamoDB", "ThrottledRequests", "TableName", "${self:custom.funktor.JobsTableName}", "Operation", "DeleteItem" ],
1960
- [ "...", "PutItem" ]
2064
+ [ "...", "PutItem" ],
2065
+ [ "...", "UpdateItem" ],
2066
+ [ "...", "GetItem" ]
1961
2067
  ],
1962
2068
  "view": "timeSeries",
1963
2069
  "stacked": false,
@@ -1968,8 +2074,6 @@ Resources:
1968
2074
  "liveData": true
1969
2075
  }
1970
2076
  }
1971
-
1972
-
1973
2077
 
1974
2078
 
1975
2079
  ]