37 lines
956 B
Ruby
37 lines
956 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module Instrumentation
|
|
module RedisPayload
|
|
include ::Gitlab::Utils::StrongMemoize
|
|
|
|
# Fetches payload keys from the lazy payload (this avoids
|
|
# unnecessary processing of the values).
|
|
def known_payload_keys
|
|
to_lazy_payload.keys
|
|
end
|
|
|
|
def payload
|
|
to_lazy_payload.transform_values do |value|
|
|
result = value.call
|
|
result if result > 0
|
|
end.compact
|
|
end
|
|
|
|
private
|
|
|
|
def to_lazy_payload
|
|
strong_memoize(:to_lazy_payload) do
|
|
key_prefix = storage_key ? "redis_#{storage_key}" : 'redis'
|
|
|
|
{
|
|
"#{key_prefix}_calls": -> { get_request_count },
|
|
"#{key_prefix}_duration_s": -> { query_time },
|
|
"#{key_prefix}_read_bytes": -> { read_bytes },
|
|
"#{key_prefix}_write_bytes": -> { write_bytes }
|
|
}.symbolize_keys
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|