yabeda-karafka-2 0.0.1 → 0.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 96679ba8966c5530ab8c543803f8be3f338c23cf2931e54c3a68f61d232b1543
4
- data.tar.gz: 6423f70840140e060920c32766c255e1aa22b1d99b13833675722f01a90e934c
3
+ metadata.gz: 6786ce2e2d50bccdbd27f701a026468ab9d21d43c7a3c3e34cd6dd57ed3eeaf0
4
+ data.tar.gz: 9394b061dd015fe55d6960eff585d99060177a228bbfebcef61b4033e686ccd1
5
5
  SHA512:
6
- metadata.gz: c903fadb57b8cb8db23ca50dce3e6fa20e6c85ba8010590e7fda3fc2cfd37e662331a6f359f87aa0ce38921f9ce8a7956cca5f9003f8b53b3c9e74e8f120d645
7
- data.tar.gz: '082cc670d4fe7ce085070af654574efb64087208942c9553ab00d574f1b248dab79e0a3036f25a7e4109a38fca3be1533d7664520bc9f064640a4bb9a4e028cc'
6
+ metadata.gz: fdc9ec490a19fa073dfa3d0f96afb9c3e2a0af542acdcd662efd5399f0295ba6b566fade19b45eec8be3fab720fac7825ef1b6d7580697da865f02197e77892b
7
+ data.tar.gz: 0b427d9dfa469b5051ba4bcf4bfc271e94030d1db06d6a8b48a0708a92ad3d48e9128af3400d8ed8d04db81bc1f9f9170d1ca40942908478b26f16ef3b67e9b5
@@ -7,9 +7,10 @@ module Yabeda
7
7
  def register_metrics
8
8
  Yabeda.configure do
9
9
  group :karafka do
10
- counter :errors_total,
11
- tags: %i[type base_type],
12
- comment: 'A counter of the total number of errors'
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 :received_message_total,
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: 'A counter of the total number of messages received'
42
+ comment: 'Total number of batches processed'
25
43
 
26
- counter :processed_message_total,
44
+ counter :processed_messages_total_count,
45
+ unit: :messages,
27
46
  tags: %i[topic partition consumer],
28
- comment: 'A counter of the total number of messages processed'
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 on a given batch'
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.karafka_consumer_received_message_total.increment(labels, by: message_count)
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
- message_count = consumer.messages.count
74
- time = event[:time]
75
- Yabeda.karafka_consumer_processed_message_total.increment(labels, by: message_count)
76
- Yabeda.karafka_consumer_batch_processing_time.measure(labels, time)
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
- labels = { type: type, base_type: base_type }.compact
85
- Yabeda.karafka_errors_total.increment(labels)
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 :sent_message_total,
18
+ counter :sent_messages_total_count,
19
+ unit: :messages,
13
20
  tags: %i[topic type],
14
- comment: 'A counter of the total number of messages sent'
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.topic.name, type: type }
36
- Yabeda.karafka_producer_sent_message_total.increment(labels)
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.topic.name, type: type }
45
- Yabeda.karafka_producer_sent_message_total.increment(labels)
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
- labels = { type: type, base_type: base_type }.compact
55
- Yabeda.karafka_errors_total.increment(labels)
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Yabeda
4
4
  module Karafka
5
- VERSION = '0.0.1'
5
+ VERSION = '0.0.5'
6
6
  end
7
7
  end
@@ -16,11 +16,15 @@ module Yabeda
16
16
  @config ||= Config.new
17
17
  end
18
18
 
19
- Base.register_metrics if config.consumer_metrics || config.producer_metrics
20
- Consumer.register_metrics if config.consumer_metrics
21
- Producer.register_metrics if config.producer_metrics
19
+ Yabeda.configure do
20
+ config = ::Yabeda::Karafka.config
22
21
 
23
- ::Karafka.monitor.subscribe('app.initialized') do |_event|
22
+ # Register metrics
23
+ Base.register_metrics if config.consumer_metrics || config.producer_metrics
24
+ Consumer.register_metrics if config.consumer_metrics
25
+ Producer.register_metrics if config.producer_metrics
26
+
27
+ # Map Karafka events to metric changes
24
28
  Consumer.register_events if config.consumer_metrics
25
29
  Producer.register_events if config.producer_metrics
26
30
  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.1
4
+ version: 0.0.5
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-09 00:00:00.000000000 Z
11
+ date: 2024-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: anyway_config