atatus 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/Gemfile +72 -22
  4. data/LICENSE +1 -1
  5. data/atatus.gemspec +2 -2
  6. data/lib/atatus.rb +76 -16
  7. data/lib/atatus/agent.rb +78 -29
  8. data/lib/atatus/central_config.rb +72 -27
  9. data/lib/atatus/central_config/cache_control.rb +18 -1
  10. data/lib/atatus/child_durations.rb +64 -0
  11. data/lib/atatus/collector/base.rb +61 -29
  12. data/lib/atatus/collector/builder.rb +46 -2
  13. data/lib/atatus/collector/hist.rb +54 -0
  14. data/lib/atatus/collector/transport.rb +41 -11
  15. data/lib/atatus/config.rb +129 -28
  16. data/lib/atatus/config/bytes.rb +17 -0
  17. data/lib/atatus/config/duration.rb +17 -0
  18. data/lib/atatus/config/options.rb +29 -9
  19. data/lib/atatus/config/regexp_list.rb +17 -0
  20. data/lib/atatus/config/wildcard_pattern_list.rb +64 -0
  21. data/lib/atatus/context.rb +32 -1
  22. data/lib/atatus/context/request.rb +17 -0
  23. data/lib/atatus/context/request/socket.rb +18 -1
  24. data/lib/atatus/context/request/url.rb +17 -0
  25. data/lib/atatus/context/response.rb +27 -2
  26. data/lib/atatus/context/user.rb +17 -0
  27. data/lib/atatus/context_builder.rb +19 -4
  28. data/lib/atatus/deprecations.rb +17 -0
  29. data/lib/atatus/error.rb +27 -0
  30. data/lib/atatus/error/exception.rb +24 -0
  31. data/lib/atatus/error/log.rb +17 -0
  32. data/lib/atatus/error_builder.rb +17 -2
  33. data/lib/atatus/grape.rb +62 -0
  34. data/lib/atatus/graphql.rb +91 -0
  35. data/lib/atatus/grpc.rb +99 -0
  36. data/lib/atatus/instrumenter.rb +135 -30
  37. data/lib/atatus/internal_error.rb +17 -0
  38. data/lib/atatus/logging.rb +17 -2
  39. data/lib/atatus/metadata.rb +17 -0
  40. data/lib/atatus/metadata/process_info.rb +17 -0
  41. data/lib/atatus/metadata/service_info.rb +21 -6
  42. data/lib/atatus/metadata/system_info.rb +22 -3
  43. data/lib/atatus/metadata/system_info/container_info.rb +49 -10
  44. data/lib/atatus/metadata/system_info/hw_info.rb +1 -1
  45. data/lib/atatus/metrics.rb +69 -27
  46. data/lib/atatus/metrics/breakdown_set.rb +31 -0
  47. data/lib/atatus/metrics/{cpu_mem.rb → cpu_mem_set.rb} +110 -63
  48. data/lib/atatus/metrics/metric.rb +140 -0
  49. data/lib/atatus/metrics/set.rb +123 -0
  50. data/lib/atatus/metrics/span_scoped_set.rb +56 -0
  51. data/lib/atatus/metrics/transaction_set.rb +26 -0
  52. data/lib/atatus/metrics/vm_set.rb +58 -0
  53. data/lib/atatus/metricset.rb +48 -4
  54. data/lib/atatus/middleware.rb +28 -8
  55. data/lib/atatus/naively_hashable.rb +17 -0
  56. data/lib/atatus/normalizers.rb +23 -9
  57. data/lib/atatus/normalizers/grape.rb +22 -0
  58. data/lib/atatus/normalizers/grape/endpoint_run.rb +65 -0
  59. data/lib/atatus/normalizers/rails.rb +27 -0
  60. data/lib/atatus/normalizers/rails/action_controller.rb +44 -0
  61. data/lib/atatus/normalizers/rails/action_mailer.rb +43 -0
  62. data/lib/atatus/normalizers/{action_view.rb → rails/action_view.rb} +17 -0
  63. data/lib/atatus/normalizers/rails/active_record.rb +80 -0
  64. data/lib/atatus/opentracing.rb +75 -42
  65. data/lib/atatus/rails.rb +29 -13
  66. data/lib/atatus/railtie.rb +19 -6
  67. data/lib/atatus/resque.rb +29 -0
  68. data/lib/atatus/sinatra.rb +53 -0
  69. data/lib/atatus/span.rb +44 -15
  70. data/lib/atatus/span/context.rb +43 -28
  71. data/lib/atatus/span/context/db.rb +43 -0
  72. data/lib/atatus/span/context/destination.rb +77 -0
  73. data/lib/atatus/span/context/http.rb +43 -0
  74. data/lib/atatus/span_helpers.rb +18 -1
  75. data/lib/atatus/spies.rb +33 -15
  76. data/lib/atatus/spies/action_dispatch.rb +27 -6
  77. data/lib/atatus/spies/delayed_job.rb +26 -5
  78. data/lib/atatus/spies/dynamo_db.rb +62 -0
  79. data/lib/atatus/spies/elasticsearch.rb +53 -7
  80. data/lib/atatus/spies/faraday.rb +54 -20
  81. data/lib/atatus/spies/http.rb +36 -6
  82. data/lib/atatus/spies/json.rb +18 -0
  83. data/lib/atatus/spies/mongo.rb +41 -10
  84. data/lib/atatus/spies/net_http.rb +52 -11
  85. data/lib/atatus/spies/rake.rb +42 -23
  86. data/lib/atatus/spies/redis.rb +17 -0
  87. data/lib/atatus/spies/resque.rb +57 -0
  88. data/lib/atatus/spies/sequel.rb +54 -17
  89. data/lib/atatus/spies/shoryuken.rb +69 -0
  90. data/lib/atatus/spies/sidekiq.rb +46 -25
  91. data/lib/atatus/spies/sinatra.rb +20 -4
  92. data/lib/atatus/spies/sneakers.rb +74 -0
  93. data/lib/atatus/spies/sucker_punch.rb +58 -0
  94. data/lib/atatus/spies/tilt.rb +20 -1
  95. data/lib/atatus/sql.rb +36 -0
  96. data/lib/atatus/sql/signature.rb +169 -0
  97. data/lib/atatus/sql/tokenizer.rb +264 -0
  98. data/lib/atatus/sql/tokens.rb +63 -0
  99. data/lib/atatus/sql_summarizer.rb +24 -6
  100. data/lib/atatus/stacktrace.rb +17 -0
  101. data/lib/atatus/stacktrace/frame.rb +17 -3
  102. data/lib/atatus/stacktrace_builder.rb +23 -3
  103. data/lib/atatus/subscriber.rb +23 -4
  104. data/lib/atatus/trace_context.rb +84 -51
  105. data/lib/atatus/trace_context/traceparent.rb +111 -0
  106. data/lib/atatus/trace_context/tracestate.rb +148 -0
  107. data/lib/atatus/transaction.rb +74 -18
  108. data/lib/atatus/transport/base.rb +44 -27
  109. data/lib/atatus/transport/connection.rb +28 -72
  110. data/lib/atatus/transport/connection/http.rb +58 -35
  111. data/lib/atatus/transport/connection/proxy_pipe.rb +24 -5
  112. data/lib/atatus/transport/filters.rb +18 -1
  113. data/lib/atatus/transport/filters/hash_sanitizer.rb +77 -0
  114. data/lib/atatus/transport/filters/secrets_filter.rb +30 -55
  115. data/lib/atatus/transport/headers.rb +83 -0
  116. data/lib/atatus/transport/serializers.rb +17 -5
  117. data/lib/atatus/transport/serializers/context_serializer.rb +30 -3
  118. data/lib/atatus/transport/serializers/error_serializer.rb +17 -2
  119. data/lib/atatus/transport/serializers/metadata_serializer.rb +44 -22
  120. data/lib/atatus/transport/serializers/metricset_serializer.rb +34 -6
  121. data/lib/atatus/transport/serializers/span_serializer.rb +47 -12
  122. data/lib/atatus/transport/serializers/transaction_serializer.rb +18 -2
  123. data/lib/atatus/transport/user_agent.rb +48 -0
  124. data/lib/atatus/transport/worker.rb +31 -7
  125. data/lib/atatus/util.rb +18 -1
  126. data/lib/atatus/util/inflector.rb +17 -0
  127. data/lib/atatus/util/lru_cache.rb +17 -0
  128. data/lib/atatus/util/throttle.rb +17 -0
  129. data/lib/atatus/version.rb +19 -1
  130. metadata +46 -26
  131. data/Rakefile +0 -19
  132. data/bench/.gitignore +0 -2
  133. data/bench/app.rb +0 -53
  134. data/bench/benchmark.rb +0 -36
  135. data/bench/report.rb +0 -55
  136. data/bench/rubyprof.rb +0 -39
  137. data/bench/stackprof.rb +0 -23
  138. data/bin/build_docs +0 -5
  139. data/bin/console +0 -15
  140. data/bin/setup +0 -8
  141. data/bin/with_framework +0 -7
  142. data/lib/atatus/metrics/vm.rb +0 -60
  143. data/lib/atatus/normalizers/action_controller.rb +0 -27
  144. data/lib/atatus/normalizers/action_mailer.rb +0 -26
  145. data/lib/atatus/normalizers/active_record.rb +0 -45
  146. data/lib/atatus/util/prefixed_logger.rb +0 -18
  147. data/vendor/.gitkeep +0 -0
