yabeda-karafka-2 0.0.1 → 0.0.4
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/lib/yabeda/karafka/base.rb +4 -3
- data/lib/yabeda/karafka/consumer.rb +42 -13
- data/lib/yabeda/karafka/producer.rb +26 -8
- data/lib/yabeda/karafka/version.rb +1 -1
- data/lib/yabeda/karafka.rb +10 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 736fcae6de1b99a16d3f9f49fad116d70f993910dfe3b6595bac5a68e2c32d6e
|
4
|
+
data.tar.gz: 8a248ef24c4723f6f617bb7e7b0895dc8256f2710e9f305c21fac7651b4bcd58
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3226550b1bbe8c1aa6f75fc9146937e3d014a72bde964790310566b13da13156f3492af742c3ac302dc1a5fb90ce4df2b367c46415bd2d43e091f1b1c16a92c
|
7
|
+
data.tar.gz: 23704d8ec31d3b34d8bdd52ee5b00acfbdd8b3659cfdbb6b2d6b8d14d0d36ea96f206798f3e29d8e061b1c35252908190faa74e91f353afbed11459edd30792d
|
data/lib/yabeda/karafka/base.rb
CHANGED
@@ -7,9 +7,10 @@ module Yabeda
|
|
7
7
|
def register_metrics
|
8
8
|
Yabeda.configure do
|
9
9
|
group :karafka do
|
10
|
-
counter :
|
11
|
-
|
12
|
-
|
10
|
+
counter :errors_total_count,
|
11
|
+
unit: :errors,
|
12
|
+
tags: %i[type base_type error],
|
13
|
+
comment: 'Total number of error'
|
13
14
|
end
|
14
15
|
end
|
15
16
|
end
|
@@ -11,6 +11,13 @@ module Yabeda
|
|
11
11
|
3_000, 4_000, 5_000, 6_000, 7_000, 8_000, 9_000, 10_000
|
12
12
|
].freeze
|
13
13
|
|
14
|
+
|
15
|
+
MESSAGE_PROCESSING_TIME_BUCKETS = [
|
16
|
+
1, 2, 3, 4, 5, 7.5, 10, 12.5, 15, 17.5, 20, 22.5, 25, 30, 35, 40, 45,
|
17
|
+
50, 60, 70, 80, 90, 100, 125, 150, 175, 200, 225, 250, 275, 300, 400,
|
18
|
+
500, 600, 700, 800, 900, 1_000
|
19
|
+
].freeze
|
20
|
+
|
14
21
|
MESSAGE_PER_BATCH_BUCKETS = [
|
15
22
|
1, 5, 10, 15, 20, 25, 30, 40, 50, 60, 75, 100, 125, 150, 200, 250, 300, 400, 500
|
16
23
|
].freeze
|
@@ -19,27 +26,46 @@ module Yabeda
|
|
19
26
|
def register_metrics # rubocop:disable Metrics/MethodLength
|
20
27
|
Yabeda.configure do
|
21
28
|
group :karafka_consumer do
|
22
|
-
counter :
|
29
|
+
counter :received_batches_total_count,
|
30
|
+
unit: :batches,
|
31
|
+
tags: %i[topic partition consumer],
|
32
|
+
comment: 'Total number of batches received'
|
33
|
+
|
34
|
+
counter :received_messages_total_count,
|
35
|
+
unit: :messages,
|
36
|
+
tags: %i[topic partition consumer],
|
37
|
+
comment: 'Total number of messages received'
|
38
|
+
|
39
|
+
counter :processed_batches_total_count,
|
40
|
+
unit: :batches,
|
23
41
|
tags: %i[topic partition consumer],
|
24
|
-
comment: '
|
42
|
+
comment: 'Total number of batches processed'
|
25
43
|
|
26
|
-
counter :
|
44
|
+
counter :processed_messages_total_count,
|
45
|
+
unit: :messages,
|
27
46
|
tags: %i[topic partition consumer],
|
28
|
-
comment: '
|
47
|
+
comment: 'Total number of messages processed'
|
29
48
|
|
30
49
|
histogram :messages_per_batch,
|
31
50
|
unit: :messages,
|
32
51
|
per: :batch,
|
33
52
|
tags: %i[topic partition consumer],
|
34
53
|
buckets: MESSAGE_PER_BATCH_BUCKETS,
|
35
|
-
comment: 'Quantity of messages
|
54
|
+
comment: 'Quantity of messages received per batch of messages'
|
36
55
|
|
37
56
|
histogram :batch_processing_time,
|
38
57
|
unit: :milliseconds,
|
39
58
|
per: :batch,
|
40
59
|
tags: %i[topic partition consumer],
|
41
60
|
buckets: BATCH_PROCESSING_TIME_BUCKETS,
|
42
|
-
comment: 'Time that took to process a given batch (ms)'
|
61
|
+
comment: 'Time that took to process a given batch of messages (ms)'
|
62
|
+
|
63
|
+
histogram :message_processing_time,
|
64
|
+
unit: :milliseconds,
|
65
|
+
per: :batch,
|
66
|
+
tags: %i[topic partition consumer],
|
67
|
+
buckets: MESSAGE_PROCESSING_TIME_BUCKETS,
|
68
|
+
comment: 'Time that took to process message (ms)'
|
43
69
|
end
|
44
70
|
end
|
45
71
|
end
|
@@ -61,7 +87,8 @@ module Yabeda
|
|
61
87
|
consumer = event[:caller]
|
62
88
|
labels = { topic: consumer.topic.name, partition: consumer.partition, consumer: consumer.class.name }
|
63
89
|
message_count = consumer.messages.count
|
64
|
-
Yabeda.
|
90
|
+
Yabeda.karafka_consumer_received_batches_total_count.increment(labels)
|
91
|
+
Yabeda.karafka_consumer_received_messages_total_count.increment(labels, by: message_count)
|
65
92
|
Yabeda.karafka_consumer_messages_per_batch.measure(labels, message_count)
|
66
93
|
end
|
67
94
|
end
|
@@ -69,11 +96,12 @@ module Yabeda
|
|
69
96
|
def messages_consumed
|
70
97
|
register_event('consumer.consumed') do |event|
|
71
98
|
consumer = event[:caller]
|
99
|
+
messages_count = consumer.messages.count
|
72
100
|
labels = { topic: consumer.topic.name, partition: consumer.partition, consumer: consumer.class.name }.compact
|
73
|
-
|
74
|
-
|
75
|
-
Yabeda.
|
76
|
-
Yabeda.
|
101
|
+
Yabeda.karafka_consumer_processed_batches_total_count.increment(labels)
|
102
|
+
Yabeda.karafka_consumer_processed_messages_total_count.increment(labels, by: messages_count)
|
103
|
+
Yabeda.karafka_consumer_batch_processing_time.measure(labels, event[:time])
|
104
|
+
Yabeda.karafka_consumer_message_processing_time.measure(labels, event[:time]/messages_count)
|
77
105
|
end
|
78
106
|
end
|
79
107
|
|
@@ -81,8 +109,9 @@ module Yabeda
|
|
81
109
|
register_event('error.occurred') do |event|
|
82
110
|
type = event[:type]
|
83
111
|
base_type = type.split('.').first
|
84
|
-
|
85
|
-
|
112
|
+
error = event[:error].class.name
|
113
|
+
labels = { type: type, base_type: base_type, error: error }.compact
|
114
|
+
Yabeda.karafka_errors_total_count.increment(labels)
|
86
115
|
end
|
87
116
|
end
|
88
117
|
end
|
@@ -5,13 +5,27 @@ require 'karafka'
|
|
5
5
|
module Yabeda
|
6
6
|
module Karafka
|
7
7
|
class Producer
|
8
|
+
MESSAGE_TRANMISSION_TIME_BUCKETS = [
|
9
|
+
1, 3, 5, 10, 15, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275,
|
10
|
+
300, 350, 400, 450, 500, 550, 600, 650, 700, 800, 900, 1_000, 1_500, 2_000,
|
11
|
+
3_000, 4_000, 5_000, 6_000, 7_000, 8_000, 9_000, 10_000
|
12
|
+
]
|
13
|
+
|
8
14
|
class << self
|
9
15
|
def register_metrics
|
10
16
|
Yabeda.configure do
|
11
17
|
group :karafka_producer do
|
12
|
-
counter :
|
18
|
+
counter :sent_messages_total_count,
|
19
|
+
unit: :messages,
|
13
20
|
tags: %i[topic type],
|
14
|
-
comment: '
|
21
|
+
comment: 'Total number of kafka messages produced'
|
22
|
+
|
23
|
+
histogram :message_send_time,
|
24
|
+
unit: :milliseconds,
|
25
|
+
per: :message,
|
26
|
+
tags: %i[topic type],
|
27
|
+
buckets: MESSAGE_TRANMISSION_TIME_BUCKETS,
|
28
|
+
comment: 'Time that took to send a message (ms)'
|
15
29
|
end
|
16
30
|
end
|
17
31
|
end
|
@@ -32,17 +46,20 @@ module Yabeda
|
|
32
46
|
def message_sent(type)
|
33
47
|
register_event("message.produced_#{type}") do |event|
|
34
48
|
message = event[:message]
|
35
|
-
labels = { topic: message
|
36
|
-
Yabeda.
|
49
|
+
labels = { topic: message[:topic], type: type }
|
50
|
+
Yabeda.karafka_producer_sent_messages_total_count.increment(labels)
|
51
|
+
Yabeda.karafka_producer_message_send_time.measure(labels, event[:time])
|
37
52
|
end
|
38
53
|
end
|
39
54
|
|
40
55
|
def message_batch_sent(type)
|
41
56
|
register_event("messages.produced_#{type}") do |event|
|
42
57
|
messages = event[:messages]
|
58
|
+
messages_count = messages.count
|
43
59
|
messages.each do |message|
|
44
|
-
labels = { topic: message
|
45
|
-
Yabeda.
|
60
|
+
labels = { topic: message['topic'], type: type }
|
61
|
+
Yabeda.karafka_producer_sent_messages_total_count.increment(labels)
|
62
|
+
Yabeda.karafka_producer_message_send_time.measure(labels, event[:time] / messages_count)
|
46
63
|
end
|
47
64
|
end
|
48
65
|
end
|
@@ -51,8 +68,9 @@ module Yabeda
|
|
51
68
|
register_event('error.occurred') do |event|
|
52
69
|
type = event[:type]
|
53
70
|
base_type = type.split('.').first
|
54
|
-
|
55
|
-
|
71
|
+
error = event[:error].class.name
|
72
|
+
labels = { type: type, base_type: base_type, error: error }.compact
|
73
|
+
Yabeda.karafka_errors_total_count.increment(labels)
|
56
74
|
end
|
57
75
|
end
|
58
76
|
end
|
data/lib/yabeda/karafka.rb
CHANGED
@@ -16,13 +16,17 @@ module Yabeda
|
|
16
16
|
@config ||= Config.new
|
17
17
|
end
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
Producer.register_metrics if config.producer_metrics
|
19
|
+
Yabeda.configure do
|
20
|
+
config = ::Yabeda::Karafka.config
|
22
21
|
|
23
|
-
|
24
|
-
Consumer.
|
25
|
-
Producer.
|
22
|
+
Base.register_metrics if config.consumer_metrics || config.producer_metrics
|
23
|
+
Consumer.register_metrics if config.consumer_metrics
|
24
|
+
Producer.register_metrics if config.producer_metrics
|
25
|
+
|
26
|
+
::Karafka.monitor.subscribe('app.initialized') do |_event|
|
27
|
+
Consumer.register_events if config.consumer_metrics
|
28
|
+
Producer.register_events if config.producer_metrics
|
29
|
+
end
|
26
30
|
end
|
27
31
|
end
|
28
32
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yabeda-karafka-2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henrique Bontempo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-08-
|
11
|
+
date: 2024-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: anyway_config
|