ddtrace 0.35.2 → 0.40.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (177) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +59 -1
  3. data/.gitignore +2 -0
  4. data/.gitlab-ci.yml +27 -0
  5. data/.rubocop.yml +4 -0
  6. data/.simplecov +38 -0
  7. data/Appraisals +139 -12
  8. data/CHANGELOG.md +185 -1
  9. data/Rakefile +524 -464
  10. data/ddtrace.gemspec +6 -0
  11. data/docker-compose.yml +37 -2
  12. data/docs/DevelopmentGuide.md +16 -0
  13. data/docs/GettingStarted.md +192 -111
  14. data/lib/ddtrace.rb +4 -0
  15. data/lib/ddtrace/configuration.rb +36 -5
  16. data/lib/ddtrace/configuration/components.rb +4 -7
  17. data/lib/ddtrace/configuration/pin_setup.rb +3 -2
  18. data/lib/ddtrace/configuration/settings.rb +27 -3
  19. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +7 -2
  20. data/lib/ddtrace/contrib/action_cable/ext.rb +5 -2
  21. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +7 -2
  22. data/lib/ddtrace/contrib/action_pack/ext.rb +5 -2
  23. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +7 -2
  24. data/lib/ddtrace/contrib/action_view/ext.rb +5 -2
  25. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +7 -2
  26. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +5 -2
  27. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +7 -2
  28. data/lib/ddtrace/contrib/active_record/ext.rb +5 -2
  29. data/lib/ddtrace/contrib/active_support/cache/redis.rb +1 -1
  30. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +7 -2
  31. data/lib/ddtrace/contrib/active_support/ext.rb +5 -2
  32. data/lib/ddtrace/contrib/active_support/notifications/event.rb +3 -1
  33. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +1 -1
  34. data/lib/ddtrace/contrib/aws/configuration/settings.rb +7 -2
  35. data/lib/ddtrace/contrib/aws/ext.rb +5 -2
  36. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +5 -0
  37. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +9 -3
  38. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +1 -0
  39. data/lib/ddtrace/contrib/configuration/settings.rb +19 -0
  40. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +7 -2
  41. data/lib/ddtrace/contrib/dalli/ext.rb +5 -2
  42. data/lib/ddtrace/contrib/dalli/patcher.rb +1 -5
  43. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +7 -2
  44. data/lib/ddtrace/contrib/delayed_job/ext.rb +5 -2
  45. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +7 -2
  46. data/lib/ddtrace/contrib/elasticsearch/ext.rb +5 -2
  47. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -2
  48. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +7 -2
  49. data/lib/ddtrace/contrib/ethon/ext.rb +5 -2
  50. data/lib/ddtrace/contrib/excon/configuration/settings.rb +7 -2
  51. data/lib/ddtrace/contrib/excon/ext.rb +5 -2
  52. data/lib/ddtrace/contrib/extensions.rb +39 -5
  53. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +7 -2
  54. data/lib/ddtrace/contrib/faraday/ext.rb +5 -2
  55. data/lib/ddtrace/contrib/faraday/middleware.rb +5 -3
  56. data/lib/ddtrace/contrib/faraday/patcher.rb +13 -5
  57. data/lib/ddtrace/contrib/grape/configuration/settings.rb +7 -3
  58. data/lib/ddtrace/contrib/grape/ext.rb +5 -2
  59. data/lib/ddtrace/contrib/grape/patcher.rb +1 -1
  60. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +7 -2
  61. data/lib/ddtrace/contrib/graphql/ext.rb +5 -2
  62. data/lib/ddtrace/contrib/graphql/patcher.rb +6 -3
  63. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +7 -2
  64. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +1 -1
  65. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +1 -3
  66. data/lib/ddtrace/contrib/grpc/ext.rb +5 -2
  67. data/lib/ddtrace/contrib/grpc/patcher.rb +1 -5
  68. data/lib/ddtrace/contrib/http/configuration/settings.rb +7 -2
  69. data/lib/ddtrace/contrib/http/ext.rb +5 -2
  70. data/lib/ddtrace/contrib/http/instrumentation.rb +12 -7
  71. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +32 -0
  72. data/lib/ddtrace/contrib/httprb/ext.rb +17 -0
  73. data/lib/ddtrace/contrib/httprb/instrumentation.rb +160 -0
  74. data/lib/ddtrace/contrib/httprb/integration.rb +43 -0
  75. data/lib/ddtrace/contrib/httprb/patcher.rb +35 -0
  76. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +30 -0
  77. data/lib/ddtrace/contrib/kafka/consumer_event.rb +14 -0
  78. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +14 -0
  79. data/lib/ddtrace/contrib/kafka/event.rb +51 -0
  80. data/lib/ddtrace/contrib/kafka/events.rb +44 -0
  81. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +34 -0
  82. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +41 -0
  83. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +39 -0
  84. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +39 -0
  85. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +29 -0
  86. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +29 -0
  87. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +29 -0
  88. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +32 -0
  89. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +35 -0
  90. data/lib/ddtrace/contrib/kafka/ext.rb +41 -0
  91. data/lib/ddtrace/contrib/kafka/integration.rb +39 -0
  92. data/lib/ddtrace/contrib/kafka/patcher.rb +26 -0
  93. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +7 -2
  94. data/lib/ddtrace/contrib/mongodb/ext.rb +5 -2
  95. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +1 -2
  96. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +7 -2
  97. data/lib/ddtrace/contrib/mysql2/ext.rb +5 -2
  98. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +1 -1
  99. data/lib/ddtrace/contrib/patcher.rb +14 -8
  100. data/lib/ddtrace/contrib/presto/configuration/settings.rb +7 -2
  101. data/lib/ddtrace/contrib/presto/ext.rb +5 -2
  102. data/lib/ddtrace/contrib/que/configuration/settings.rb +42 -0
  103. data/lib/ddtrace/contrib/que/ext.rb +30 -0
  104. data/lib/ddtrace/contrib/que/integration.rb +42 -0
  105. data/lib/ddtrace/contrib/que/patcher.rb +24 -0
  106. data/lib/ddtrace/contrib/que/tracer.rb +56 -0
  107. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +7 -2
  108. data/lib/ddtrace/contrib/racecar/events.rb +2 -0
  109. data/lib/ddtrace/contrib/racecar/events/consume.rb +27 -0
  110. data/lib/ddtrace/contrib/racecar/ext.rb +6 -2
  111. data/lib/ddtrace/contrib/rack/configuration/settings.rb +7 -2
  112. data/lib/ddtrace/contrib/rack/ext.rb +5 -2
  113. data/lib/ddtrace/contrib/rack/middlewares.rb +17 -12
  114. data/lib/ddtrace/contrib/rails/configuration/settings.rb +10 -11
  115. data/lib/ddtrace/contrib/rails/ext.rb +6 -2
  116. data/lib/ddtrace/contrib/rails/framework.rb +52 -46
  117. data/lib/ddtrace/contrib/rails/integration.rb +1 -1
  118. data/lib/ddtrace/contrib/rails/log_injection.rb +81 -0
  119. data/lib/ddtrace/contrib/rails/middlewares.rb +7 -2
  120. data/lib/ddtrace/contrib/rails/patcher.rb +15 -0
  121. data/lib/ddtrace/contrib/rake/configuration/settings.rb +7 -3
  122. data/lib/ddtrace/contrib/rake/ext.rb +5 -2
  123. data/lib/ddtrace/contrib/redis/configuration/settings.rb +7 -2
  124. data/lib/ddtrace/contrib/redis/ext.rb +5 -2
  125. data/lib/ddtrace/contrib/redis/patcher.rb +1 -1
  126. data/lib/ddtrace/contrib/resque/configuration/settings.rb +7 -2
  127. data/lib/ddtrace/contrib/resque/ext.rb +5 -2
  128. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +7 -2
  129. data/lib/ddtrace/contrib/rest_client/ext.rb +5 -2
  130. data/lib/ddtrace/contrib/rest_client/request_patch.rb +2 -2
  131. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +7 -2
  132. data/lib/ddtrace/contrib/sequel/database.rb +1 -1
  133. data/lib/ddtrace/contrib/sequel/ext.rb +5 -2
  134. data/lib/ddtrace/contrib/sequel/utils.rb +19 -1
  135. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +7 -2
  136. data/lib/ddtrace/contrib/shoryuken/ext.rb +5 -2
  137. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +7 -2
  138. data/lib/ddtrace/contrib/sidekiq/ext.rb +6 -2
  139. data/lib/ddtrace/contrib/sidekiq/patcher.rb +8 -1
  140. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +1 -0
  141. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +7 -2
  142. data/lib/ddtrace/contrib/sinatra/env.rb +5 -4
  143. data/lib/ddtrace/contrib/sinatra/ext.rb +5 -2
  144. data/lib/ddtrace/contrib/sinatra/tracer.rb +21 -42
  145. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +50 -23
  146. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +32 -0
  147. data/lib/ddtrace/contrib/sneakers/ext.rb +22 -0
  148. data/lib/ddtrace/contrib/sneakers/integration.rb +41 -0
  149. data/lib/ddtrace/contrib/sneakers/patcher.rb +24 -0
  150. data/lib/ddtrace/contrib/sneakers/tracer.rb +58 -0
  151. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +7 -2
  152. data/lib/ddtrace/contrib/sucker_punch/ext.rb +5 -2
  153. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +1 -1
  154. data/lib/ddtrace/diagnostics/environment_logger.rb +278 -0
  155. data/lib/ddtrace/environment.rb +17 -3
  156. data/lib/ddtrace/ext/diagnostics.rb +3 -0
  157. data/lib/ddtrace/ext/environment.rb +2 -0
  158. data/lib/ddtrace/ext/transport.rb +1 -0
  159. data/lib/ddtrace/logger.rb +1 -1
  160. data/lib/ddtrace/pin.rb +39 -15
  161. data/lib/ddtrace/pipeline/span_filter.rb +15 -15
  162. data/lib/ddtrace/runtime/metrics.rb +18 -4
  163. data/lib/ddtrace/sampler.rb +2 -0
  164. data/lib/ddtrace/span.rb +10 -0
  165. data/lib/ddtrace/tracer.rb +15 -8
  166. data/lib/ddtrace/transport/http.rb +15 -0
  167. data/lib/ddtrace/transport/http/adapters/net.rb +8 -0
  168. data/lib/ddtrace/transport/http/adapters/test.rb +6 -0
  169. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +4 -0
  170. data/lib/ddtrace/transport/response.rb +11 -0
  171. data/lib/ddtrace/version.rb +2 -2
  172. data/lib/ddtrace/workers/async.rb +2 -2
  173. data/lib/ddtrace/workers/loop.rb +1 -1
  174. data/lib/ddtrace/workers/polling.rb +1 -1
  175. data/lib/ddtrace/workers/trace_writer.rb +3 -0
  176. data/lib/ddtrace/writer.rb +33 -12
  177. metadata +124 -4