@@ -1,14 +1,31 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
1
18
  # frozen_string_literal: true
2
19
 
20
+ require 'atatus/railtie'
3
21
  require 'atatus/subscriber'
22
+ require 'atatus/normalizers/rails'
4
23
 
5
24
  module Atatus
6
25
  # Module for explicitly starting the Atatus agent and hooking into Rails.
7
26
  # It is recommended to use the Railtie instead.
8
27
  module Rails
9
28
  extend self
10
- # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
11
- # rubocop:disable Metrics/CyclomaticComplexity
12
29
  # Start the Atatus agent and hook into Rails.
13
30
  # Note that the agent won't be started if the Rails console is being used.
14
31
  #
@@ -16,11 +33,13 @@ module Atatus
16
33
  # @return [true, nil] true if the agent was started, nil otherwise.
17
34
  def start(config)
18
35
  config = Config.new(config) unless config.is_a?(Config)
36
+
19
37
  if (reason = should_skip?(config))
20
38
  unless config.disable_start_message?
21
39
  config.logger.info "Skipping because: #{reason}. " \
22
40
  "Start manually with `Atatus.start'"
23
41
  end
42
+
24
43
  return
25
44
  end
26
45
 
@@ -28,24 +47,21 @@ module Atatus
28
47
  attach_subscriber(agent)
