funktor 0.7.5 → 0.7.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +3 -3
  3. data/funktor-testapp/Dockerfile +63 -0
  4. data/funktor-testapp/app/services/job_flood.rb +1 -1
  5. data/funktor-testapp/funktor_config/boot.rb +3 -0
  6. data/funktor-testapp/funktor_config/environment.yml +10 -1
  7. data/funktor-testapp/funktor_config/function_definitions/default_queue_handler.yml +5 -1
  8. data/funktor-testapp/funktor_config/function_definitions/incoming_job_handler.yml +5 -1
  9. data/funktor-testapp/funktor_config/function_definitions/job_activator.yml +5 -1
  10. data/funktor-testapp/funktor_config/function_definitions/low_concurrency_queue_handler.yml +5 -1
  11. data/funktor-testapp/funktor_config/package.yml +6 -6
  12. data/funktor-testapp/funktor_config/resources/cloudwatch_dashboard.yml +645 -37
  13. data/funktor-testapp/funktor_config/ruby_layer.yml +1 -1
  14. data/funktor-testapp/serverless.yml +13 -3
  15. data/lib/funktor/activity_tracker.rb +1 -2
  16. data/lib/funktor/cli/init.rb +4 -0
  17. data/lib/funktor/cli/templates/Dockerfile +63 -0
  18. data/lib/funktor/cli/templates/funktor_config/environment.yml +10 -1
  19. data/lib/funktor/cli/templates/funktor_config/function_definitions/incoming_job_handler.yml +5 -1
  20. data/lib/funktor/cli/templates/funktor_config/function_definitions/job_activator.yml +5 -1
  21. data/lib/funktor/cli/templates/funktor_config/function_definitions/work_queue_handler.yml +5 -1
  22. data/lib/funktor/cli/templates/funktor_config/package.yml +6 -6
  23. data/lib/funktor/cli/templates/funktor_config/resources/cloudwatch_dashboard.yml +161 -0
  24. data/lib/funktor/cli/templates/funktor_config/ruby_layer.yml +1 -1
  25. data/lib/funktor/cli/templates/serverless.yml +13 -3
  26. data/lib/funktor/incoming_job_handler.rb +9 -7
  27. data/lib/funktor/job_activator.rb +33 -17
  28. data/lib/funktor/job_pusher.rb +1 -1
  29. data/lib/funktor/version.rb +1 -1
  30. data/lib/funktor/web/application.rb +1 -1
  31. data/lib/funktor/work_queue_handler.rb +21 -6
  32. data/lib/funktor.rb +20 -1
  33. metadata +4 -2
@@ -21,10 +21,609 @@ Resources:
21
21
  },
22
22
 
23
23
 
