Method: Kafka::Prometheus::ProducerSubscriber#produce_message

Defined in:
lib/kafka/prometheus.rb

#produce_message(event) ⇒ Object



204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
# File 'lib/kafka/prometheus.rb', line 204

def produce_message(event)
  client = event.payload.fetch(:client_id)
  key = { client: client, topic: event.payload.fetch(:topic) }

  message_size = event.payload.fetch(:message_size)
  buffer_size = event.payload.fetch(:buffer_size)
  max_buffer_size = event.payload.fetch(:max_buffer_size)
  buffer_fill_ratio = buffer_size.to_f / max_buffer_size.to_f
  buffer_fill_percentage = buffer_fill_ratio * 100.0

  # This gets us the write rate.
  @produce_messages.increment(labels: key)
  @produce_message_size.observe(message_size, labels: key)

  # This gets us the avg/max buffer size per producer.
  @buffer_size.observe(buffer_size, labels: { client: client })

  # This gets us the avg/max buffer fill ratio per producer.
  @buffer_fill_ratio.observe(buffer_fill_ratio, labels: { client: client })
  @buffer_fill_percentage.observe(buffer_fill_percentage, labels: { client: client })
end