29
48
  end
30
49
 
31
- if Atatus.running? &&
32
- !Atatus.agent.config.disabled_instrumentations.include?(
33
- 'action_dispatch'
34
- )
35
- require 'atatus/spies/action_dispatch'
36
- end
37
50
  Atatus.running?
38
51
  rescue StandardError => e
39
- config.logger.error format('Failed to start: %s', e.message)
40
- config.logger.error "Backtrace:\n" + e.backtrace.join("\n")
52
+ if config.disable_start_message?
53
+ config.logger.error format('Failed to start: %s', e.message)
54
+ config.logger.error "Backtrace:\n" + e.backtrace.join("\n")
55
+ else
56
+ puts format('Failed to start: %s', e.message)
57
+ puts "Backtrace:\n" + e.backtrace.join("\n")
58
+ end
41
59
  end
42
- # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
43
- # rubocop:enable Metrics/CyclomaticComplexity
44
60
 
45
61
  private
46
62
 
47
63
  def should_skip?(_config)
48
- if ::Rails.const_defined? 'Rails::Console'
64
+ if ::Rails.const_defined?('Console', false)
49
65
  return 'Rails console'
50
66
  end
51
67
 
@@ -1,6 +1,21 @@
1
- # frozen_string_literal: true
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
2
17
 
3
- require 'atatus/rails'
18
+ # frozen_string_literal: true
4
19
 
5
20
  module Atatus
6
21
  # @api private
@@ -9,13 +24,11 @@ module Atatus
9
24
 
10
25
  Config.schema.each do |key, args|
11
26
  next unless args.length > 1
12
- config.atatus[key] = args.last[:default]
27
+ config.atatus[key] = args[:default]
13
28
  end
14
29
 
15
30
  initializer 'atatus.initialize' do |app|