24
+
25
+ {
26
+ "height": 3,
27
+ "width": 6,
28
+ "y": 3,
29
+ "x": 0,
30
+ "type": "text",
31
+ "properties": {
32
+ "markdown": "\n# AuditWorker\n"
33
+ }
34
+ },
35
+ {
36
+ "height": 3,
37
+ "width": 6,
38
+ "y": 3,
39
+ "x": 6,
40
+ "type": "metric",
41
+ "properties": {
42
+ "metrics": [
43
+ [ "${self:custom.funktor.DashboardNamespace}", "processed", "WorkerClassName", "AuditWorker" ],
44
+ [ "${self:custom.funktor.DashboardNamespace}", "failed", "WorkerClassName", "AuditWorker", { "color": "#d62728" } ]
45
+ ],
46
+ "view": "singleValue",
47
+ "region": "us-east-1",
48
+ "stat": "Sum",
49
+ "period": 60,
50
+ "sparkline": true,
51
+ "title": "AuditWorker Jobs Per Minute"
52
+ }
53
+ },
54
+ {
55
+ "height": 3,
56
+ "width": 12,
57
+ "y": 3,
58
+ "x": 12,
59
+ "type": "metric",
60
+ "properties": {
61
+ "metrics": [
62
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "AuditWorker", { "label": "p10" } ],
63
+ [ "...", { "label": "p50", "stat": "p50" } ],
64
+ [ "...", { "label": "p99", "stat": "p99" } ],
65
+ [ "...", { "label": "Average", "stat": "Average" } ]
66
+ ],
67
+ "view": "singleValue",
68
+ "region": "us-east-1",
69
+ "stat": "p10",
70
+ "period": 60,
71
+ "sparkline": true,
72
+ "title": "AuditWorker Duration"
73
+ }
74
+ },
75
+
76
+
77
+
78
+
79
+
80
+ {
81
+ "height": 3,
82
+ "width": 6,
83
+ "y": 6,
84
+ "x": 0,
85
+ "type": "metric",
86
+ "properties": {
87
+ "metrics": [
88
+ [ "${self:custom.funktor.DashboardNamespace}", "processed", "WorkerClassName", "AuditWorker" ]
89
+ ],
90
+ "view": "timeSeries",
91
+ "stacked": false,
92
+ "region": "us-east-1",
93
+ "title": "AuditWorker Processed Jobs",
94
+ "period": 60,
95
+ "stat": "Sum"
96
+ }
97
+ },
98
+ {
99
+ "height": 3,
100
+ "width": 6,
101
+ "y": 9,
102
+ "x": 0,
103
+ "type": "metric",
104
+ "properties": {
105
+ "metrics": [
106
+ [ "${self:custom.funktor.DashboardNamespace}", "failed", "WorkerClassName", "AuditWorker", { "color": "#d62728" }]
107
+ ],
108
+ "view": "timeSeries",
109
+ "stacked": false,
110
+ "region": "us-east-1",
111
+ "title": "AuditWorker Failed Jobs",
112
+ "period": 60,
113
+ "stat": "Sum"
114
+ }
115
+ },
116
+ {
117
+ "height": 6,
118
+ "width": 12,
119
+ "y": 6,
120
+ "x": 6,
121
+ "type": "metric",
122
+ "properties": {
123
+ "metrics": [
124
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "AuditWorker" ],
125
+ [ "...", { "stat": "p80" } ],
126
+ [ "...", { "stat": "p70" } ],
127
+ [ "...", { "stat": "p60" } ]
128
+ ],
129
+ "view": "timeSeries",
130
+ "stacked": false,
131
+ "region": "us-east-1",
132
+ "stat": "p90",
133
+ "period": 60,
134
+ "title": "AuditWorker Duration Percentiles"
135
+ }
136
+ },
137
+ {
138
+ "height": 3,
139
+ "width": 6,
140
+ "y": 6,
141
+ "x": 18,
142
+ "type": "metric",
143
+ "properties": {
144
+ "metrics": [
145
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "AuditWorker" ]
146
+ ],
147
+ "view": "timeSeries",
148
+ "stacked": false,
149
+ "region": "us-east-1",
150
+ "stat": "Maximum",
151
+ "period": 60,
152
+ "title": "AuditWorker Max"
153
+ }
154
+ },
155
+ {
156
+ "height": 3,
157
+ "width": 6,
158
+ "y": 6,
159
+ "x": 18,
160
+ "type": "metric",
161
+ "properties": {
162
+ "metrics": [
163
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "AuditWorker" ]
164
+ ],
165
+ "view": "timeSeries",
166
+ "stacked": false,
167
+ "region": "us-east-1",
168
+ "stat": "Minimum",
169
+ "period": 60,
170
+ "title": "AuditWorker Min"
171
+ }
172
+ },
173
+
174
+ {
175
+ "height": 3,
176
+ "width": 6,
177
+ "y": 12,
178
+ "x": 0,
179
+ "type": "text",
180
+ "properties": {
181
+ "markdown": "\n# GreetingsWorker\n"
182
+ }
183
+ },
184
+ {
185
+ "height": 3,
186
+ "width": 6,
187
+ "y": 12,
188
+ "x": 6,
189
+ "type": "metric",
190
+ "properties": {
191
+ "metrics": [
192
+ [ "${self:custom.funktor.DashboardNamespace}", "processed", "WorkerClassName", "GreetingsWorker" ],
193
+ [ "${self:custom.funktor.DashboardNamespace}", "failed", "WorkerClassName", "GreetingsWorker", { "color": "#d62728" } ]
194
+ ],
195
+ "view": "singleValue",
196
+ "region": "us-east-1",
197
+ "stat": "Sum",
198
+ "period": 60,
199
+ "sparkline": true,
200
+ "title": "GreetingsWorker Jobs Per Minute"
201
+ }
202
+ },
203
+ {
204
+ "height": 3,
205
+ "width": 12,
206
+ "y": 12,
207
+ "x": 12,
208
+ "type": "metric",
209
+ "properties": {
210
+ "metrics": [
211
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "GreetingsWorker", { "label": "p10" } ],
212
+ [ "...", { "label": "p50", "stat": "p50" } ],
213
+ [ "...", { "label": "p99", "stat": "p99" } ],
214
+ [ "...", { "label": "Average", "stat": "Average" } ]
215
+ ],
216
+ "view": "singleValue",
217
+ "region": "us-east-1",
218
+ "stat": "p10",
219
+ "period": 60,
220
+ "sparkline": true,
221
+ "title": "GreetingsWorker Duration"
222
+ }
223
+ },
224
+
225
+
226
+
227
+
228
+
229
+ {
230
+ "height": 3,
231
+ "width": 6,
232
+ "y": 15,
233
+ "x": 0,
234
+ "type": "metric",
235
+ "properties": {
236
+ "metrics": [
237
+ [ "${self:custom.funktor.DashboardNamespace}", "processed", "WorkerClassName", "GreetingsWorker" ]
238
+ ],
239
+ "view": "timeSeries",
240
+ "stacked": false,
241
+ "region": "us-east-1",
242
+ "title": "GreetingsWorker Processed Jobs",
243
+ "period": 60,
244
+ "stat": "Sum"
245
+ }
246
+ },
247
+ {
248
+ "height": 3,
249
+ "width": 6,
250
+ "y": 18,
251
+ "x": 0,
252
+ "type": "metric",
253
+ "properties": {
254
+ "metrics": [
255
+ [ "${self:custom.funktor.DashboardNamespace}", "failed", "WorkerClassName", "GreetingsWorker", { "color": "#d62728" }]
256
+ ],
257
+ "view": "timeSeries",
258
+ "stacked": false,
259
+ "region": "us-east-1",
260
+ "title": "GreetingsWorker Failed Jobs",
261
+ "period": 60,
262
+ "stat": "Sum"
263
+ }
264
+ },
265
+ {
266
+ "height": 6,
267
+ "width": 12,
268
+ "y": 15,
269
+ "x": 6,
270
+ "type": "metric",
271
+ "properties": {
272
+ "metrics": [
273
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "GreetingsWorker" ],
274
+ [ "...", { "stat": "p80" } ],
275
+ [ "...", { "stat": "p70" } ],
276
+ [ "...", { "stat": "p60" } ]
277
+ ],
278
+ "view": "timeSeries",
279
+ "stacked": false,
280
+ "region": "us-east-1",
281
+ "stat": "p90",
282
+ "period": 60,
283
+ "title": "GreetingsWorker Duration Percentiles"
284
+ }
285
+ },
286
+ {
287
+ "height": 3,
288
+ "width": 6,
289
+ "y": 15,
290
+ "x": 18,
291
+ "type": "metric",
292
+ "properties": {
293
+ "metrics": [
294
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "GreetingsWorker" ]
295
+ ],
296
+ "view": "timeSeries",
297
+ "stacked": false,
298
+ "region": "us-east-1",
299
+ "stat": "Maximum",
300
+ "period": 60,
301
+ "title": "GreetingsWorker Max"
302
+ }
303
+ },
304
+ {
305
+ "height": 3,
306
+ "width": 6,
307
+ "y": 15,
308
+ "x": 18,
309
+ "type": "metric",
310
+ "properties": {
311
+ "metrics": [
312
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "GreetingsWorker" ]
313
+ ],
314
+ "view": "timeSeries",
315
+ "stacked": false,
316
+ "region": "us-east-1",
317
+ "stat": "Minimum",
318
+ "period": 60,
319
+ "title": "GreetingsWorker Min"
320
+ }
321
+ },
322
+
323
+ {
324
+ "height": 3,
325
+ "width": 6,
326
+ "y": 21,
327
+ "x": 0,
328
+ "type": "text",
329
+ "properties": {
330
+ "markdown": "\n# HelloWorker\n"
331
+ }
332
+ },
333
+ {
334
+ "height": 3,
335
+ "width": 6,
336
+ "y": 21,
337
+ "x": 6,
338
+ "type": "metric",
339
+ "properties": {
340
+ "metrics": [
341
+ [ "${self:custom.funktor.DashboardNamespace}", "processed", "WorkerClassName", "HelloWorker" ],
342
+ [ "${self:custom.funktor.DashboardNamespace}", "failed", "WorkerClassName", "HelloWorker", { "color": "#d62728" } ]
343
+ ],
344
+ "view": "singleValue",
345
+ "region": "us-east-1",
346
+ "stat": "Sum",
347
+ "period": 60,
348
+ "sparkline": true,
349
+ "title": "HelloWorker Jobs Per Minute"
350
+ }
351
+ },
352
+ {
353
+ "height": 3,
354
+ "width": 12,
355
+ "y": 21,
356
+ "x": 12,
357
+ "type": "metric",
358
+ "properties": {
359
+ "metrics": [
360
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "HelloWorker", { "label": "p10" } ],
361
+ [ "...", { "label": "p50", "stat": "p50" } ],
362
+ [ "...", { "label": "p99", "stat": "p99" } ],
363
+ [ "...", { "label": "Average", "stat": "Average" } ]
364
+ ],
365
+ "view": "singleValue",
366
+ "region": "us-east-1",
367
+ "stat": "p10",
368
+ "period": 60,
369
+ "sparkline": true,
370
+ "title": "HelloWorker Duration"
371
+ }
372
+ },
373
+
374
+
375
+
376
+
377
+
378
+ {
379
+ "height": 3,
380
+ "width": 6,
381
+ "y": 24,
382
+ "x": 0,
383
+ "type": "metric",
384
+ "properties": {
385
+ "metrics": [
386
+ [ "${self:custom.funktor.DashboardNamespace}", "processed", "WorkerClassName", "HelloWorker" ]
387
+ ],
388
+ "view": "timeSeries",
389
+ "stacked": false,
390
+ "region": "us-east-1",
391
+ "title": "HelloWorker Processed Jobs",
392
+ "period": 60,
393
+ "stat": "Sum"
394
+ }
395
+ },
396
+ {
397
+ "height": 3,
398
+ "width": 6,
399
+ "y": 27,
400
+ "x": 0,
401
+ "type": "metric",
402
+ "properties": {
403
+ "metrics": [
404
+ [ "${self:custom.funktor.DashboardNamespace}", "failed", "WorkerClassName", "HelloWorker", { "color": "#d62728" }]
405
+ ],
406
+ "view": "timeSeries",
407
+ "stacked": false,
408
+ "region": "us-east-1",
409
+ "title": "HelloWorker Failed Jobs",
410
+ "period": 60,
411
+ "stat": "Sum"
412
+ }
413
+ },
414
+ {
415
+ "height": 6,
416
+ "width": 12,
417
+ "y": 24,
418
+ "x": 6,
419
+ "type": "metric",
420
+ "properties": {
421
+ "metrics": [
422
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "HelloWorker" ],
423
+ [ "...", { "stat": "p80" } ],
424
+ [ "...", { "stat": "p70" } ],
425
+ [ "...", { "stat": "p60" } ]
426
+ ],
427
+ "view": "timeSeries",
428
+ "stacked": false,
429
+ "region": "us-east-1",
430
+ "stat": "p90",
431
+ "period": 60,
432
+ "title": "HelloWorker Duration Percentiles"
433
+ }
434
+ },
435
+ {
436
+ "height": 3,
437
+ "width": 6,
438
+ "y": 24,
439
+ "x": 18,
440
+ "type": "metric",
441
+ "properties": {
442
+ "metrics": [
443
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "HelloWorker" ]
444
+ ],
445
+ "view": "timeSeries",
446
+ "stacked": false,
447
+ "region": "us-east-1",
448
+ "stat": "Maximum",
449
+ "period": 60,
450
+ "title": "HelloWorker Max"
451
+ }
452
+ },
453
+ {
454
+ "height": 3,
455
+ "width": 6,
456
+ "y": 24,
457
+ "x": 18,
458
+ "type": "metric",
459
+ "properties": {
460
+ "metrics": [
461
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "HelloWorker" ]
462
+ ],
463
+ "view": "timeSeries",
464
+ "stacked": false,
465
+ "region": "us-east-1",
466
+ "stat": "Minimum",
467
+ "period": 60,
468
+ "title": "HelloWorker Min"
469
+ }
470
+ },
471
+
472
+ {
473
+ "height": 3,
474
+ "width": 6,
475
+ "y": 30,
476
+ "x": 0,
477
+ "type": "text",
478
+ "properties": {
479
+ "markdown": "\n# SingleThreadAuditWorker\n"
480
+ }
481
+ },
482
+ {
483
+ "height": 3,
484
+ "width": 6,
485
+ "y": 30,
486
+ "x": 6,
487
+ "type": "metric",
488
+ "properties": {
489
+ "metrics": [
490
+ [ "${self:custom.funktor.DashboardNamespace}", "processed", "WorkerClassName", "SingleThreadAuditWorker" ],
491
+ [ "${self:custom.funktor.DashboardNamespace}", "failed", "WorkerClassName", "SingleThreadAuditWorker", { "color": "#d62728" } ]
492
+ ],
493
+ "view": "singleValue",
494
+ "region": "us-east-1",
495
+ "stat": "Sum",
496
+ "period": 60,
497
+ "sparkline": true,
498
+ "title": "SingleThreadAuditWorker Jobs Per Minute"
499
+ }
500
+ },
501
+ {
502
+ "height": 3,
503
+ "width": 12,
504
+ "y": 30,
505
+ "x": 12,
506
+ "type": "metric",
507
+ "properties": {
508
+ "metrics": [
509
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "SingleThreadAuditWorker", { "label": "p10" } ],
510
+ [ "...", { "label": "p50", "stat": "p50" } ],
511
+ [ "...", { "label": "p99", "stat": "p99" } ],
512
+ [ "...", { "label": "Average", "stat": "Average" } ]
513
+ ],
514
+ "view": "singleValue",
515
+ "region": "us-east-1",
516
+ "stat": "p10",
517
+ "period": 60,
518
+ "sparkline": true,
519
+ "title": "SingleThreadAuditWorker Duration"
520
+ }
521
+ },
522
+
523
+
524
+
525
+
526
+
527
+ {
528
+ "height": 3,
529
+ "width": 6,
530
+ "y": 33,
531
+ "x": 0,
532
+ "type": "metric",
533
+ "properties": {
534
+ "metrics": [
535
+ [ "${self:custom.funktor.DashboardNamespace}", "processed", "WorkerClassName", "SingleThreadAuditWorker" ]
536
+ ],
537
+ "view": "timeSeries",
538
+ "stacked": false,
539
+ "region": "us-east-1",
540
+ "title": "SingleThreadAuditWorker Processed Jobs",
541
+ "period": 60,
542
+ "stat": "Sum"
543
+ }
544
+ },
545
+ {
546
+ "height": 3,
547
+ "width": 6,
548
+ "y": 36,
549
+ "x": 0,
550
+ "type": "metric",
551
+ "properties": {
552
+ "metrics": [
553
+ [ "${self:custom.funktor.DashboardNamespace}", "failed", "WorkerClassName", "SingleThreadAuditWorker", { "color": "#d62728" }]
554
+ ],
555
+ "view": "timeSeries",
556
+ "stacked": false,
557
+ "region": "us-east-1",
558
+ "title": "SingleThreadAuditWorker Failed Jobs",
559
+ "period": 60,
560
+ "stat": "Sum"
561
+ }
562
+ },
563
+ {
564
+ "height": 6,
565
+ "width": 12,
566
+ "y": 33,
567
+ "x": 6,
568
+ "type": "metric",
569
+ "properties": {
570
+ "metrics": [
571
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "SingleThreadAuditWorker" ],
572
+ [ "...", { "stat": "p80" } ],
573
+ [ "...", { "stat": "p70" } ],
574
+ [ "...", { "stat": "p60" } ]
575
+ ],
576
+ "view": "timeSeries",
577
+ "stacked": false,
578
+ "region": "us-east-1",
579
+ "stat": "p90",
580
+ "period": 60,
581
+ "title": "SingleThreadAuditWorker Duration Percentiles"
582
+ }
583
+ },
584
+ {
585
+ "height": 3,
586
+ "width": 6,
587
+ "y": 33,
588
+ "x": 18,
589
+ "type": "metric",
590
+ "properties": {
591
+ "metrics": [
592
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "SingleThreadAuditWorker" ]
593
+ ],
594
+ "view": "timeSeries",
595
+ "stacked": false,
596
+ "region": "us-east-1",
597
+ "stat": "Maximum",
598
+ "period": 60,
599
+ "title": "SingleThreadAuditWorker Max"
600
+ }
601
+ },
602
+ {
603
+ "height": 3,
604
+ "width": 6,
605
+ "y": 33,
606
+ "x": 18,
607
+ "type": "metric",
608
+ "properties": {
609
+ "metrics": [
610
+ [ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "SingleThreadAuditWorker" ]
611
+ ],
612
+ "view": "timeSeries",
613
+ "stacked": false,
614
+ "region": "us-east-1",
615
+ "stat": "Minimum",
616
+ "period": 60,
617
+ "title": "SingleThreadAuditWorker Min"
618
+ }
619
+ },
620
+
621
+
622
+
24
623
  {
25
624
  "height": 6,
26
625
  "width": 12,
27
- "y": 3,
626
+ "y": 39,
28
627
  "x": 12,
29
628
  "type": "metric",
30
629
  "properties": {
@@ -50,7 +649,7 @@ Resources:
50
649
  {
51
650
  "height": 6,
52
651
  "width": 12,
53
- "y": 3,
652
+ "y": 39,
54
653
  "x": 0,
55
654
  "type": "metric",
56
655
  "properties": {
@@ -73,10 +672,11 @@ Resources:
73
672
  }
74
673
  },
75
674
 
675
+
76
676
  {
77
677
  "height": 6,
78
678
  "width": 12,
79
- "y": 9,
679
+ "y": 45,
80
680
  "x": 12,
81
681
  "type": "metric",
82
682
  "properties": {
@@ -97,7 +697,7 @@ Resources:
97
697
  {
98
698
  "height": 6,
99
699
  "width": 12,
100
- "y": 9,
700
+ "y": 45,
101
701
  "x": 0,
102
702
  "type": "metric",
103
703
  "properties": {
@@ -121,7 +721,7 @@ Resources:
121
721
  {
122
722
  "height": 3,
123
723
  "width": 24,
124
- "y": 12,
724
+ "y": 48,
125
725
  "x": 0,
126
726
  "type": "text",
127
727
  "properties": {
@@ -134,7 +734,7 @@ Resources:
134
734
  {
135
735
  "height": 3,
136
736
  "width": 6,
137
- "y": 18,
737
+ "y": 54,
138
738
  "x": 0,
139
739
  "type": "text",
140
740
  "properties": {
@@ -144,7 +744,7 @@ Resources:
144
744
  {
145
745
  "height": 3,
146
746
  "width": 3,
147
- "y": 18,
747
+ "y": 54,
148
748
  "x": 6,
149
749
  "type": "metric",
150
750
  "properties": {
@@ -155,13 +755,14 @@ Resources:
155
755
  "region": "us-east-1",
156
756
  "stat": "Sum",
157
757
  "period": 60,
758
+ "sparkline": true,
158
759
  "title": "Messages Per Minute"
159
760
  }
160
761
  },
161
762
  {
162
763
  "height": 3,
163
764
  "width": 15,
164
- "y": 18,
765
+ "y": 54,
165
766
  "x": 9,
166
767
  "type": "metric",
167
768
  "properties": {
@@ -175,6 +776,7 @@ Resources:
175
776
  "region": "us-east-1",
176
777
  "stat": "p10",
177
778
  "period": 60,
779
+ "sparkline": true,
178
780
  "title": "Handler Duration"
179
781
  }
180
782
  },
@@ -184,7 +786,7 @@ Resources:
184
786
  {
185
787
  "height": 6,
186
788
  "width": 9,
187
- "y": 21,
789
+ "y": 57,
188
790
  "x": 0,
189
791
  "type": "metric",
190
792
  "properties": {
@@ -210,7 +812,7 @@ Resources:
210
812
  {
211
813
  "height": 6,
212
814
  "width": 9,
213
- "y": 21,
815
+ "y": 57,
214
816
  "x": 9,
215
817
  "type": "metric",
216
818
  "properties": {
@@ -230,7 +832,7 @@ Resources:
230
832
  {
231
833
  "height": 3,
232
834
  "width": 6,
233
- "y": 21,
835
+ "y": 57,
234
836
  "x": 18,
235
837
  "type": "metric",
236
838
  "properties": {
@@ -257,7 +859,7 @@ Resources:
257
859
  {
258
860
  "height": 3,
259
861
  "width": 6,
260
- "y": 24,
862
+ "y": 60,
261
863
  "x": 18,
262
864
  "type": "metric",
263
865
  "properties": {
@@ -279,7 +881,7 @@ Resources:
279
881
  {
280
882
  "height": 3,
281
883
  "width": 6,
282
- "y": 27,
884
+ "y": 63,
283
885
  "x": 0,
284
886
  "type": "text",
285
887
  "properties": {
@@ -289,7 +891,7 @@ Resources:
289
891
  {
290
892
  "height": 3,
291
893
  "width": 3,
292
- "y": 27,
894
+ "y": 63,
293
895
  "x": 6,
294
896
  "type": "metric",
295
897
  "properties": {
@@ -301,13 +903,14 @@ Resources:
301
903
  "region": "us-east-1",
302
904
  "stat": "Sum",
303
905
  "period": 60,
906
+ "sparkline": true,
304
907
  "title": "Messages Per Minute"
305
908
  }
306
909
  },
307
910
  {
308
911
  "height": 3,
309
912
  "width": 15,
310
- "y": 27,
913
+ "y": 63,
311
914
  "x": 9,
312
915
  "type": "metric",
313
916
  "properties": {
@@ -323,13 +926,14 @@ Resources:
323
926
  "region": "us-east-1",
324
927
  "stat": "p10",
325
928
  "period": 60,
929
+ "sparkline": true,
326
930
  "title": "Handler Duration"
327
931
  }
328
932
  },
329
933
  {
330
934
  "height": 6,
331
935
  "width": 9,
332
- "y": 30,
936
+ "y": 66,
333
937
  "x": 0,
334
938
  "type": "metric",
335
939
  "properties": {
@@ -359,7 +963,7 @@ Resources:
359
963
  {
360
964
  "height": 6,
361
965
  "width": 9,
362
- "y": 30,
966
+ "y": 66,
363
967
  "x": 9,
364
968
  "type": "metric",
365
969
  "properties": {
@@ -379,7 +983,7 @@ Resources:
379
983
  {
380
984
  "height": 3,
381
985
  "width": 6,
382
- "y": 30,
986
+ "y": 66,
383
987
  "x": 18,
384
988
  "type": "metric",
385
989
  "properties": {
@@ -405,7 +1009,7 @@ Resources:
405
1009
  {
406
1010
  "height": 3,
407
1011
  "width": 6,
408
- "y": 33,
1012
+ "y": 69,
409
1013
  "x": 18,
410
1014
  "type": "metric",
411
1015
  "properties": {
@@ -426,7 +1030,7 @@ Resources:
426
1030
  {
427
1031
  "height": 3,
428
1032
  "width": 6,
429
- "y": 36,
1033
+ "y": 72,
430
1034
  "x": 0,
431
1035
  "type": "text",
432
1036
  "properties": {
@@ -436,7 +1040,7 @@ Resources:
436
1040
  {
437
1041
  "height": 3,
438
1042
  "width": 3,
439
- "y": 36,
1043
+ "y": 72,
440
1044
  "x": 6,
441
1045
  "type": "metric",
442
1046
  "properties": {
@@ -448,13 +1052,14 @@ Resources:
448
1052
  "region": "us-east-1",
449
1053
  "stat": "Sum",
450
1054
  "period": 60,
1055
+ "sparkline": true,
451
1056
  "title": "Messages Per Minute"
452
1057
  }
453
1058
  },
454
1059
  {
455
1060
  "height": 3,
456
1061
  "width": 15,
457
- "y": 36,
1062
+ "y": 72,
458
1063
  "x": 9,
459
1064
  "type": "metric",
460
1065
  "properties": {
@@ -470,13 +1075,14 @@ Resources:
470
1075
  "region": "us-east-1",
471
1076
  "stat": "p10",
472
1077
  "period": 60,
1078
+ "sparkline": true,
473
1079
  "title": "Handler Duration"
474
1080
  }
475
1081
  },
476
1082
  {
477
1083
  "height": 6,
478
1084
  "width": 9,
479
- "y": 39,
1085
+ "y": 75,
480
1086
  "x": 0,
481
1087
  "type": "metric",
482
1088
  "properties": {
@@ -506,7 +1112,7 @@ Resources:
506
1112
  {
507
1113
  "height": 6,
508
1114
  "width": 9,
509
- "y": 39,
1115
+ "y": 75,
510
1116
  "x": 9,
511
1117
  "type": "metric",
512
1118
  "properties": {
@@ -526,7 +1132,7 @@ Resources:
526
1132
  {
527
1133
  "height": 3,
528
1134
  "width": 6,
529
- "y": 39,
1135
+ "y": 75,
530
1136
  "x": 18,
531
1137
  "type": "metric",
532
1138
  "properties": {
@@ -552,7 +1158,7 @@ Resources:
552
1158
  {
553
1159
  "height": 3,
554
1160
  "width": 6,
555
- "y": 42,
1161
+ "y": 78,
556
1162
  "x": 18,
557
1163
  "type": "metric",
558
1164
  "properties": {
@@ -576,7 +1182,7 @@ Resources:
576
1182
  {
577
1183
  "height": 3,
578
1184
  "width": 6,
579
- "y": 45,
1185
+ "y": 81,
580
1186
  "x": 0,
581
1187
  "type": "text",
582
1188
  "properties": {
@@ -586,7 +1192,7 @@ Resources:
586
1192
  {
587
1193
  "height": 3,
588
1194
  "width": 3,
589
- "y": 45,
1195
+ "y": 81,
590
1196
  "x": 6,
591
1197
  "type": "metric",
592
1198
  "properties": {
@@ -597,13 +1203,14 @@ Resources:
597
1203
  "region": "us-east-1",
598
1204
  "stat": "Average",
599
1205
  "period": 60,
1206
+ "sparkline": true,
600
1207
  "title": "Messages To Be Scheduled"
601
1208
  }
602
1209
  },
603
1210
  {
604
1211
  "height": 3,
605
1212
  "width": 15,
606
- "y": 45,
1213
+ "y": 81,
607
1214
  "x": 9,
608
1215
  "type": "metric",
609
1216
  "properties": {
@@ -617,6 +1224,7 @@ Resources:
617
1224
  "region": "us-east-1",
618
1225
  "stat": "p10",
619
1226
  "period": 60,
1227
+ "sparkline": true,
620
1228
  "title": "Handler Duration"
621
1229
  }
622
1230
  },
@@ -627,7 +1235,7 @@ Resources:
627
1235
  {
628
1236
  "height": 3,
629
1237
  "width": 6,
630
- "y": 48,
1238
+ "y": 84,
631
1239
  "x": 18,
632
1240
  "type": "metric",
633
1241
  "properties": {
@@ -652,7 +1260,7 @@ Resources:
652
1260
  {
653
1261
  "height": 3,
654
1262
  "width": 9,
655
- "y": 48,
1263
+ "y": 84,
656
1264
  "x": 9,
657
1265
  "type": "metric",
658
1266
  "properties": {
@@ -672,7 +1280,7 @@ Resources:
672
1280
  {
673
1281
  "height": 3,
674
1282
  "width": 9,
675
- "y": 48,
1283
+ "y": 84,
676
1284
  "x": 0,
677
1285
  "type": "metric",
678
1286
  "properties": {
@@ -694,7 +1302,7 @@ Resources:
694
1302
  {
695
1303
  "height": 3,
696
1304
  "width": 9,
697
- "y": 51,
1305
+ "y": 87,
698
1306
  "x": 0,
699
1307
  "type": "metric",
700
1308
  "properties": {
@@ -716,7 +1324,7 @@ Resources:
716
1324
  {
717
1325
  "height": 3,
718
1326
  "width": 6,
719
- "y": 51,
1327
+ "y": 87,
720
1328
  "x": 18,
721
1329
  "type": "metric",
722
1330
  "properties": {
@@ -734,7 +1342,7 @@ Resources:
734
1342
  {
735
1343
  "height": 3,
736
1344
  "width": 9,
737
- "y": 51,
1345
+ "y": 87,
738
1346
  "x": 9,
739
1347
  "type": "metric",
740
1348
  "properties": {
@@ -760,7 +1368,7 @@ Resources:
760
1368
  {
761
1369
  "height": 3,
762
1370
  "width": 18,
763
- "y": 54,
1371
+ "y": 90,
764
1372
  "x": 0,
765
1373
  "type": "metric",
766
1374
  "properties": {
@@ -784,7 +1392,7 @@ Resources:
784
1392
  {
785
1393
  "height": 3,
786
1394
  "width": 6,
787
- "y": 54,
1395
+ "y": 90,
788
1396
  "x": 18,
789
1397
  "type": "metric",
790
1398
  "properties": {