funktor 0.7.19 → 0.7.22
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/funktor-testapp/funktor_config/funktor.yml +4 -4
- data/funktor-testapp/funktor_config/resources/cloudwatch_dashboard.yml +324 -220
- data/lib/funktor/cli/templates/funktor_config/resources/cloudwatch_dashboard.yml +229 -146
- data/lib/funktor/version.rb +1 -1
- metadata +2 -2
|
@@ -21,7 +21,7 @@ Resources:
|
|
|
21
21
|
},
|
|
22
22
|
<% current_y += 3 %>
|
|
23
23
|
|
|
24
|
-
{ <% "
|
|
24
|
+
{ <% "Worker Overview" %>
|
|
25
25
|
"height": 1,
|
|
26
26
|
"width": 24,
|
|
27
27
|
"y": <%= current_y %>,
|
|
@@ -45,7 +45,7 @@ Resources:
|
|
|
45
45
|
"metrics": [
|
|
46
46
|
[ "${self:custom.funktor.DashboardNamespace}", "processed", "WorkerClassName", "<%= worker_name %>", { "color": "#2ca02c" } ],
|
|
47
47
|
[ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "<%= worker_name %>", { "label": "p90", "color": "#ff7f0e", "stat": "p90" } ],
|
|
48
|
-
[ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "<%= worker_name %>", { "label": "
|
|
48
|
+
[ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "<%= worker_name %>", { "label": "p50", "color": "#1f77b4", "stat": "p50" } ]
|
|
49
49
|
],
|
|
50
50
|
"view": "singleValue",
|
|
51
51
|
"region": "us-east-1",
|
|
@@ -134,14 +134,14 @@ Resources:
|
|
|
134
134
|
"type": "metric",
|
|
135
135
|
"properties": {
|
|
136
136
|
"metrics": [
|
|
137
|
-
[ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "<%= worker_name %>", { "label": "
|
|
137
|
+
[ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "<%= worker_name %>", { "label": "p20", "color": "#1f77b4" } ]
|
|
138
138
|
],
|
|
139
139
|
"view": "singleValue",
|
|
140
140
|
"region": "us-east-1",
|
|
141
|
-
"stat": "
|
|
141
|
+
"stat": "p20",
|
|
142
142
|
"period": 60,
|
|
143
143
|
"sparkline": true,
|
|
144
|
-
"title": "<%= worker_name %>
|
|
144
|
+
"title": "<%= worker_name %> p20"
|
|
145
145
|
}
|
|
146
146
|
},
|
|
147
147
|
{ <% "Worker Duration Percentiles" %>
|
|
@@ -152,14 +152,14 @@ Resources:
|
|
|
152
152
|
"type": "metric",
|
|
153
153
|
"properties": {
|
|
154
154
|
"metrics": [
|
|
155
|
-
[ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "<%= worker_name %>", { "label": "
|
|
155
|
+
[ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "<%= worker_name %>", { "label": "p50", "color": "#ff7f0e" } ]
|
|
156
156
|
],
|
|
157
157
|
"view": "singleValue",
|
|
158
158
|
"region": "us-east-1",
|
|
159
|
-
"stat": "
|
|
159
|
+
"stat": "p50",
|
|
160
160
|
"period": 60,
|
|
161
161
|
"sparkline": true,
|
|
162
|
-
"title": "<%= worker_name %>
|
|
162
|
+
"title": "<%= worker_name %> p50"
|
|
163
163
|
}
|
|
164
164
|
},
|
|
165
165
|
{ <% "Worker Duration Percentiles" %>
|
|
@@ -236,9 +236,6 @@ Resources:
|
|
|
236
236
|
},
|
|
237
237
|
<% current_y += 3 %>
|
|
238
238
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
239
|
{ <% "Processed Jobs By Worker" %>
|
|
243
240
|
"height": 3,
|
|
244
241
|
"width": 3,
|
|
@@ -291,13 +288,13 @@ Resources:
|
|
|
291
288
|
"metrics": [
|
|
292
289
|
[ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "<%= worker_name %>", { "stat": "p90", "color": "#d62728" } ],
|
|
293
290
|
[ "...", { "stat": "p80", "color": "#2ca02c" } ],
|
|
294
|
-
[ "...", { "stat": "
|
|
291
|
+
[ "...", { "stat": "p50", "color": "#ff7f0e" } ],
|
|
295
292
|
[ "...", { "color": "#1f77b4" } ]
|
|
296
293
|
],
|
|
297
294
|
"view": "timeSeries",
|
|
298
295
|
"stacked": false,
|
|
299
296
|
"region": "us-east-1",
|
|
300
|
-
"stat": "
|
|
297
|
+
"stat": "p20",
|
|
301
298
|
"period": 60,
|
|
302
299
|
"title": "<%= worker_name %> Duration Percentiles",
|
|
303
300
|
"legend": {
|
|
@@ -351,7 +348,7 @@ Resources:
|
|
|
351
348
|
<%- end -%>
|
|
352
349
|
|
|
353
350
|
{ <% "Funktor Behind the Scenes Banner" %>
|
|
354
|
-
"height":
|
|
351
|
+
"height": 2,
|
|
355
352
|
"width": 24,
|
|
356
353
|
"y": <%= current_y %>,
|
|
357
354
|
"x": 0,
|
|
@@ -360,9 +357,9 @@ Resources:
|
|
|
360
357
|
"markdown": "\n# Behind the scenes\n\n The stats below give some insight into the inner workings of the Funktor apparatus."
|
|
361
358
|
}
|
|
362
359
|
},
|
|
360
|
+
<% current_y += 2 %>
|
|
363
361
|
|
|
364
362
|
|
|
365
|
-
<% current_y += 6 %>
|
|
366
363
|
{ <% "Incoming Jobs" %>
|
|
367
364
|
"height": 3,
|
|
368
365
|
"width": 6,
|
|
@@ -370,7 +367,7 @@ Resources:
|
|
|
370
367
|
"x": 0,
|
|
371
368
|
"type": "text",
|
|
372
369
|
"properties": {
|
|
373
|
-
"markdown": "\n# Incoming Jobs\n"
|
|
370
|
+
"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."
|
|
374
371
|
}
|
|
375
372
|
},
|
|
376
373
|
{ <% "Incoming Job Queue Messages per minute" %>
|
|
@@ -399,24 +396,24 @@ Resources:
|
|
|
399
396
|
"type": "metric",
|
|
400
397
|
"properties": {
|
|
401
398
|
"metrics": [
|
|
402
|
-
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", "Resource", "${self:custom.funktor.IncomingJobHandlerName}", { "label": "
|
|
403
|
-
[ "...", { "label": "
|
|
399
|
+
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", "Resource", "${self:custom.funktor.IncomingJobHandlerName}", { "label": "p20" } ],
|
|
400
|
+
[ "...", { "label": "p50", "stat": "p50" } ],
|
|
404
401
|
[ "...", { "label": "p80", "stat": "p80" } ],
|
|
405
402
|
[ "...", { "label": "p90", "stat": "p90" } ]
|
|
406
403
|
],
|
|
407
404
|
"view": "singleValue",
|
|
408
405
|
"region": "us-east-1",
|
|
409
|
-
"stat": "
|
|
406
|
+
"stat": "p20",
|
|
410
407
|
"period": 60,
|
|
411
408
|
"sparkline": true,
|
|
412
409
|
"title": "Handler Duration Percentiles"
|
|
413
410
|
}
|
|
414
411
|
},
|
|
412
|
+
<% current_y += 3 %>
|
|
415
413
|
|
|
416
414
|
|
|
417
|
-
<%
|
|
418
|
-
|
|
419
|
-
"height": 6,
|
|
415
|
+
{ <% "Incoming Job Queue Counts" %>
|
|
416
|
+
"height": 4,
|
|
420
417
|
"width": 9,
|
|
421
418
|
"y": <%= current_y %>,
|
|
422
419
|
"x": 0,
|
|
@@ -434,39 +431,18 @@ Resources:
|
|
|
434
431
|
"view": "timeSeries",
|
|
435
432
|
"stacked": false,
|
|
436
433
|
"region": "us-east-1",
|
|
437
|
-
"title": "Incoming Job Queue
|
|
434
|
+
"title": "Incoming Job Queue Counts",
|
|
438
435
|
"period": 60,
|
|
439
436
|
"stat": "Sum",
|
|
440
437
|
"setPeriodToTimeRange": true,
|
|
441
438
|
"liveData": true
|
|
442
439
|
}
|
|
443
440
|
},
|
|
444
|
-
{ <% "Incoming Job Handler Duration in Milliseconds" %>
|
|
445
|
-
"height": 6,
|
|
446
|
-
"width": 9,
|
|
447
|
-
"y": <%= current_y %>,
|
|
448
|
-
"x": 9,
|
|
449
|
-
"type": "metric",
|
|
450
|
-
"properties": {
|
|
451
|
-
"period": 60,
|
|
452
|
-
"metrics": [
|
|
453
|
-
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "stat": "p60" } ],
|
|
454
|
-
[ "...", { "stat": "p70" } ],
|
|
455
|
-
[ "...", { "stat": "p80" } ],
|
|
456
|
-
[ "...", { "stat": "p90" } ]
|
|
457
|
-
],
|
|
458
|
-
"region": "us-east-1",
|
|
459
|
-
"title": "Incoming Job Handler Duration in Milliseconds",
|
|
460
|
-
"view": "timeSeries",
|
|
461
|
-
"stacked": false,
|
|
462
|
-
"liveData": true
|
|
463
|
-
}
|
|
464
|
-
},
|
|
465
441
|
{ <% "Incoming Job Handler Error count and success rate (%)" %>
|
|
466
442
|
"height": 3,
|
|
467
|
-
"width":
|
|
468
|
-
"y": <%= current_y %>,
|
|
469
|
-
"x":
|
|
443
|
+
"width": 4,
|
|
444
|
+
"y": <%= current_y + 4 %>,
|
|
445
|
+
"x": 0,
|
|
470
446
|
"type": "metric",
|
|
471
447
|
"properties": {
|
|
472
448
|
"period": 60,
|
|
@@ -487,13 +463,11 @@ Resources:
|
|
|
487
463
|
"liveData": true
|
|
488
464
|
}
|
|
489
465
|
},
|
|
490
|
-
|
|
491
|
-
|
|
492
466
|
{ <% "Incoming Job Handler Concurrent Executions" %>
|
|
493
467
|
"height": 3,
|
|
494
|
-
"width":
|
|
495
|
-
"y": <%= current_y +
|
|
496
|
-
"x":
|
|
468
|
+
"width": 5,
|
|
469
|
+
"y": <%= current_y + 4 %>,
|
|
470
|
+
"x": 4,
|
|
497
471
|
"type": "metric",
|
|
498
472
|
"properties": {
|
|
499
473
|
"period": 60,
|
|
@@ -507,10 +481,60 @@ Resources:
|
|
|
507
481
|
"liveData": true
|
|
508
482
|
}
|
|
509
483
|
},
|
|
484
|
+
|
|
485
|
+
{ <% "Incoming Job Handler Duration in Milliseconds" %>
|
|
486
|
+
"x": 9,
|
|
487
|
+
"y": <%= current_y %>,
|
|
488
|
+
"width": 10,
|
|
489
|
+
"height": 7,
|
|
490
|
+
"type": "metric",
|
|
491
|
+
"properties": {
|
|
492
|
+
"period": 60,
|
|
493
|
+
"metrics": [
|
|
494
|
+
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "stat": "p20" } ],
|
|
495
|
+
[ "...", { "stat": "p50" } ],
|
|
496
|
+
[ "...", { "stat": "p80" } ],
|
|
497
|
+
[ "...", { "stat": "p90" } ]
|
|
498
|
+
],
|
|
499
|
+
"region": "us-east-1",
|
|
500
|
+
"title": "Incoming Job Handler Duration in Milliseconds",
|
|
501
|
+
"view": "timeSeries",
|
|
502
|
+
"stacked": false,
|
|
503
|
+
"liveData": true
|
|
504
|
+
}
|
|
505
|
+
},
|
|
506
|
+
{ <% "Incoming Job Handler Init Duration" %>
|
|
507
|
+
"type": "log",
|
|
508
|
+
"height": 4,
|
|
509
|
+
"width": 5,
|
|
510
|
+
"y": <%= current_y %>,
|
|
511
|
+
"x": 19,
|
|
512
|
+
"properties": {
|
|
513
|
+
"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",
|
|
514
|
+
"region": "us-east-1",
|
|
515
|
+
"stacked": false,
|
|
516
|
+
"view": "timeSeries",
|
|
517
|
+
"title": "Incoming Job Handler Init Duration"
|
|
518
|
+
}
|
|
519
|
+
},
|
|
520
|
+
{ <% "Incoming Job Handler Memory" %>
|
|
521
|
+
"height": 3,
|
|
522
|
+
"width": 5,
|
|
523
|
+
"y": <%= current_y + 4 %>,
|
|
524
|
+
"x": 19,
|
|
525
|
+
"type": "log",
|
|
526
|
+
"properties": {
|
|
527
|
+
"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)",
|
|
528
|
+
"region": "us-east-1",
|
|
529
|
+
"stacked": false,
|
|
530
|
+
"title": "IncomingJobHandler Memory",
|
|
531
|
+
"view": "timeSeries"
|
|
532
|
+
}
|
|
533
|
+
},
|
|
534
|
+
<% current_y += 7 %>
|
|
510
535
|
|
|
511
536
|
|
|
512
537
|
|
|
513
|
-
<% current_y += 6 %>
|
|
514
538
|
<%- queue_names.each do |queue_name| -%>
|
|
515
539
|
{ <% "Active Jobs" %>
|
|
516
540
|
"height": 3,
|
|
@@ -519,7 +543,7 @@ Resources:
|
|
|
519
543
|
"x": 0,
|
|
520
544
|
"type": "text",
|
|
521
545
|
"properties": {
|
|
522
|
-
"markdown": "\n# <%= queue_name.camelize %> Queue\n"
|
|
546
|
+
"markdown": "\n# <%= queue_name.camelize %> Queue\n Async jobs land here immediately, scheduled jobs land here in the minute before they're scheduled."
|
|
523
547
|
}
|
|
524
548
|
},
|
|
525
549
|
{ <% "Active Jobs messages per minut" %>
|
|
@@ -551,23 +575,25 @@ Resources:
|
|
|
551
575
|
"metrics": [
|
|
552
576
|
[ "AWS/Lambda", "Duration", "FunctionName",
|
|
553
577
|
"${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", "Resource",
|
|
554
|
-
"${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", { "label": "
|
|
555
|
-
[ "...", { "label": "
|
|
578
|
+
"${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", { "label": "p20" } ],
|
|
579
|
+
[ "...", { "label": "p50", "stat": "p50" } ],
|
|
556
580
|
[ "...", { "label": "p80", "stat": "p80" } ],
|
|
557
581
|
[ "...", { "label": "p90", "stat": "p90" } ]
|
|
558
582
|
],
|
|
559
583
|
"view": "singleValue",
|
|
560
584
|
"region": "us-east-1",
|
|
561
|
-
"stat": "
|
|
585
|
+
"stat": "p20",
|
|
562
586
|
"period": 60,
|
|
563
587
|
"sparkline": true,
|
|
564
588
|
"title": "Handler Duration"
|
|
565
589
|
}
|
|
566
590
|
},
|
|
567
|
-
|
|
568
|
-
|
|
591
|
+
<% current_y += 3 %>
|
|
592
|
+
|
|
593
|
+
{ <% "Active Job Queue Counts" %>
|
|
594
|
+
"height": 4,
|
|
569
595
|
"width": 9,
|
|
570
|
-
"y": <%= current_y
|
|
596
|
+
"y": <%= current_y %>,
|
|
571
597
|
"x": 0,
|
|
572
598
|
"type": "metric",
|
|
573
599
|
"properties": {
|
|
@@ -588,38 +614,17 @@ Resources:
|
|
|
588
614
|
"view": "timeSeries",
|
|
589
615
|
"stacked": false,
|
|
590
616
|
"region": "us-east-1",
|
|
591
|
-
"title": "<%= queue_name.camelize %> Queue
|
|
617
|
+
"title": "<%= queue_name.camelize %> Queue Counts",
|
|
592
618
|
"period": 60,
|
|
593
619
|
"stat": "Sum",
|
|
594
620
|
"liveData": true
|
|
595
621
|
}
|
|
596
622
|
},
|
|
597
|
-
{ <% "Active Job Handler Duration in Milliseconds" %>
|
|
598
|
-
"height": 6,
|
|
599
|
-
"width": 9,
|
|
600
|
-
"y": <%= current_y + 3 %>,
|
|
601
|
-
"x": 9,
|
|
602
|
-
"type": "metric",
|
|
603
|
-
"properties": {
|
|
604
|
-
"period": 60,
|
|
605
|
-
"metrics": [
|
|
606
|
-
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", { "stat": "p60" } ],
|
|
607
|
-
[ "...", { "stat": "p70" } ],
|
|
608
|
-
[ "...", { "stat": "p80" } ],
|
|
609
|
-
[ "...", { "stat": "p90" } ]
|
|
610
|
-
],
|
|
611
|
-
"region": "us-east-1",
|
|
612
|
-
"title": "<%= queue_name.camelize %> Queue Handler Duration in Milliseconds",
|
|
613
|
-
"view": "timeSeries",
|
|
614
|
-
"stacked": false,
|
|
615
|
-
"liveData": true
|
|
616
|
-
}
|
|
617
|
-
},
|
|
618
623
|
{ <% "Active Job HandlerError count and success rate (%)" %>
|
|
619
624
|
"height": 3,
|
|
620
|
-
"width":
|
|
621
|
-
"y": <%= current_y +
|
|
622
|
-
"x":
|
|
625
|
+
"width": 4,
|
|
626
|
+
"y": <%= current_y + 4 %>,
|
|
627
|
+
"x": 0,
|
|
623
628
|
"type": "metric",
|
|
624
629
|
"properties": {
|
|
625
630
|
"period": 60,
|
|
@@ -643,9 +648,9 @@ Resources:
|
|
|
643
648
|
},
|
|
644
649
|
{ <% "Active Job Handler Concurrent executions" %>
|
|
645
650
|
"height": 3,
|
|
646
|
-
"width":
|
|
647
|
-
"y": <%= current_y +
|
|
648
|
-
"x":
|
|
651
|
+
"width": 5,
|
|
652
|
+
"y": <%= current_y + 4 %>,
|
|
653
|
+
"x": 4,
|
|
649
654
|
"type": "metric",
|
|
650
655
|
"properties": {
|
|
651
656
|
"period": 60,
|
|
@@ -661,19 +666,67 @@ Resources:
|
|
|
661
666
|
}
|
|
662
667
|
},
|
|
663
668
|
|
|
664
|
-
<%
|
|
669
|
+
{ <% "Active Job Handler Duration in Milliseconds" %>
|
|
670
|
+
"x": 9,
|
|
671
|
+
"y": <%= current_y %>,
|
|
672
|
+
"width": 10,
|
|
673
|
+
"height": 7,
|
|
674
|
+
"type": "metric",
|
|
675
|
+
"properties": {
|
|
676
|
+
"period": 60,
|
|
677
|
+
"metrics": [
|
|
678
|
+
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", { "stat": "p20" } ],
|
|
679
|
+
[ "...", { "stat": "p50" } ],
|
|
680
|
+
[ "...", { "stat": "p80" } ],
|
|
681
|
+
[ "...", { "stat": "p90" } ]
|
|
682
|
+
],
|
|
683
|
+
"region": "us-east-1",
|
|
684
|
+
"title": "<%= queue_name.camelize %> Queue Handler Duration in Milliseconds",
|
|
685
|
+
"view": "timeSeries",
|
|
686
|
+
"stacked": false,
|
|
687
|
+
"liveData": true
|
|
688
|
+
}
|
|
689
|
+
},
|
|
690
|
+
{ <% "Queue Handler Init Duration" %>
|
|
691
|
+
"type": "log",
|
|
692
|
+
"height": 4,
|
|
693
|
+
"width": 5,
|
|
694
|
+
"y": <%= current_y %>,
|
|
695
|
+
"x": 19,
|
|
696
|
+
"properties": {
|
|
697
|
+
"query": "SOURCE '/aws/lambda/${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}' | 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",
|
|
698
|
+
"region": "us-east-1",
|
|
699
|
+
"stacked": false,
|
|
700
|
+
"view": "timeSeries",
|
|
701
|
+
"title": "<%= queue_name.camelize %> Handler Init Duration"
|
|
702
|
+
}
|
|
703
|
+
},
|
|
704
|
+
{ <% "Queue Handler Memory" %>
|
|
705
|
+
"height": 3,
|
|
706
|
+
"width": 5,
|
|
707
|
+
"y": <%= current_y + 4 %>,
|
|
708
|
+
"x": 19,
|
|
709
|
+
"type": "log",
|
|
710
|
+
"properties": {
|
|
711
|
+
"query": "SOURCE '/aws/lambda/${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}' | filter @type=\"REPORT\"\n| stats max(@memorySize) as provisioned,\navg(@maxMemoryUsed) as avg_used,\nmax(@maxMemoryUsed) as max_used by bin(60s)",
|
|
712
|
+
"region": "us-east-1",
|
|
713
|
+
"stacked": false,
|
|
714
|
+
"title": "<%= queue_name.camelize %> Handler Memory",
|
|
715
|
+
"view": "timeSeries"
|
|
716
|
+
}
|
|
717
|
+
},
|
|
718
|
+
<% current_y += 7 %>
|
|
665
719
|
<%- end -%>
|
|
666
720
|
|
|
667
|
-
|
|
668
721
|
|
|
669
|
-
{ <% "Delayed
|
|
722
|
+
{ <% "Delayed Job Activator" %>
|
|
670
723
|
"height": 3,
|
|
671
724
|
"width": 6,
|
|
672
725
|
"y": <%= current_y %>,
|
|
673
726
|
"x": 0,
|
|
674
727
|
"type": "text",
|
|
675
728
|
"properties": {
|
|
676
|
-
"markdown": "\n# Delayed
|
|
729
|
+
"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."
|
|
677
730
|
}
|
|
678
731
|
},
|
|
679
732
|
{ <% "Messages To Be Scheduled" %>
|
|
@@ -702,28 +755,30 @@ Resources:
|
|
|
702
755
|
"type": "metric",
|
|
703
756
|
"properties": {
|
|
704
757
|
"metrics": [
|
|
705
|
-
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.JobActivatorName}", "Resource", "${self:custom.funktor.JobActivatorName}", { "label": "
|
|
706
|
-
[ "...", { "label": "
|
|
758
|
+
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.JobActivatorName}", "Resource", "${self:custom.funktor.JobActivatorName}", { "label": "p20" } ],
|
|
759
|
+
[ "...", { "label": "p50", "stat": "p50" } ],
|
|
707
760
|
[ "...", { "label": "p80", "stat": "p80" } ],
|
|
708
761
|
[ "...", { "label": "p90", "stat": "p90" } ]
|
|
709
762
|
],
|
|
710
763
|
"view": "singleValue",
|
|
711
764
|
"region": "us-east-1",
|
|
712
|
-
"stat": "
|
|
765
|
+
"stat": "p20",
|
|
713
766
|
"period": 60,
|
|
714
767
|
"sparkline": true,
|
|
715
768
|
"title": "Handler Duration"
|
|
716
769
|
}
|
|
717
770
|
},
|
|
771
|
+
<% current_y += 3 %>
|
|
718
772
|
|
|
719
773
|
|
|
720
774
|
|
|
721
|
-
|
|
722
|
-
|
|
775
|
+
|
|
776
|
+
|
|
777
|
+
{ <% "Job Activator Error count and success rate (%)" %>
|
|
723
778
|
"height": 3,
|
|
724
|
-
"width":
|
|
725
|
-
"y": <%= current_y %>,
|
|
726
|
-
"x":
|
|
779
|
+
"width": 4,
|
|
780
|
+
"y": <%= current_y + 4 %>,
|
|
781
|
+
"x": 0,
|
|
727
782
|
"type": "metric",
|
|
728
783
|
"properties": {
|
|
729
784
|
"period": 60,
|
|
@@ -733,7 +788,7 @@ Resources:
|
|
|
733
788
|
[ { "expression": "100 - 100 * errors / MAX([errors, invocations])", "label": "Success rate (%)", "id": "availability", "yAxis": "right", "region": "us-east-1" } ]
|
|
734
789
|
],
|
|
735
790
|
"region": "us-east-1",
|
|
736
|
-
"title": "
|
|
791
|
+
"title": "Job Activator Error count and success rate (%)",
|
|
737
792
|
"yAxis": {
|
|
738
793
|
"right": {
|
|
739
794
|
"max": 100
|
|
@@ -744,31 +799,28 @@ Resources:
|
|
|
744
799
|
"liveData": true
|
|
745
800
|
}
|
|
746
801
|
},
|
|
747
|
-
{ <% "
|
|
802
|
+
{ <% "Job Activator Concurrent Executions" %>
|
|
748
803
|
"height": 3,
|
|
749
|
-
"width":
|
|
750
|
-
"y": <%= current_y %>,
|
|
751
|
-
"x":
|
|
804
|
+
"width": 5,
|
|
805
|
+
"y": <%= current_y + 4 %>,
|
|
806
|
+
"x": 4,
|
|
752
807
|
"type": "metric",
|
|
753
808
|
"properties": {
|
|
754
809
|
"period": 60,
|
|
755
810
|
"metrics": [
|
|
756
|
-
[ "AWS/Lambda", "
|
|
757
|
-
[ "...", { "stat": "p70" } ],
|
|
758
|
-
[ "...", { "stat": "p80" } ],
|
|
759
|
-
[ "...", { "stat": "p90" } ]
|
|
811
|
+
[ "AWS/Lambda", "ConcurrentExecutions", "FunctionName", "${self:custom.funktor.JobActivatorName}", { "stat": "Maximum" } ]
|
|
760
812
|
],
|
|
761
813
|
"region": "us-east-1",
|
|
762
|
-
"title": "
|
|
814
|
+
"title": "Job Activator Concurrent Executions",
|
|
763
815
|
"view": "timeSeries",
|
|
764
816
|
"stacked": false,
|
|
765
817
|
"liveData": true
|
|
766
818
|
}
|
|
767
819
|
},
|
|
768
820
|
{ <% "Delayed Jobs To Be Executed In The Next 90 Seconds" %>
|
|
769
|
-
"height":
|
|
821
|
+
"height": 4,
|
|
770
822
|
"width": 9,
|
|
771
|
-
"y": <%= current_y %>,
|
|
823
|
+
"y": <%= current_y + 3 %>,
|
|
772
824
|
"x": 0,
|
|
773
825
|
"type": "metric",
|
|
774
826
|
"properties": {
|
|
@@ -784,9 +836,59 @@ Resources:
|
|
|
784
836
|
"liveData": true
|
|
785
837
|
}
|
|
786
838
|
},
|
|
839
|
+
{ <% "Job Activator Duration in Milliseconds" %>
|
|
840
|
+
"x": 9,
|
|
841
|
+
"y": <%= current_y %>,
|
|
842
|
+
"width": 10,
|
|
843
|
+
"height": 7,
|
|
844
|
+
"type": "metric",
|
|
845
|
+
"properties": {
|
|
846
|
+
"period": 60,
|
|
847
|
+
"metrics": [
|
|
848
|
+
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.JobActivatorName}", { "stat": "p20" } ],
|
|
849
|
+
[ "...", { "stat": "p50" } ],
|
|
850
|
+
[ "...", { "stat": "p80" } ],
|
|
851
|
+
[ "...", { "stat": "p90" } ]
|
|
852
|
+
],
|
|
853
|
+
"region": "us-east-1",
|
|
854
|
+
"title": "Job Activator Duration in Milliseconds",
|
|
855
|
+
"view": "timeSeries",
|
|
856
|
+
"stacked": false,
|
|
857
|
+
"liveData": true
|
|
858
|
+
}
|
|
859
|
+
},
|
|
860
|
+
{ <% "Job Activator Init Duration" %>
|
|
861
|
+
"type": "log",
|
|
862
|
+
"height": 4,
|
|
863
|
+
"width": 5,
|
|
864
|
+
"y": <%= current_y %>,
|
|
865
|
+
"x": 19,
|
|
866
|
+
"properties": {
|
|
867
|
+
"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",
|
|
868
|
+
"region": "us-east-1",
|
|
869
|
+
"stacked": false,
|
|
870
|
+
"view": "timeSeries",
|
|
871
|
+
"title": "Job Activator Init Duration"
|
|
872
|
+
}
|
|
873
|
+
},
|
|
874
|
+
{ <% "Job Activator Memory" %>
|
|
875
|
+
"height": 3,
|
|
876
|
+
"width": 5,
|
|
877
|
+
"y": <%= current_y + 4 %>,
|
|
878
|
+
"x": 19,
|
|
879
|
+
"type": "log",
|
|
880
|
+
"properties": {
|
|
881
|
+
"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)",
|
|
882
|
+
"region": "us-east-1",
|
|
883
|
+
"stacked": false,
|
|
884
|
+
"title": "Job Activator Memory",
|
|
885
|
+
"view": "timeSeries"
|
|
886
|
+
}
|
|
887
|
+
},
|
|
888
|
+
<% current_y += 7 %>
|
|
889
|
+
|
|
787
890
|
|
|
788
891
|
|
|
789
|
-
<% current_y += 3 %>
|
|
790
892
|
{ <% "Scheduled Job Table Read Capacity Units" %>
|
|
791
893
|
"height": 3,
|
|
792
894
|
"width": 9,
|
|
@@ -809,29 +911,11 @@ Resources:
|
|
|
809
911
|
"liveData": true
|
|
810
912
|
}
|
|
811
913
|
},
|
|
812
|
-
{ <% "Delayd Job Schedule Concurrent executions" %>
|
|
813
|
-
"height": 3,
|
|
814
|
-
"width": 6,
|
|
815
|
-
"y": <%= current_y %>,
|
|
816
|
-
"x": 18,
|
|
817
|
-
"type": "metric",
|
|
818
|
-
"properties": {
|
|
819
|
-
"period": 60,
|
|
820
|
-
"metrics": [
|
|
821
|
-
[ "AWS/Lambda", "ConcurrentExecutions", "FunctionName", "${self:custom.funktor.JobActivatorName}", { "stat": "Maximum" } ]
|
|
822
|
-
],
|
|
823
|
-
"region": "us-east-1",
|
|
824
|
-
"title": "Delayd Job Schedule Concurrent executions",
|
|
825
|
-
"view": "timeSeries",
|
|
826
|
-
"stacked": false,
|
|
827
|
-
"liveData": true
|
|
828
|
-
}
|
|
829
|
-
},
|
|
830
914
|
{ <% "Scheduled Job Table Write Capacity Units" %>
|
|
831
915
|
"height": 3,
|
|
832
916
|
"width": 9,
|
|
833
|
-
"y": <%= current_y %>,
|
|
834
|
-
"x":
|
|
917
|
+
"y": <%= current_y + 3 %>,
|
|
918
|
+
"x": 0,
|
|
835
919
|
"type": "metric",
|
|
836
920
|
"properties": {
|
|
837
921
|
"metrics": [
|
|
@@ -850,14 +934,11 @@ Resources:
|
|
|
850
934
|
}
|
|
851
935
|
},
|
|
852
936
|
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
<% current_y += 3 %>
|
|
856
937
|
{ <% "Scheduled Job Table Latency" %>
|
|
857
|
-
"height":
|
|
858
|
-
"width":
|
|
938
|
+
"height": 6,
|
|
939
|
+
"width": 10,
|
|
859
940
|
"y": <%= current_y %>,
|
|
860
|
-
"x":
|
|
941
|
+
"x": 9,
|
|
861
942
|
"type": "metric",
|
|
862
943
|
"properties": {
|
|
863
944
|
"metrics": [
|
|
@@ -866,6 +947,7 @@ Resources:
|
|
|
866
947
|
[ ".", "ThrottledRequests", ".", ".", ".", "PutItem", { "yAxis": "right", "visible": false } ],
|
|
867
948
|
[ ".", "SuccessfulRequestLatency", ".", ".", ".", "DeleteItem" ],
|
|
868
949
|
[ ".", "SuccessfulRequestLatency", ".", ".", ".", "UpdateItem" ],
|
|
950
|
+
[ ".", "SuccessfulRequestLatency", ".", ".", ".", "GetItem" ],
|
|
869
951
|
[ ".", "ThrottledRequests", ".", ".", ".", ".", { "yAxis": "right", "visible": false } ]
|
|
870
952
|
],
|
|
871
953
|
"view": "timeSeries",
|
|
@@ -877,16 +959,19 @@ Resources:
|
|
|
877
959
|
"liveData": true
|
|
878
960
|
}
|
|
879
961
|
},
|
|
962
|
+
|
|
880
963
|
{ <% "Scheduled Job Table Throttled Operations" %>
|
|
881
|
-
"height":
|
|
882
|
-
"width":
|
|
964
|
+
"height": 6,
|
|
965
|
+
"width": 5,
|
|
883
966
|
"y": <%= current_y %>,
|
|
884
|
-
"x":
|
|
967
|
+
"x": 19,
|
|
885
968
|
"type": "metric",
|
|
886
969
|
"properties": {
|
|
887
970
|
"metrics": [
|
|
888
971
|
[ "AWS/DynamoDB", "ThrottledRequests", "TableName", "${self:custom.funktor.JobsTableName}", "Operation", "DeleteItem" ],
|
|
889
|
-
[ "...", "PutItem" ]
|
|
972
|
+
[ "...", "PutItem" ],
|
|
973
|
+
[ "...", "UpdateItem" ],
|
|
974
|
+
[ "...", "GetItem" ]
|
|
890
975
|
],
|
|
891
976
|
"view": "timeSeries",
|
|
892
977
|
"stacked": false,
|
|
@@ -897,9 +982,7 @@ Resources:
|
|
|
897
982
|
"liveData": true
|
|
898
983
|
}
|
|
899
984
|
}
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
985
|
+
<% current_y += 6 %>
|
|
903
986
|
|
|
904
987
|
]
|
|
905
988
|
}
|