16
- config = Config.new(app.config.atatus).tap do |c|
17
- c.app = app
18
-
31
+ config = Config.new(app.config.atatus.merge(app: app)).tap do |c|
19
32
  # Prepend Rails.root to log_path if present
20
33
  if c.log_path && !c.log_path.start_with?('/')
21
34
  c.log_path = ::Rails.root.join(c.log_path)
@@ -0,0 +1,29 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ # frozen_string_literal: true
19
+
20
+ module Atatus
21
+ # Defines a before_first_fork hook for starting the Atatus agent
22
+ # with Resque.
23
+ module Resque
24
+ ::Resque.before_first_fork do
25
+ ::Resque.logger.debug('Starting Atatus agent')
26
+ Atatus.start
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,53 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ # frozen_string_literal: true
19
+
20
+ module Atatus
21
+ # Module for starting the Atatus agent and hooking into Sinatra.
22
+ module Sinatra
23
+ extend self
24
+ # Start the Atatus agent and hook into Sinatra.
25
+ #
26
+ # @param app [Sinatra::Base] A Sinatra app.
27
+ # @param config [Config, Hash] An instance of Config or a Hash config.
28
+ # @return [true, nil] true if the agent was started, nil otherwise.
29
+ def start(app, config = {})
30
+ config = Config.new(config) unless config.is_a?(Config)
31
+ configure_app(app, config)
32
+
33
+ Atatus.start(config)
34
+ Atatus.running?
35
+ rescue StandardError => e
36
+ config.logger.error format('Failed to start: %s', e.message)
37
+ config.logger.debug "Backtrace:\n" + e.backtrace.join("\n")
38
+ end
39
+
40
+ private
41
+
42
+ def configure_app(app, config)
43
+ config.service_name ||= format_name(app.to_s)
44
+ config.framework_name ||= 'Sinatra'
45
+ config.framework_version ||= ::Sinatra::VERSION
46
+ config.__root_path ||= Dir.pwd
47
+ end
48
+
49
+ def format_name(str)
50
+ str&.gsub('::', '_')
51
+ end
52
+ end
53
+ end
@@ -1,7 +1,21 @@
1
- # frozen_string_literal: true
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
2
17
 
3
- require 'securerandom'
4
- require 'forwardable'
18
+ # frozen_string_literal: true
5
19
 
6
20
  require 'atatus/span/context'
7
21
 
@@ -9,22 +23,24 @@ module Atatus
9
23
  # @api private
10
24
  class Span
11
25
  extend Forwardable
12
-
13
- def_delegators :@trace_context, :trace_id, :parent_id, :id
26
+ include ChildDurations::Methods
14
27
 
15
28
  DEFAULT_TYPE = 'Custom'
16
29
  DEFAULT_SUBTYPE = 'Ruby'
17
30
 
18
- # rubocop:disable Metrics/ParameterLists, Metrics/MethodLength
31
+ # rubocop:disable Metrics/ParameterLists
19
32
  def initialize(
20
33
  name:,
21
- transaction_id:,
34
+ transaction:,
22
35
  trace_context:,
36
+ parent:,
23
37
  type: nil,
24
38
  subtype: nil,
25
39
  action: nil,
26
40
  context: nil,
27
- stacktrace_builder: nil
41
+ stacktrace_builder: nil,
42
+ sync: nil,
43
+ sample_rate: nil
28
44
  )
29
45
  @name = name
30
46
 
@@ -36,13 +52,18 @@ module Atatus
36
52
  @action = action
37
53
  end
38
54
 
39
- @transaction_id = transaction_id
40
- @trace_context = trace_context
55
+ @transaction = transaction
56
+ @transaction_id = transaction.id
57
+ @parent = parent
58
+ @trace_context = trace_context || parent.trace_context.child
59
+ @sample_rate = transaction.sample_rate
41
60
 
42
- @context = context || Span::Context.new
61
+ @context = context || Span::Context.new(sync: sync)
43
62
  @stacktrace_builder = stacktrace_builder
44
63
  end
45
- # rubocop:enable Metrics/ParameterLists, Metrics/MethodLength
64
+ # rubocop:enable Metrics/ParameterLists
65
+
66
+ def_delegators :@trace_context, :trace_id, :parent_id, :id
46
67
 
