funktor 0.7.18 → 0.7.21
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/funktor-testapp/app/workers/audit_worker.rb +3 -0
- data/funktor-testapp/funktor_config/resources/cloudwatch_dashboard.yml +284 -159
- data/lib/funktor/cli/templates/funktor_config/resources/cloudwatch_dashboard.yml +94 -34
- data/lib/funktor/version.rb +1 -1
- metadata +2 -2
@@ -34,9 +34,9 @@ Resources:
|
|
34
34
|
<% current_y += 1 %>
|
35
35
|
|
36
36
|
<%- prioritized_workers.each_with_index do |worker_name, index| -%>
|
37
|
-
<%- current_y +=
|
37
|
+
<%- current_y += 10 if (index > 0 && (index % 6) == 0) %>
|
38
38
|
{ <% "Worker Overview" %>
|
39
|
-
"height":
|
39
|
+
"height": 7,
|
40
40
|
"width": 4,
|
41
41
|
"y": <%= current_y %>,
|
42
42
|
"x": <%= (index % 6) * 4 %>,
|
@@ -44,9 +44,26 @@ Resources:
|
|
44
44
|
"properties": {
|
45
45
|
"metrics": [
|
46
46
|
[ "${self:custom.funktor.DashboardNamespace}", "processed", "WorkerClassName", "<%= worker_name %>", { "color": "#2ca02c" } ],
|
47
|
-
[ "${self:custom.funktor.DashboardNamespace}", "failed", "WorkerClassName", "<%= worker_name %>", { "color": "#d62728" } ],
|
48
47
|
[ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "<%= worker_name %>", { "label": "p90", "color": "#ff7f0e", "stat": "p90" } ],
|
49
|
-
[ "${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
|
+
],
|
50
|
+
"view": "singleValue",
|
51
|
+
"region": "us-east-1",
|
52
|
+
"stat": "Sum",
|
53
|
+
"period": 60,
|
54
|
+
"sparkline": true,
|
55
|
+
"title": "<%= worker_name %>"
|
56
|
+
}
|
57
|
+
},
|
58
|
+
{ <% "Worker Overview" %>
|
59
|
+
"height": 3,
|
60
|
+
"width": 4,
|
61
|
+
"y": <%= current_y + 7 %>,
|
62
|
+
"x": <%= (index % 6) * 4 %>,
|
63
|
+
"type": "metric",
|
64
|
+
"properties": {
|
65
|
+
"metrics": [
|
66
|
+
[ "${self:custom.funktor.DashboardNamespace}", "failed", "WorkerClassName", "<%= worker_name %>", { "color": "#d62728" } ]
|
50
67
|
],
|
51
68
|
"view": "singleValue",
|
52
69
|
"region": "us-east-1",
|
@@ -57,8 +74,8 @@ Resources:
|
|
57
74
|
}
|
58
75
|
},
|
59
76
|
<%- end -%>
|
60
|
-
<%#- current_y +=
|
61
|
-
<%- current_y +=
|
77
|
+
<%#- current_y += 10 if (prioritized_workers.count - 1) % 3 != 0 %>
|
78
|
+
<%- current_y += 10 %>
|
62
79
|
|
63
80
|
<%- prioritized_workers.each do |worker_name| -%>
|
64
81
|
{ <% "Worker" %>
|
@@ -117,14 +134,14 @@ Resources:
|
|
117
134
|
"type": "metric",
|
118
135
|
"properties": {
|
119
136
|
"metrics": [
|
120
|
-
[ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "<%= worker_name %>", { "label": "
|
137
|
+
[ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "<%= worker_name %>", { "label": "p20", "color": "#1f77b4" } ]
|
121
138
|
],
|
122
139
|
"view": "singleValue",
|
123
140
|
"region": "us-east-1",
|
124
|
-
"stat": "
|
141
|
+
"stat": "p20",
|
125
142
|
"period": 60,
|
126
143
|
"sparkline": true,
|
127
|
-
"title": "<%= worker_name %>
|
144
|
+
"title": "<%= worker_name %> p20"
|
128
145
|
}
|
129
146
|
},
|
130
147
|
{ <% "Worker Duration Percentiles" %>
|
@@ -135,14 +152,14 @@ Resources:
|
|
135
152
|
"type": "metric",
|
136
153
|
"properties": {
|
137
154
|
"metrics": [
|
138
|
-
[ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "<%= worker_name %>", { "label": "
|
155
|
+
[ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "<%= worker_name %>", { "label": "p50", "color": "#ff7f0e" } ]
|
139
156
|
],
|
140
157
|
"view": "singleValue",
|
141
158
|
"region": "us-east-1",
|
142
|
-
"stat": "
|
159
|
+
"stat": "p50",
|
143
160
|
"period": 60,
|
144
161
|
"sparkline": true,
|
145
|
-
"title": "<%= worker_name %>
|
162
|
+
"title": "<%= worker_name %> p50"
|
146
163
|
}
|
147
164
|
},
|
148
165
|
{ <% "Worker Duration Percentiles" %>
|
@@ -274,13 +291,13 @@ Resources:
|
|
274
291
|
"metrics": [
|
275
292
|
[ "${self:custom.funktor.DashboardNamespace}", "Duration", "WorkerClassName", "<%= worker_name %>", { "stat": "p90", "color": "#d62728" } ],
|
276
293
|
[ "...", { "stat": "p80", "color": "#2ca02c" } ],
|
277
|
-
[ "...", { "stat": "
|
294
|
+
[ "...", { "stat": "p50", "color": "#ff7f0e" } ],
|
278
295
|
[ "...", { "color": "#1f77b4" } ]
|
279
296
|
],
|
280
297
|
"view": "timeSeries",
|
281
298
|
"stacked": false,
|
282
299
|
"region": "us-east-1",
|
283
|
-
"stat": "
|
300
|
+
"stat": "p20",
|
284
301
|
"period": 60,
|
285
302
|
"title": "<%= worker_name %> Duration Percentiles",
|
286
303
|
"legend": {
|
@@ -382,14 +399,14 @@ Resources:
|
|
382
399
|
"type": "metric",
|
383
400
|
"properties": {
|
384
401
|
"metrics": [
|
385
|
-
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", "Resource", "${self:custom.funktor.IncomingJobHandlerName}", { "label": "
|
386
|
-
[ "...", { "label": "
|
402
|
+
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", "Resource", "${self:custom.funktor.IncomingJobHandlerName}", { "label": "p20" } ],
|
403
|
+
[ "...", { "label": "p50", "stat": "p50" } ],
|
387
404
|
[ "...", { "label": "p80", "stat": "p80" } ],
|
388
405
|
[ "...", { "label": "p90", "stat": "p90" } ]
|
389
406
|
],
|
390
407
|
"view": "singleValue",
|
391
408
|
"region": "us-east-1",
|
392
|
-
"stat": "
|
409
|
+
"stat": "p20",
|
393
410
|
"period": 60,
|
394
411
|
"sparkline": true,
|
395
412
|
"title": "Handler Duration Percentiles"
|
@@ -399,7 +416,7 @@ Resources:
|
|
399
416
|
|
400
417
|
<% current_y += 3 %>
|
401
418
|
{ <% "Incoming Job Queue (Async & scheduled jobs land here first)" %>
|
402
|
-
"height":
|
419
|
+
"height": 3,
|
403
420
|
"width": 9,
|
404
421
|
"y": <%= current_y %>,
|
405
422
|
"x": 0,
|
@@ -424,6 +441,20 @@ Resources:
|
|
424
441
|
"liveData": true
|
425
442
|
}
|
426
443
|
},
|
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
|
+
},
|
427
458
|
{ <% "Incoming Job Handler Duration in Milliseconds" %>
|
428
459
|
"height": 6,
|
429
460
|
"width": 9,
|
@@ -433,8 +464,8 @@ Resources:
|
|
433
464
|
"properties": {
|
434
465
|
"period": 60,
|
435
466
|
"metrics": [
|
436
|
-
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "stat": "
|
437
|
-
[ "...", { "stat": "
|
467
|
+
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "stat": "p20" } ],
|
468
|
+
[ "...", { "stat": "p50" } ],
|
438
469
|
[ "...", { "stat": "p80" } ],
|
439
470
|
[ "...", { "stat": "p90" } ]
|
440
471
|
],
|
@@ -490,10 +521,11 @@ Resources:
|
|
490
521
|
"liveData": true
|
491
522
|
}
|
492
523
|
},
|
524
|
+
<% current_y += 6 %>
|
493
525
|
|
526
|
+
|
494
527
|
|
495
528
|
|
496
|
-
<% current_y += 6 %>
|
497
529
|
<%- queue_names.each do |queue_name| -%>
|
498
530
|
{ <% "Active Jobs" %>
|
499
531
|
"height": 3,
|
@@ -534,21 +566,21 @@ Resources:
|
|
534
566
|
"metrics": [
|
535
567
|
[ "AWS/Lambda", "Duration", "FunctionName",
|
536
568
|
"${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", "Resource",
|
537
|
-
"${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", { "label": "
|
538
|
-
[ "...", { "label": "
|
569
|
+
"${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", { "label": "p20" } ],
|
570
|
+
[ "...", { "label": "p50", "stat": "p50" } ],
|
539
571
|
[ "...", { "label": "p80", "stat": "p80" } ],
|
540
572
|
[ "...", { "label": "p90", "stat": "p90" } ]
|
541
573
|
],
|
542
574
|
"view": "singleValue",
|
543
575
|
"region": "us-east-1",
|
544
|
-
"stat": "
|
576
|
+
"stat": "p20",
|
545
577
|
"period": 60,
|
546
578
|
"sparkline": true,
|
547
579
|
"title": "Handler Duration"
|
548
580
|
}
|
549
581
|
},
|
550
582
|
{ <% "Active Job Queue" %>
|
551
|
-
"height":
|
583
|
+
"height": 3,
|
552
584
|
"width": 9,
|
553
585
|
"y": <%= current_y + 3 %>,
|
554
586
|
"x": 0,
|
@@ -577,6 +609,20 @@ Resources:
|
|
577
609
|
"liveData": true
|
578
610
|
}
|
579
611
|
},
|
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
|
+
},
|
580
626
|
{ <% "Active Job Handler Duration in Milliseconds" %>
|
581
627
|
"height": 6,
|
582
628
|
"width": 9,
|
@@ -586,8 +632,8 @@ Resources:
|
|
586
632
|
"properties": {
|
587
633
|
"period": 60,
|
588
634
|
"metrics": [
|
589
|
-
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", { "stat": "
|
590
|
-
[ "...", { "stat": "
|
635
|
+
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.<%= queue_name.camelize %>QueueHandlerName}", { "stat": "p20" } ],
|
636
|
+
[ "...", { "stat": "p50" } ],
|
591
637
|
[ "...", { "stat": "p80" } ],
|
592
638
|
[ "...", { "stat": "p90" } ]
|
593
639
|
],
|
@@ -685,14 +731,14 @@ Resources:
|
|
685
731
|
"type": "metric",
|
686
732
|
"properties": {
|
687
733
|
"metrics": [
|
688
|
-
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.JobActivatorName}", "Resource", "${self:custom.funktor.JobActivatorName}", { "label": "
|
689
|
-
[ "...", { "label": "
|
734
|
+
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.JobActivatorName}", "Resource", "${self:custom.funktor.JobActivatorName}", { "label": "p20" } ],
|
735
|
+
[ "...", { "label": "p50", "stat": "p50" } ],
|
690
736
|
[ "...", { "label": "p80", "stat": "p80" } ],
|
691
737
|
[ "...", { "label": "p90", "stat": "p90" } ]
|
692
738
|
],
|
693
739
|
"view": "singleValue",
|
694
740
|
"region": "us-east-1",
|
695
|
-
"stat": "
|
741
|
+
"stat": "p20",
|
696
742
|
"period": 60,
|
697
743
|
"sparkline": true,
|
698
744
|
"title": "Handler Duration"
|
@@ -736,8 +782,8 @@ Resources:
|
|
736
782
|
"properties": {
|
737
783
|
"period": 60,
|
738
784
|
"metrics": [
|
739
|
-
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.JobActivatorName}", { "stat": "
|
740
|
-
[ "...", { "stat": "
|
785
|
+
[ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.JobActivatorName}", { "stat": "p20" } ],
|
786
|
+
[ "...", { "stat": "p50" } ],
|
741
787
|
[ "...", { "stat": "p80" } ],
|
742
788
|
[ "...", { "stat": "p90" } ]
|
743
789
|
],
|
@@ -836,11 +882,25 @@ Resources:
|
|
836
882
|
|
837
883
|
|
838
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
|
+
},
|
839
899
|
{ <% "Scheduled Job Table Latency" %>
|
840
900
|
"height": 3,
|
841
|
-
"width":
|
901
|
+
"width": 9,
|
842
902
|
"y": <%= current_y %>,
|
843
|
-
"x":
|
903
|
+
"x": 9,
|
844
904
|
"type": "metric",
|
845
905
|
"properties": {
|
846
906
|
"metrics": [
|
data/lib/funktor/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: funktor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Green
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-sqs
|