@@ -0,0 +1,43 @@
1
+ require 'ddtrace/contrib/integration'
2
+ require 'ddtrace/contrib/httprb/configuration/settings'
3
+ require 'ddtrace/contrib/configuration/resolvers/pattern_resolver'
4
+ require 'ddtrace/contrib/httprb/patcher'
5
+
6
+ module Datadog
7
+ module Contrib
8
+ module Httprb
9
+ # Description of Httprb integration
10
+ class Integration
11
+ include Contrib::Integration
12
+
13
+ MINIMUM_VERSION = Gem::Version.new('2.0.0')
14
+
15
+ register_as :httprb
16
+
17
+ def self.version
18
+ Gem.loaded_specs['http'] && Gem.loaded_specs['http'].version
19
+ end
20
+
21
+ def self.loaded?
22
+ !defined?(::HTTP).nil? && !defined?(::HTTP::Client).nil?
23
+ end
24
+
25
+ def self.compatible?
26
+ super && version >= MINIMUM_VERSION
27
+ end
28
+
29
+ def default_configuration
30
+ Configuration::Settings.new
31
+ end
32
+
33
+ def patcher
34
+ Patcher
35
+ end
36
+
37
+ def resolver
38
+ @resolver ||= Contrib::Configuration::Resolvers::PatternResolver.new
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,35 @@
1
+ require 'ddtrace/contrib/patcher'
2
+ require 'ddtrace/contrib/httprb/instrumentation'
3
+
4
+ module Datadog
5
+ module Contrib
6
+ # Datadog Httprb integration.
7
+ module Httprb
8
+ # Patcher enables patching of 'httprb' module.
9
+ module Patcher
10
+ include Contrib::Patcher
11
+
12
+ module_function
13
+
14
+ def patched?
15
+ done?(:httprb)
16
+ end
17
+
18
+ def target_version
19
+ Integration.version
20
+ end
21
+
22
+ # patch applies our patch
23
+ def patch
24
+ do_once(:httprb) do
25
+ begin
26
+ ::HTTP::Client.send(:include, Instrumentation)
27
+ rescue StandardError => e
28
+ Datadog::Logger.error("Unable to apply httprb integration: #{e}")
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,30 @@
1
+ require 'ddtrace/contrib/configuration/settings'
2
+ require 'ddtrace/contrib/kafka/ext'
3
+
4
+ module Datadog
5
+ module Contrib
6
+ module Kafka
7
+ module Configuration
8
+ # Custom settings for the Kafka integration
9
+ class Settings < Contrib::Configuration::Settings
10
+ option :enabled do |o|
11
+ o.default { env_to_bool(Ext::ENV_ENABLED, true) }
12
+ o.lazy
13
+ end
14
+
15
+ option :analytics_enabled do |o|
16
+ o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], false) }
17
+ o.lazy
18
+ end
19
+
20
+ option :analytics_sample_rate do |o|
21
+ o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
22
+ o.lazy
23
+ end
24
+
25
+ option :service_name, default: Ext::SERVICE_NAME
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,14 @@
1
+ module Datadog
2
+ module Contrib
3
+ module Kafka
4
+ # Defines basic behaviors for an event for a consumer.
5
+ module ConsumerEvent
6
+ def process(span, _event, _id, payload)
7
+ super
8
+
9
+ span.set_tag(Ext::TAG_GROUP, payload[:group_id])
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Datadog
2
+ module Contrib
3
+ module Kafka
4
+ # Defines basic behaviors for an event for a consumer group.
5
+ module ConsumerGroupEvent
6
+ def process(span, _event, _id, payload)
7
+ super
8
+
9
+ span.resource = payload[:group_id]
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,51 @@
1
+ require 'ddtrace/contrib/analytics'
2
+ require 'ddtrace/contrib/active_support/notifications/event'
3
+ require 'ddtrace/contrib/kafka/ext'
4
+
5
+ module Datadog
6
+ module Contrib
7
+ module Kafka
8
+ # Defines basic behaviors for an ActiveSupport event.
9
+ module Event
10
+ def self.included(base)
11
+ base.send(:include, ActiveSupport::Notifications::Event)
12
+ base.send(:extend, ClassMethods)
13
+ end
14
+
15
+ # Class methods for Kafka events.
16
+ module ClassMethods
17
+ def event_name
18
+ self::EVENT_NAME
19
+ end
20
+
21
+ def span_options
22
+ { service: configuration[:service_name] }
23
+ end
24
+
25
+ def tracer
26
+ -> { configuration[:tracer] }
27
+ end
28
+
29
+ def configuration
30
+ Datadog.configuration[:kafka]
31
+ end
32
+
33
+ def process(span, _event, _id, payload)
34
+ span.service = configuration[:service_name]
35
+ span.set_tag(Ext::TAG_CLIENT, payload[:client_id])
36
+
37
+ # Set analytics sample rate
38
+ if Contrib::Analytics.enabled?(configuration[:analytics_enabled])
39
+ Contrib::Analytics.set_sample_rate(span, configuration[:analytics_sample_rate])
40
+ end
41
+
42
+ # Measure service stats
43
+ Contrib::Analytics.set_measured(span)
44
+
45
+ span.set_error(payload[:exception_object]) if payload[:exception_object]
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,44 @@
1
+ require 'ddtrace/contrib/kafka/events/connection/request'
2
+ require 'ddtrace/contrib/kafka/events/consumer/process_batch'
3
+ require 'ddtrace/contrib/kafka/events/consumer/process_message'
4
+ require 'ddtrace/contrib/kafka/events/consumer_group/heartbeat'
5
+ require 'ddtrace/contrib/kafka/events/consumer_group/join_group'
6
+ require 'ddtrace/contrib/kafka/events/consumer_group/leave_group'
7
+ require 'ddtrace/contrib/kafka/events/consumer_group/sync_group'
8
+ require 'ddtrace/contrib/kafka/events/produce_operation/send_messages'
9
+ require 'ddtrace/contrib/kafka/events/producer/deliver_messages'
10
+
11
+ module Datadog
12
+ module Contrib
13
+ module Kafka
14
+ # Defines collection of instrumented Kafka events
15
+ module Events
16
+ ALL = [
17
+ Events::Connection::Request,
18
+ Events::Consumer::ProcessBatch,
19
+ Events::Consumer::ProcessMessage,
20
+ Events::ConsumerGroup::Heartbeat,
21
+ Events::ConsumerGroup::JoinGroup,
22
+ Events::ConsumerGroup::LeaveGroup,
23
+ Events::ConsumerGroup::SyncGroup,
24
+ Events::ProduceOperation::SendMessages,
25
+ Events::Producer::DeliverMessages
26
+ ].freeze
27
+
28
+ module_function
29
+
30
+ def all
31
+ self::ALL
32
+ end
33
+
34
+ def subscriptions
35
+ all.collect(&:subscriptions).collect(&:to_a).flatten
36
+ end
37
+
38
+ def subscribe!
39
+ all.each(&:subscribe!)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,34 @@
1
+ require 'ddtrace/contrib/kafka/ext'
2
+ require 'ddtrace/contrib/kafka/event'
3
+
4
+ module Datadog
5
+ module Contrib
6
+ module Kafka
7
+ module Events
8
+ module Connection
9
+ # Defines instrumentation for request.connection.kafka event
10
+ module Request
11
+ include Kafka::Event
12
+
13
+ EVENT_NAME = 'request.connection.kafka'.freeze
14
+
15
+ def self.process(span, _event, _id, payload)
16
+ super
17
+
18
+ span.resource = payload[:api]
19
+
20
+ span.set_tag(Ext::TAG_REQUEST_SIZE, payload[:request_size]) if payload.key?(:request_size)
21
+ span.set_tag(Ext::TAG_RESPONSE_SIZE, payload[:response_size]) if payload.key?(:response_size)
22
+ end
23
+
24
+ module_function
25
+
26
+ def span_name
27
+ Ext::SPAN_CONNECTION_REQUEST
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,41 @@
1
+ require 'ddtrace/contrib/kafka/ext'
2
+ require 'ddtrace/contrib/kafka/event'
3
+ require 'ddtrace/contrib/kafka/consumer_event'
4
+
5
+ module Datadog
6
+ module Contrib
7
+ module Kafka
8
+ module Events
9
+ module Consumer
10
+ # Defines instrumentation for process_batch.consumer.kafka event
11
+ module ProcessBatch
12
+ include Kafka::Event
13
+ extend Kafka::ConsumerEvent
14
+
15
+ EVENT_NAME = 'process_batch.consumer.kafka'.freeze
16
+
17
+ def self.process(span, _event, _id, payload)
18
+ super
19
+
20
+ span.resource = payload[:topic]
21
+
22
+ span.set_tag(Ext::TAG_TOPIC, payload[:topic]) if payload.key?(:topic)
23
+ span.set_tag(Ext::TAG_MESSAGE_COUNT, payload[:message_count]) if payload.key?(:message_count)
24
+ span.set_tag(Ext::TAG_PARTITION, payload[:partition]) if payload.key?(:partition)
25
+ if payload.key?(:highwater_mark_offset)
26
+ span.set_tag(Ext::TAG_HIGHWATER_MARK_OFFSET, payload[:highwater_mark_offset])
27
+ end
28
+ span.set_tag(Ext::TAG_OFFSET_LAG, payload[:offset_lag]) if payload.key?(:offset_lag)
29
+ end
30
+
31
+ module_function
32
+
33
+ def span_name
34
+ Ext::SPAN_PROCESS_BATCH
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,39 @@
1
+ require 'ddtrace/contrib/kafka/ext'
2
+ require 'ddtrace/contrib/kafka/event'
3
+ require 'ddtrace/contrib/kafka/consumer_event'
4
+
5
+ module Datadog
6
+ module Contrib
7
+ module Kafka
8
+ module Events
9
+ module Consumer
10
+ # Defines instrumentation for process_message.consumer.kafka event
11
+ module ProcessMessage
12
+ include Kafka::Event
13
+ extend Kafka::ConsumerEvent
14
+
15
+ EVENT_NAME = 'process_message.consumer.kafka'.freeze
16
+
17
+ def self.process(span, _event, _id, payload)
18
+ super
19
+
20
+ span.resource = payload[:topic]
21
+
22
+ span.set_tag(Ext::TAG_TOPIC, payload[:topic]) if payload.key?(:topic)
23
+ span.set_tag(Ext::TAG_MESSAGE_KEY, payload[:key]) if payload.key?(:key)
24
+ span.set_tag(Ext::TAG_PARTITION, payload[:partition]) if payload.key?(:partition)
25
+ span.set_tag(Ext::TAG_OFFSET, payload[:offset]) if payload.key?(:offset)
26
+ span.set_tag(Ext::TAG_OFFSET_LAG, payload[:offset_lag]) if payload.key?(:offset_lag)
27
+ end
28
+
29
+ module_function
30
+
31
+ def span_name
32
+ Ext::SPAN_PROCESS_MESSAGE
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,39 @@
1
+ require 'ddtrace/contrib/kafka/ext'
2
+ require 'ddtrace/contrib/kafka/event'
3
+ require 'ddtrace/contrib/kafka/consumer_event'
4
+ require 'ddtrace/contrib/kafka/consumer_group_event'
5
+
6
+ module Datadog
7
+ module Contrib
8
+ module Kafka
9
+ module Events
10
+ module ConsumerGroup
11
+ # Defines instrumentation for heartbeat.consumer.kafka event
12
+ module Heartbeat
13
+ include Kafka::Event
14
+ extend Kafka::ConsumerEvent
15
+ extend Kafka::ConsumerGroupEvent
16
+
17
+ EVENT_NAME = 'heartbeat.consumer.kafka'.freeze
18
+
19
+ def self.process(span, _event, _id, payload)
20
+ super
21
+
22
+ if payload.key?(:topic_partitions)
23
+ payload[:topic_partitions].each do |topic, partitions|
24
+ span.set_tag("#{Ext::TAG_TOPIC_PARTITIONS}.#{topic}", partitions)
25
+ end
26
+ end
27
+ end
28
+
29
+ module_function
30
+
31
+ def span_name
32
+ Ext::SPAN_CONSUMER_HEARTBEAT
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,29 @@
1
+ require 'ddtrace/contrib/kafka/ext'
2
+ require 'ddtrace/contrib/kafka/event'
3
+ require 'ddtrace/contrib/kafka/consumer_event'
4
+ require 'ddtrace/contrib/kafka/consumer_group_event'
5
+
6
+ module Datadog
7
+ module Contrib
8
+ module Kafka
9
+ module Events
10
+ module ConsumerGroup
11
+ # Defines instrumentation for join_group.consumer.kafka event
12
+ module JoinGroup
13
+ include Kafka::Event
14
+ extend Kafka::ConsumerEvent
15
+ extend Kafka::ConsumerGroupEvent
16
+
17
+ EVENT_NAME = 'join_group.consumer.kafka'.freeze
18
+
19
+ module_function
20
+
21
+ def span_name
22
+ Ext::SPAN_CONSUMER_JOIN_GROUP
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ require 'ddtrace/contrib/kafka/ext'
2
+ require 'ddtrace/contrib/kafka/event'
3
+ require 'ddtrace/contrib/kafka/consumer_event'
4
+ require 'ddtrace/contrib/kafka/consumer_group_event'
5
+
6
+ module Datadog
7
+ module Contrib
8
+ module Kafka
9
+ module Events
10
+ module ConsumerGroup
11
+ # Defines instrumentation for leave_group.consumer.kafka event
12
+ module LeaveGroup
13
+ include Kafka::Event
14
+ extend Kafka::ConsumerEvent
15
+ extend Kafka::ConsumerGroupEvent
16
+
17
+ EVENT_NAME = 'leave_group.consumer.kafka'.freeze
18
+
19
+ module_function
20
+
21
+ def span_name
22
+ Ext::SPAN_CONSUMER_LEAVE_GROUP
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end