47
68
  attr_accessor(
48
69
  :action,
@@ -55,8 +76,12 @@ module Atatus
55
76
  attr_reader(
56
77
  :context,
57
78
  :duration,
79
+ :parent,
80
+ :sample_rate,
81
+ :self_time,
58
82
  :stacktrace,
59
83
  :timestamp,
84
+ :transaction,
60
85
  :transaction_id
61
86
  )
62
87
 
@@ -65,21 +90,25 @@ module Atatus
65
90
  def start(clock_start = Util.monotonic_micros)
66
91
  @timestamp = Util.micros
67
92
  @clock_start = clock_start
93
+ @parent.child_started
68
94
  self
69
95
  end
70
96
 
71
97
  def stop(clock_end = Util.monotonic_micros)
72
98
  @duration ||= (clock_end - @clock_start)
99
+ @parent.child_stopped
100
+ @self_time = @duration - child_durations.duration
73
101
  self
74
102
  end
75
103
 
76
104
  def done(clock_end: Util.monotonic_micros)
77
105
  stop clock_end
106
+ self
107
+ end
78
108
 
109
+ def prepare_for_serialization!
79
110
  # build_stacktrace! if should_build_stacktrace?
80
111
  self.original_backtrace = nil # release original
81
-
82
- self
83
112
  end
84
113
 
85
114
  def stopped?
@@ -97,7 +126,7 @@ module Atatus
97
126
  # relations
98
127
 
99
128
  def inspect
100
- "<Atatus::Span id:#{id}" \
129
+ "<Atatus::Span id:#{trace_context&.id}" \
101
130
  " name:#{name.inspect}" \
102
131
  " type:#{type.inspect}" \
103
132
  '>'
@@ -1,40 +1,55 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
1
18
  # frozen_string_literal: true
2
19
 
3
20
  module Atatus
4
21
  class Span
5
22
  # @api private
6
23
  class Context
7
- def initialize(db: nil, http: nil, labels: {})
8
- @sync = true
9
- @db = db && Db.new(db)
10
- @http = http && Http.new(http)
24
+ def initialize(
25
+ db: nil,
26
+ destination: nil,
27
+ http: nil,
28
+ labels: {},
29
+ sync: nil
30
+ )
31
+ @sync = sync
32
+ @db = db && Db.new(**db)
33
+ @http = http && Http.new(**http)
34
+ @destination =
35
+ case destination
36
+ when Destination then destination
37
+ when Hash then Destination.new(**destination)
38
+ end
11
39
  @labels = labels
12
40
  end
13
41
 
14
- attr_accessor :sync, :db, :http, :labels
15
-
16
- # @api private
17
- class Db
18
- def initialize(instance: nil, statement: nil, type: nil, user: nil)
19
- @instance = instance
20
- @statement = statement
21
- @type = type
22
- @user = user
23
- end
24
-
25
- attr_accessor :instance, :statement, :type, :user
26
- end
27
-
28
- # @api private
29
- class Http
30
- def initialize(url: nil, status_code: nil, method: nil)
31
- @url = url
32
- @status_code = status_code
33
- @method = method
34
- end
35
-
36
- attr_accessor :url, :status_code, :method
37
- end
42
+ attr_reader(
43
+ :db,
44
+ :destination,
45
+ :http,
46
+ :labels,
47
+ :sync
48
+ )
38
49
  end
39
50
  end
40
51
  end
52
+
53
+ require 'atatus/span/context/db'
54
+ require 'atatus/span/context/http'
55
+ require 'atatus/span/context/destination'
@@ -0,0 +1,43 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ # frozen_string_literal: true
19
+
20
+ module Atatus
21
+ class Span
22
+ class Context
23
+ # @api private
24
+ class Db
25
+ def initialize(
26
+ instance: nil,
27
+ statement: nil,
28
+ type: nil,
29
+ user: nil,
30
+ rows_affected: nil
31
+ )
32
+ @instance = instance
33
+ @statement = statement
34
+ @type = type
35
+ @user = user
36
+ @rows_affected = rows_affected
37
+ end
38
+
39
+ attr_accessor :instance, :statement, :type, :user, :rows_affected
40
+ end
41
+ end
42
+ end
43
+ end