class ElasticAPM::Instrumenter

def update_transaction_metrics(transaction)

rubocop:disable Metrics/MethodLength, Metrics/AbcSize
def update_transaction_metrics(transaction)
  return unless transaction.config.collect_metrics?
  tags = {
    'transaction.name': transaction.name,
    'transaction.type': transaction.type
  }
  @metrics.get(:transaction).timer(
    :'transaction.duration.sum.us',
    tags: tags, reset_on_collect: true
  ).update(transaction.duration)
  @metrics.get(:transaction).counter(
    :'transaction.duration.count',
    tags: tags, reset_on_collect: true
  ).inc!
  return unless transaction.sampled?
  return unless transaction.config.breakdown_metrics?
  @metrics.get(:breakdown).counter(
    :'transaction.breakdown.count',
    tags: tags, reset_on_collect: true
  ).inc!
  span_tags = tags.merge('span.type': 'app')
  @metrics.get(:breakdown).timer(
    :'span.self_time.sum.us',
    tags: span_tags, reset_on_collect: true
  ).update(transaction.self_time)
  @metrics.get(:breakdown).counter(
    :'span.self_time.count',
    tags: span_tags, reset_on_collect: true
  ).inc!
end