class InfluxReporter::DataBuilders::Transactions
Public Instance Methods
build(transactions)
click to toggle source
# File lib/influx_reporter/data_builders/transactions.rb, line 7 def build(transactions) data_points = [] transactions.each do |transaction| data_points << build_transaction(transaction) transaction.traces.each do |trace| next if trace.kind == InfluxReporter::Transaction::ROOT_TRACE_NAME data_points << build_trace(trace) end end data_points end
Private Instance Methods
build_trace(trace)
click to toggle source
@param trace [InfluxReporter::Trace] @return [Hash]
# File lib/influx_reporter/data_builders/transactions.rb, line 76 def build_trace(trace) { series: "trace.#{trace.kind.split('.').first}", tags: trace_tags(trace), values: trace_values(trace), timestamp: trace.timestamp } end
build_transaction(transaction)
click to toggle source
@param transaction [InfluxReporter::Transaction]
# File lib/influx_reporter/data_builders/transactions.rb, line 22 def build_transaction(transaction) { series: series(transaction), tags: tags(transaction), values: values(transaction), timestamp: transaction.timestamp } end
clean(hash)
click to toggle source
@param hash [Hash] @return [Hash]
# File lib/influx_reporter/data_builders/transactions.rb, line 111 def clean(hash) hash.reject { |_, value| value.nil? || value == '' } end
ms(nanos)
click to toggle source
# File lib/influx_reporter/data_builders/transactions.rb, line 115 def ms(nanos) nanos.to_f / 1_000_000 end
series(transaction)
click to toggle source
@param transaction [InfluxReporter::Transaction, InfluxReporter::Trace] @return [String]
# File lib/influx_reporter/data_builders/transactions.rb, line 33 def series(transaction) transaction.kind.split('.').first(2).join('.') end
trace_values(trace)
click to toggle source
@param trace [InfluxReporter::Trace]
# File lib/influx_reporter/data_builders/transactions.rb, line 99 def trace_values(trace) values = { duration: ms(trace.duration), start_time: ms(trace.relative_start) } values = (trace.extra[:values] || {}).merge(values) values[:uuid] ||= trace.transaction.root_trace.extra[:values][:uuid] if trace.transaction.root_trace.extra[:values] clean values end
values(transaction)
click to toggle source
@param transaction [InfluxReporter::Transaction] @return [Hash]
# File lib/influx_reporter/data_builders/transactions.rb, line 52 def values(transaction) values = { duration: ms(transaction.duration) }.merge(values_from_traces(transaction)) values = (transaction.root_trace.extra[:values] || {}).merge(values) clean values end
values_from_traces(transaction)
click to toggle source
@param transaction [InfluxReporter::Transaction] @return [Hash]
# File lib/influx_reporter/data_builders/transactions.rb, line 62 def values_from_traces(transaction) values = {} transaction.traces.each do |trace| next if trace.signature == InfluxReporter::Transaction::ROOT_TRACE_NAME || trace.transaction.root_trace == trace values["#{trace.kind}.count"] ||= 0 values["#{trace.kind}.duration"] ||= 0 values["#{trace.kind}.count"] += 1 values["#{trace.kind}.duration"] += ms(trace.duration) end values end