class Hanami::Events::CloudPubsub::Middleware::Prometheus

Middleware used for logging useful information about an event

Constants

LONG_RUNNING_JOB_RUNTIME_BUCKETS

Public Instance Methods

call(msg, **opts) { |**opts| ... } click to toggle source
# File lib/hanami/events/cloud_pubsub/middleware/prometheus.rb, line 28
def call(msg, **opts)
  start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
  status = :running

  begin
    ret = yield(**opts) if block_given?
    status = :succeeded
    ret
  rescue StandardError
    status = :failed
    raise
  end
ensure
  record_metrics(msg, status, start)
end

Private Instance Methods

record_metrics(msg, status, start) click to toggle source
# File lib/hanami/events/cloud_pubsub/middleware/prometheus.rb, line 46
def record_metrics(msg, status, start)
  elapsed = (Process.clock_gettime(Process::CLOCK_MONOTONIC) - start).round(3)
  sub = msg.subscription.subscriber.subscription_name
  event_name = msg.attributes['event_name']
  labels = { event_name: event_name, subscription: sub, status: status }
  Yabeda.received_pubsub_events.increment(labels, by: 1)
  Yabeda.subscriber_runtime.measure(labels, elapsed)
rescue StandardError
  # ok
end