funktor 0.7.20 → 0.7.23
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/funktor-testapp/funktor_config/funktor.yml +4 -4
- data/funktor-testapp/funktor_config/resources/cloudwatch_dashboard.yml +329 -278
- data/lib/funktor/cli/templates/funktor_config/resources/cloudwatch_dashboard.yml +234 -191
- 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": 3,
|
415
|
+
{ <% "Incoming Job Queue Counts" %>
|
416
|
+
"height": 4,
|
420
417
|
"width": 9,
|
421
418
|
"y": <%= current_y %>,
|
422
419
|
"x": 0,
|
@@ -434,60 +431,26 @@ 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 Init Duration" %>
|
445
|
-
"type": "log",
|
446
|
-
"x": 0,
|
447
|
-
"y": <%= current_y + 3 %>,
|
448
|
-
"width": 9,
|
449
|
-
"height": 3,
|
450
|
-
"properties": {
|
451
|
-
"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(1h)\n",
|
452
|
-
"region": "us-east-1",
|
453
|
-
"stacked": false,
|
454
|
-
"view": "timeSeries",
|
455
|
-
"title": "Incoming Job Handler Init Duration"
|
456
|
-
}
|
457
|
-
},
|
458
|
-
{ <% "Incoming Job Handler Duration in Milliseconds" %>
|
459
|
-
"height": 6,
|
460
|
-
"width": 9,
|
461
|
-
"y": <%= current_y %>,
|
462
|
-
"x": 9,
|
463
|
-
"type": "metric",
|
464
|
-
"properties": {
|
465
|
-
"period": 60,
|
466
|
-
"metrics": [
|
467
|
-
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "stat": "p60" } ],
|
468
|
-
[ "...", { "stat": "p70" } ],
|
469
|
-
[ "...", { "stat": "p80" } ],
|
470
|
-
[ "...", { "stat": "p90" } ]
|
471
|
-
],
|
472
|
-
"region": "us-east-1",
|
473
|
-
"title": "Incoming Job Handler Duration in Milliseconds",
|
474
|
-
"view": "timeSeries",
|
475
|
-
"stacked": false,
|
476
|
-
"liveData": true
|
477
|
-
}
|
478
|
-
},
|
479
441
|
{ <% "Incoming Job Handler Error count and success rate (%)" %>
|
480
442
|
"height": 3,
|
481
|
-
"width":
|
482
|
-
"y": <%= current_y %>,
|
483
|
-
"x":
|
443
|
+
"width": 4,
|
444
|
+
"y": <%= current_y + 4 %>,
|
445
|
+
"x": 0,
|
484
446
|
"type": "metric",
|
485
447
|
"properties": {
|
486
448
|
"period": 60,
|
487
449
|
"metrics": [
|
488
450
|
[ "AWS/Lambda", "Errors", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "id": "errors", "stat": "Sum", "color": "#d13212" } ],
|
489
451
|
[ ".", "Invocations", ".", ".", { "id": "invocations", "stat": "Sum", "visible": false } ],
|
490
|
-
[ { "expression": "100 - 100 * errors / MAX([errors, invocations])", "label": "Success rate (%)", "id": "availability", "yAxis": "right", "region": "us-east-1" } ]
|
452
|
+
[ { "expression": "100 - 100 * errors / MAX([errors, invocations])", "label": "Success rate (%)", "id": "availability", "yAxis": "right", "region": "us-east-1" } ],
|
453
|
+
[ "AWS/Lambda", "Throttles", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "id": "throttles", "color": "#ff7f0e" } ]
|
491
454
|
],
|
492
455
|
"region": "us-east-1",
|
493
456
|
"title": "Incoming Job Handler Error count and success rate (%)",
|
@@ -501,13 +464,11 @@ Resources:
|
|
501
464
|
"liveData": true
|
502
465
|
}
|
503
466
|
},
|
504
|
-
|
505
|
-
|
506
467
|
{ <% "Incoming Job Handler Concurrent Executions" %>
|
507
468
|
"height": 3,
|
508
|
-
"width":
|
509
|
-
"y": <%= current_y +
|
510
|
-
"x":
|
469
|
+
"width": 5,
|
470
|
+
"y": <%= current_y + 4 %>,
|
471
|
+
"x": 4,
|
511
472
|
"type": "metric",
|
512
473
|
"properties": {
|
513
474
|
"period": 60,
|
@@ -521,9 +482,58 @@ Resources:
|
|
521
482
|
"liveData": true
|
522
483
|
}
|
523
484
|
},
|
524
|
-
|
485
|
+
|
486
|
+
{ <% "Incoming Job Handler Duration in Milliseconds" %>
|
487
|
+
"x": 9,
|
488
|
+
"y": <%= current_y %>,
|
489
|
+
"width": 10,
|
490
|
+
"height": 7,
|
491
|
+
"type": "metric",
|
492
|
+
"properties": {
|
493
|
+
"period": 60,
|
494
|
+
"metrics": [
|
495
|
+
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "stat": "p20" } ],
|
496
|
+
[ "...", { "stat": "p50" } ],
|
497
|
+
[ "...", { "stat": "p80" } ],
|
498
|
+
[ "...", { "stat": "p90" } ]
|
499
|
+
],
|
500
|
+
"region": "us-east-1",
|
501
|
+
"title": "Incoming Job Handler Duration in Milliseconds",
|
502
|
+
"view": "timeSeries",
|
503
|
+
"stacked": false,
|
504
|
+
"liveData": true
|
505
|
+
}
|
506
|
+
},
|
507
|
+
{ <% "Incoming Job Handler Init Duration" %>
|
508
|
+
"type": "log",
|
509
|
+
"height": 4,
|
510
|
+
"width": 5,
|
511
|
+
"y": <%= current_y %>,
|
512
|
+
"x": 19,
|
513
|
+
"properties": {
|
514
|
+
"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",
|
515
|
+
"region": "us-east-1",
|
516
|
+
"stacked": false,
|
517
|
+
"view": "timeSeries",
|
518
|
+
"title": "Incoming Job Handler Init Duration"
|
519
|
+
}
|
520
|
+
},
|
521
|
+
{ <% "Incoming Job Handler Memory" %>
|
522
|
+
"height": 3,
|
523
|
+
"width": 5,
|
524
|
+
"y": <%= current_y + 4 %>,
|
525
|
+
"x": 19,
|
526
|
+
"type": "log",
|
527
|
+
"properties": {
|
528
|
+
"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)",
|
529
|
+
"region": "us-east-1",
|
530
|
+
"stacked": false,
|
531
|
+
"title": "IncomingJobHandler Memory",
|
532
|
+
"view": "timeSeries"
|
533
|
+
}
|
534
|
+
},
|
535
|
+
<% current_y += 7 %>
|
525
536
|
|
526
|
-
|
527
537
|
|
528
538
|
|
529
539
|
<%- queue_names.each do |queue_name| -%>
|
@@ -534,7 +544,7 @@ Resources:
|
|
534
544
|
"x": 0,
|
535
545
|
"type": "text",
|
536
546
|
"properties": {
|
537
|
-
"markdown": "\n# <%= queue_name.camelize %> Queue\n"
|
547
|
+
"markdown": "\n# <%= queue_name.camelize %> Queue\n Async jobs land here immediately, scheduled jobs land here in the minute before they're scheduled."
|
538
548
|
}
|
539
549
|
},
|
540
550
|
{ <% "Active Jobs messages per minut" %>
|
@@ -566,23 +576,25 @@ Resources:
|
|
566
576
|
"metrics": [
|
567
577
|
[ "AWS/Lambda", "Duration", "FunctionName",
|
568
578
|
"${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", "Resource",
|
569
|
-
"${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", { "label": "
|
570
|
-
[ "...", { "label": "
|
579
|
+
"${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", { "label": "p20" } ],
|
580
|
+
[ "...", { "label": "p50", "stat": "p50" } ],
|
571
581
|
[ "...", { "label": "p80", "stat": "p80" } ],
|
572
582
|
[ "...", { "label": "p90", "stat": "p90" } ]
|
573
583
|
],
|
574
584
|
"view": "singleValue",
|
575
585
|
"region": "us-east-1",
|
576
|
-
"stat": "
|
586
|
+
"stat": "p20",
|
577
587
|
"period": 60,
|
578
588
|
"sparkline": true,
|
579
589
|
"title": "Handler Duration"
|
580
590
|
}
|
581
591
|
},
|
582
|
-
|
583
|
-
|
592
|
+
<% current_y += 3 %>
|
593
|
+
|
594
|
+
{ <% "Active Job Queue Counts" %>
|
595
|
+
"height": 4,
|
584
596
|
"width": 9,
|
585
|
-
"y": <%= current_y
|
597
|
+
"y": <%= current_y %>,
|
586
598
|
"x": 0,
|
587
599
|
"type": "metric",
|
588
600
|
"properties": {
|
@@ -603,52 +615,17 @@ Resources:
|
|
603
615
|
"view": "timeSeries",
|
604
616
|
"stacked": false,
|
605
617
|
"region": "us-east-1",
|
606
|
-
"title": "<%= queue_name.camelize %> Queue
|
618
|
+
"title": "<%= queue_name.camelize %> Queue Counts",
|
607
619
|
"period": 60,
|
608
620
|
"stat": "Sum",
|
609
621
|
"liveData": true
|
610
622
|
}
|
611
623
|
},
|
612
|
-
{ <% "Queue Handler Init Duration" %>
|
613
|
-
"type": "log",
|
614
|
-
"x": 0,
|
615
|
-
"y": <%= current_y + 3 %>,
|
616
|
-
"width": 9,
|
617
|
-
"height": 3,
|
618
|
-
"properties": {
|
619
|
-
"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(1h)\n",
|
620
|
-
"region": "us-east-1",
|
621
|
-
"stacked": false,
|
622
|
-
"view": "timeSeries",
|
623
|
-
"title": "Handler Init Duration"
|
624
|
-
}
|
625
|
-
},
|
626
|
-
{ <% "Active Job Handler Duration in Milliseconds" %>
|
627
|
-
"height": 6,
|
628
|
-
"width": 9,
|
629
|
-
"y": <%= current_y + 3 %>,
|
630
|
-
"x": 9,
|
631
|
-
"type": "metric",
|
632
|
-
"properties": {
|
633
|
-
"period": 60,
|
634
|
-
"metrics": [
|
635
|
-
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", { "stat": "p60" } ],
|
636
|
-
[ "...", { "stat": "p70" } ],
|
637
|
-
[ "...", { "stat": "p80" } ],
|
638
|
-
[ "...", { "stat": "p90" } ]
|
639
|
-
],
|
640
|
-
"region": "us-east-1",
|
641
|
-
"title": "<%= queue_name.camelize %> Queue Handler Duration in Milliseconds",
|
642
|
-
"view": "timeSeries",
|
643
|
-
"stacked": false,
|
644
|
-
"liveData": true
|
645
|
-
}
|
646
|
-
},
|
647
624
|
{ <% "Active Job HandlerError count and success rate (%)" %>
|
648
625
|
"height": 3,
|
649
|
-
"width":
|
650
|
-
"y": <%= current_y +
|
651
|
-
"x":
|
626
|
+
"width": 4,
|
627
|
+
"y": <%= current_y + 4 %>,
|
628
|
+
"x": 0,
|
652
629
|
"type": "metric",
|
653
630
|
"properties": {
|
654
631
|
"period": 60,
|
@@ -656,7 +633,8 @@ Resources:
|
|
656
633
|
[ "AWS/Lambda", "Errors", "FunctionName",
|
657
634
|
"${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", { "id": "errors", "stat": "Sum", "color": "#d13212" } ],
|
658
635
|
[ ".", "Invocations", ".", ".", { "id": "invocations", "stat": "Sum", "visible": false } ],
|
659
|
-
[ { "expression": "100 - 100 * errors / MAX([errors, invocations])", "label": "Success rate (%)", "id": "availability", "yAxis": "right", "region": "us-east-1" } ]
|
636
|
+
[ { "expression": "100 - 100 * errors / MAX([errors, invocations])", "label": "Success rate (%)", "id": "availability", "yAxis": "right", "region": "us-east-1" } ],
|
637
|
+
[ "AWS/Lambda", "Throttles", "FunctionName", "${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", { "id": "throttles", "color": "#ff7f0e" } ]
|
660
638
|
],
|
661
639
|
"region": "us-east-1",
|
662
640
|
"title": "<%= queue_name.camelize %> Queue Handler Error count and success rate (%)",
|
@@ -672,9 +650,9 @@ Resources:
|
|
672
650
|
},
|
673
651
|
{ <% "Active Job Handler Concurrent executions" %>
|
674
652
|
"height": 3,
|
675
|
-
"width":
|
676
|
-
"y": <%= current_y +
|
677
|
-
"x":
|
653
|
+
"width": 5,
|
654
|
+
"y": <%= current_y + 4 %>,
|
655
|
+
"x": 4,
|
678
656
|
"type": "metric",
|
679
657
|
"properties": {
|
680
658
|
"period": 60,
|
@@ -690,19 +668,67 @@ Resources:
|
|
690
668
|
}
|
691
669
|
},
|
692
670
|
|
693
|
-
<%
|
671
|
+
{ <% "Active Job Handler Duration in Milliseconds" %>
|
672
|
+
"x": 9,
|
673
|
+
"y": <%= current_y %>,
|
674
|
+
"width": 10,
|
675
|
+
"height": 7,
|
676
|
+
"type": "metric",
|
677
|
+
"properties": {
|
678
|
+
"period": 60,
|
679
|
+
"metrics": [
|
680
|
+
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", { "stat": "p20" } ],
|
681
|
+
[ "...", { "stat": "p50" } ],
|
682
|
+
[ "...", { "stat": "p80" } ],
|
683
|
+
[ "...", { "stat": "p90" } ]
|
684
|
+
],
|
685
|
+
"region": "us-east-1",
|
686
|
+
"title": "<%= queue_name.camelize %> Queue Handler Duration in Milliseconds",
|
687
|
+
"view": "timeSeries",
|
688
|
+
"stacked": false,
|
689
|
+
"liveData": true
|
690
|
+
}
|
691
|
+
},
|
692
|
+
{ <% "Queue Handler Init Duration" %>
|
693
|
+
"type": "log",
|
694
|
+
"height": 4,
|
695
|
+
"width": 5,
|
696
|
+
"y": <%= current_y %>,
|
697
|
+
"x": 19,
|
698
|
+
"properties": {
|
699
|
+
"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",
|
700
|
+
"region": "us-east-1",
|
701
|
+
"stacked": false,
|
702
|
+
"view": "timeSeries",
|
703
|
+
"title": "<%= queue_name.camelize %> Handler Init Duration"
|
704
|
+
}
|
705
|
+
},
|
706
|
+
{ <% "Queue Handler Memory" %>
|
707
|
+
"height": 3,
|
708
|
+
"width": 5,
|
709
|
+
"y": <%= current_y + 4 %>,
|
710
|
+
"x": 19,
|
711
|
+
"type": "log",
|
712
|
+
"properties": {
|
713
|
+
"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)",
|
714
|
+
"region": "us-east-1",
|
715
|
+
"stacked": false,
|
716
|
+
"title": "<%= queue_name.camelize %> Handler Memory",
|
717
|
+
"view": "timeSeries"
|
718
|
+
}
|
719
|
+
},
|
720
|
+
<% current_y += 7 %>
|
694
721
|
<%- end -%>
|
695
722
|
|
696
|
-
|
697
723
|
|
698
|
-
{ <% "Delayed
|
724
|
+
{ <% "Delayed Job Activator" %>
|
699
725
|
"height": 3,
|
700
726
|
"width": 6,
|
701
727
|
"y": <%= current_y %>,
|
702
728
|
"x": 0,
|
703
729
|
"type": "text",
|
704
730
|
"properties": {
|
705
|
-
"markdown": "\n# Delayed
|
731
|
+
"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."
|
706
732
|
}
|
707
733
|
},
|
708
734
|
{ <% "Messages To Be Scheduled" %>
|
@@ -731,38 +757,41 @@ Resources:
|
|
731
757
|
"type": "metric",
|
732
758
|
"properties": {
|
733
759
|
"metrics": [
|
734
|
-
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.JobActivatorName}", "Resource", "${self:custom.funktor.JobActivatorName}", { "label": "
|
735
|
-
[ "...", { "label": "
|
760
|
+
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.JobActivatorName}", "Resource", "${self:custom.funktor.JobActivatorName}", { "label": "p20" } ],
|
761
|
+
[ "...", { "label": "p50", "stat": "p50" } ],
|
736
762
|
[ "...", { "label": "p80", "stat": "p80" } ],
|
737
763
|
[ "...", { "label": "p90", "stat": "p90" } ]
|
738
764
|
],
|
739
765
|
"view": "singleValue",
|
740
766
|
"region": "us-east-1",
|
741
|
-
"stat": "
|
767
|
+
"stat": "p20",
|
742
768
|
"period": 60,
|
743
769
|
"sparkline": true,
|
744
770
|
"title": "Handler Duration"
|
745
771
|
}
|
746
772
|
},
|
773
|
+
<% current_y += 3 %>
|
747
774
|
|
748
775
|
|
749
776
|
|
750
|
-
|
751
|
-
|
777
|
+
|
778
|
+
|
779
|
+
{ <% "Job Activator Error count and success rate (%)" %>
|
752
780
|
"height": 3,
|
753
|
-
"width":
|
754
|
-
"y": <%= current_y %>,
|
755
|
-
"x":
|
781
|
+
"width": 4,
|
782
|
+
"y": <%= current_y + 4 %>,
|
783
|
+
"x": 0,
|
756
784
|
"type": "metric",
|
757
785
|
"properties": {
|
758
786
|
"period": 60,
|
759
787
|
"metrics": [
|
760
788
|
[ "AWS/Lambda", "Errors", "FunctionName", "${self:custom.funktor.JobActivatorName}", { "id": "errors", "stat": "Sum", "color": "#d13212" } ],
|
761
789
|
[ ".", "Invocations", ".", ".", { "id": "invocations", "stat": "Sum", "visible": false } ],
|
762
|
-
[ { "expression": "100 - 100 * errors / MAX([errors, invocations])", "label": "Success rate (%)", "id": "availability", "yAxis": "right", "region": "us-east-1" } ]
|
790
|
+
[ { "expression": "100 - 100 * errors / MAX([errors, invocations])", "label": "Success rate (%)", "id": "availability", "yAxis": "right", "region": "us-east-1" } ],
|
791
|
+
[ "AWS/Lambda", "Throttles", "FunctionName", "${self:custom.funktor.JobActivatorName}", { "id": "throttles", "color": "#ff7f0e" } ]
|
763
792
|
],
|
764
793
|
"region": "us-east-1",
|
765
|
-
"title": "
|
794
|
+
"title": "Job Activator Error count and success rate (%)",
|
766
795
|
"yAxis": {
|
767
796
|
"right": {
|
768
797
|
"max": 100
|
@@ -773,31 +802,28 @@ Resources:
|
|
773
802
|
"liveData": true
|
774
803
|
}
|
775
804
|
},
|
776
|
-
{ <% "
|
805
|
+
{ <% "Job Activator Concurrent Executions" %>
|
777
806
|
"height": 3,
|
778
|
-
"width":
|
779
|
-
"y": <%= current_y %>,
|
780
|
-
"x":
|
807
|
+
"width": 5,
|
808
|
+
"y": <%= current_y + 4 %>,
|
809
|
+
"x": 4,
|
781
810
|
"type": "metric",
|
782
811
|
"properties": {
|
783
812
|
"period": 60,
|
784
813
|
"metrics": [
|
785
|
-
[ "AWS/Lambda", "
|
786
|
-
[ "...", { "stat": "p70" } ],
|
787
|
-
[ "...", { "stat": "p80" } ],
|
788
|
-
[ "...", { "stat": "p90" } ]
|
814
|
+
[ "AWS/Lambda", "ConcurrentExecutions", "FunctionName", "${self:custom.funktor.JobActivatorName}", { "stat": "Maximum" } ]
|
789
815
|
],
|
790
816
|
"region": "us-east-1",
|
791
|
-
"title": "
|
817
|
+
"title": "Job Activator Concurrent Executions",
|
792
818
|
"view": "timeSeries",
|
793
819
|
"stacked": false,
|
794
820
|
"liveData": true
|
795
821
|
}
|
796
822
|
},
|
797
823
|
{ <% "Delayed Jobs To Be Executed In The Next 90 Seconds" %>
|
798
|
-
"height":
|
824
|
+
"height": 4,
|
799
825
|
"width": 9,
|
800
|
-
"y": <%= current_y %>,
|
826
|
+
"y": <%= current_y + 3 %>,
|
801
827
|
"x": 0,
|
802
828
|
"type": "metric",
|
803
829
|
"properties": {
|
@@ -813,9 +839,59 @@ Resources:
|
|
813
839
|
"liveData": true
|
814
840
|
}
|
815
841
|
},
|
842
|
+
{ <% "Job Activator Duration in Milliseconds" %>
|
843
|
+
"x": 9,
|
844
|
+
"y": <%= current_y %>,
|
845
|
+
"width": 10,
|
846
|
+
"height": 7,
|
847
|
+
"type": "metric",
|
848
|
+
"properties": {
|
849
|
+
"period": 60,
|
850
|
+
"metrics": [
|
851
|
+
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.JobActivatorName}", { "stat": "p20" } ],
|
852
|
+
[ "...", { "stat": "p50" } ],
|
853
|
+
[ "...", { "stat": "p80" } ],
|
854
|
+
[ "...", { "stat": "p90" } ]
|
855
|
+
],
|
856
|
+
"region": "us-east-1",
|
857
|
+
"title": "Job Activator Duration in Milliseconds",
|
858
|
+
"view": "timeSeries",
|
859
|
+
"stacked": false,
|
860
|
+
"liveData": true
|
861
|
+
}
|
862
|
+
},
|
863
|
+
{ <% "Job Activator Init Duration" %>
|
864
|
+
"type": "log",
|
865
|
+
"height": 4,
|
866
|
+
"width": 5,
|
867
|
+
"y": <%= current_y %>,
|
868
|
+
"x": 19,
|
869
|
+
"properties": {
|
870
|
+
"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",
|
871
|
+
"region": "us-east-1",
|
872
|
+
"stacked": false,
|
873
|
+
"view": "timeSeries",
|
874
|
+
"title": "Job Activator Init Duration"
|
875
|
+
}
|
876
|
+
},
|
877
|
+
{ <% "Job Activator Memory" %>
|
878
|
+
"height": 3,
|
879
|
+
"width": 5,
|
880
|
+
"y": <%= current_y + 4 %>,
|
881
|
+
"x": 19,
|
882
|
+
"type": "log",
|
883
|
+
"properties": {
|
884
|
+
"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)",
|
885
|
+
"region": "us-east-1",
|
886
|
+
"stacked": false,
|
887
|
+
"title": "Job Activator Memory",
|
888
|
+
"view": "timeSeries"
|
889
|
+
}
|
890
|
+
},
|
891
|
+
<% current_y += 7 %>
|
892
|
+
|
816
893
|
|
817
894
|
|
818
|
-
<% current_y += 3 %>
|
819
895
|
{ <% "Scheduled Job Table Read Capacity Units" %>
|
820
896
|
"height": 3,
|
821
897
|
"width": 9,
|
@@ -838,29 +914,11 @@ Resources:
|
|
838
914
|
"liveData": true
|
839
915
|
}
|
840
916
|
},
|
841
|
-
{ <% "Delayd Job Schedule Concurrent executions" %>
|
842
|
-
"height": 3,
|
843
|
-
"width": 6,
|
844
|
-
"y": <%= current_y %>,
|
845
|
-
"x": 18,
|
846
|
-
"type": "metric",
|
847
|
-
"properties": {
|
848
|
-
"period": 60,
|
849
|
-
"metrics": [
|
850
|
-
[ "AWS/Lambda", "ConcurrentExecutions", "FunctionName", "${self:custom.funktor.JobActivatorName}", { "stat": "Maximum" } ]
|
851
|
-
],
|
852
|
-
"region": "us-east-1",
|
853
|
-
"title": "Delayd Job Schedule Concurrent executions",
|
854
|
-
"view": "timeSeries",
|
855
|
-
"stacked": false,
|
856
|
-
"liveData": true
|
857
|
-
}
|
858
|
-
},
|
859
917
|
{ <% "Scheduled Job Table Write Capacity Units" %>
|
860
918
|
"height": 3,
|
861
919
|
"width": 9,
|
862
|
-
"y": <%= current_y %>,
|
863
|
-
"x":
|
920
|
+
"y": <%= current_y + 3 %>,
|
921
|
+
"x": 0,
|
864
922
|
"type": "metric",
|
865
923
|
"properties": {
|
866
924
|
"metrics": [
|
@@ -879,26 +937,9 @@ Resources:
|
|
879
937
|
}
|
880
938
|
},
|
881
939
|
|
882
|
-
|
883
|
-
|
884
|
-
<% current_y += 3 %>
|
885
|
-
{ <% "Job Activator Init Duration" %>
|
886
|
-
"type": "log",
|
887
|
-
"x": 0,
|
888
|
-
"y": <%= current_y %>,
|
889
|
-
"width": 9,
|
890
|
-
"height": 3,
|
891
|
-
"properties": {
|
892
|
-
"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(1h)\n",
|
893
|
-
"region": "us-east-1",
|
894
|
-
"stacked": false,
|
895
|
-
"view": "timeSeries",
|
896
|
-
"title": "Handler Init Duration"
|
897
|
-
}
|
898
|
-
},
|
899
940
|
{ <% "Scheduled Job Table Latency" %>
|
900
|
-
"height":
|
901
|
-
"width":
|
941
|
+
"height": 6,
|
942
|
+
"width": 10,
|
902
943
|
"y": <%= current_y %>,
|
903
944
|
"x": 9,
|
904
945
|
"type": "metric",
|
@@ -909,6 +950,7 @@ Resources:
|
|
909
950
|
[ ".", "ThrottledRequests", ".", ".", ".", "PutItem", { "yAxis": "right", "visible": false } ],
|
910
951
|
[ ".", "SuccessfulRequestLatency", ".", ".", ".", "DeleteItem" ],
|
911
952
|
[ ".", "SuccessfulRequestLatency", ".", ".", ".", "UpdateItem" ],
|
953
|
+
[ ".", "SuccessfulRequestLatency", ".", ".", ".", "GetItem" ],
|
912
954
|
[ ".", "ThrottledRequests", ".", ".", ".", ".", { "yAxis": "right", "visible": false } ]
|
913
955
|
],
|
914
956
|
"view": "timeSeries",
|
@@ -920,16 +962,19 @@ Resources:
|
|
920
962
|
"liveData": true
|
921
963
|
}
|
922
964
|
},
|
965
|
+
|
923
966
|
{ <% "Scheduled Job Table Throttled Operations" %>
|
924
|
-
"height":
|
925
|
-
"width":
|
967
|
+
"height": 6,
|
968
|
+
"width": 5,
|
926
969
|
"y": <%= current_y %>,
|
927
|
-
"x":
|
970
|
+
"x": 19,
|
928
971
|
"type": "metric",
|
929
972
|
"properties": {
|
930
973
|
"metrics": [
|
931
974
|
[ "AWS/DynamoDB", "ThrottledRequests", "TableName", "${self:custom.funktor.JobsTableName}", "Operation", "DeleteItem" ],
|
932
|
-
[ "...", "PutItem" ]
|
975
|
+
[ "...", "PutItem" ],
|
976
|
+
[ "...", "UpdateItem" ],
|
977
|
+
[ "...", "GetItem" ]
|
933
978
|
],
|
934
979
|
"view": "timeSeries",
|
935
980
|
"stacked": false,
|
@@ -940,9 +985,7 @@ Resources:
|
|
940
985
|
"liveData": true
|
941
986
|
}
|
942
987
|
}
|
943
|
-
|
944
|
-
|
945
|
-
|
988
|
+
<% current_y += 6 %>
|
946
989
|
|
947
990
|
]
|
948
991
|
}
|