Class: GraphQL::Tracing::PrometheusTracing::GraphQLCollector

Inherits:
PrometheusExporter::Server::TypeCollector
  • Object
show all
Defined in:
lib/graphql/tracing/prometheus_tracing/graphql_collector.rb

Instance Method Summary collapse

Constructor Details

#initializeGraphQLCollector

Returns a new instance of GraphQLCollector.



7
8
9
10
11
12
# File 'lib/graphql/tracing/prometheus_tracing/graphql_collector.rb', line 7

def initialize
  @graphql_gauge = PrometheusExporter::Metric::Base.default_aggregation.new(
    'graphql_duration_seconds',
    'Time spent in GraphQL operations, in seconds'
  )
end

Instance Method Details

#collect(object) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/graphql/tracing/prometheus_tracing/graphql_collector.rb', line 18

def collect(object)
  default_labels = { key: object['key'], platform_key: object['platform_key'] }
  custom = object['custom_labels']
  labels = custom.nil? ? default_labels : default_labels.merge(custom)

  @graphql_gauge.observe object['duration'], labels
end

#metricsObject



26
27
28
# File 'lib/graphql/tracing/prometheus_tracing/graphql_collector.rb', line 26

def metrics
  [@graphql_gauge]
end

#typeObject



14
15
16
# File 'lib/graphql/tracing/prometheus_tracing/graphql_collector.rb', line 14

def type
  'graphql'
end