minato-trace 0.2.0 → 1.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dad2393fa9ef79aa9bd7819bc96cb454d0d5def4183dd3feabbf616cbb5527d8
4
- data.tar.gz: 1625ebc64178e9ab8af1603af99878d9c237a7819e1cc43ff813d2a6af635f27
3
+ metadata.gz: abaab6f1d94d35a7bb32bd461e843bb82cbb7e9920992b92cee8c3c1349e1f5c
4
+ data.tar.gz: '012468667f02897aa987032acb3ef00cd8306a7dce33ab5be8fba48302ed6fea'
5
5
  SHA512:
6
- metadata.gz: ec570765bf6793ca52a6abec7fe08013c2b94fdaa94b6a42b64e5cf4d4b2ea80b60f2ed3ee771703fa1ba27540a077ada6845d1cd5e20e97f5b5287d390d51b2
7
- data.tar.gz: ac27594c416905799c1008b54b40b910cbb1f1feecc7546219549ca197f8e2729181e08f4851322c9c19c2513a01dcdae344aa0fdbeedb40e4e0aac19f553ac4
6
+ metadata.gz: 85a8112afede40d0f3272d19938966d515f6d14d505e01afdccdbca0cd5aa7cbfaab94e6116963c587f4db9e8346e75986a31c2961201c13455c87fa2f75902a
7
+ data.tar.gz: 20b9d7c2b5332bca6aee82e81d85381191d5c455efba0586a24b382966f052b75b698dbfb2389c288e9f67b307754ab065296bdfcc729b7dfd7d422885d28a21
@@ -0,0 +1,102 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "opentelemetry/sdk"
4
+ require "opentelemetry/exporter/otlp"
5
+
6
+ module Minato
7
+ module Trace
8
+ class Configuration
9
+ # Indicates whether the trace functionality is enabled.
10
+ # This can be controlled via the `MINATO_TRACE_DISABLED` environment variable.
11
+ # If set to "true", tracing will be disabled.
12
+ # Default is true, meaning tracing is enabled unless explicitly disabled.
13
+ # Example: `ENV["MINATO_TRACE_DISABLED"] = "true"` will disable tracing
14
+ attr_accessor :enabled
15
+
16
+ # The name of the service to be used in Google Cloud Trace.
17
+ # This is used to identify the service in the Google Cloud Console.
18
+ # It should be a unique name that represents your application.
19
+ # Example: "my-rails-app"
20
+ attr_accessor :service_name
21
+
22
+ # This is the endpoint where traces will be sent.
23
+ # Default is google's Cloud Trace endpoint.
24
+ # You can modify this endpoint if you are using a different trace service.
25
+ # Example: "https://cloudtrace.googleapis.com/v1/projects/my-gcp-project-id/traces"
26
+ attr_accessor :otlp_endpoint
27
+
28
+ # A list of routes that should be excluded from tracing.
29
+ # These routes will not be traced, which is useful for health check endpoints
30
+ # or other endpoints that do not require tracing.
31
+ # Default is ["/health/alive", "/health/ready"].
32
+ # You can modify this list to include any other routes you want to exclude.
33
+ attr_reader :excluded_routes
34
+
35
+ # The runtime environment in which the application is running.
36
+ # It can be used to differentiate between environments for logging or tracing purposes.
37
+ # Default is the value of the `RUNTIME_ENV` environment variable or Rails environment.
38
+ # If `RUNTIME_ENV` is not set, it will default to `Rails.env
39
+ # Example: "production"
40
+ attr_reader :runtime_environment
41
+
42
+ # The ID of the project on Google Cloud
43
+ # It's used to generate official links betewwn the Cloud Trace and the Cloud Logging
44
+ # Example: "meu-gcp-project-id"
45
+ attr_accessor :project_id
46
+
47
+ def initialize
48
+ @enabled = ENV["MINATO_TRACE_DISABLED"] != "true"
49
+ @service_name = nil
50
+ @otlp_endpoint = ENV["OTEL_EXPORTER_OTLP_ENDPOINT"] || nil
51
+ @excluded_routes = ["/health/alive", "/health/ready"]
52
+ @runtime_environment = ENV["RUNTIME_ENV"] || ENV["RAILS_ENV"] || nil
53
+ @project_id = ENV["GOOGLE_CLOUD_PROJECT"] || ENV["GCP_PROJECT"] || nil
54
+ end
55
+
56
+ def excluded_routes=(routes)
57
+ @excluded_routes = Array(routes).map(&:to_s).uniq
58
+ end
59
+
60
+ def enabled?
61
+ @enabled
62
+ end
63
+
64
+ def disable!
65
+ @enabled = false
66
+ end
67
+
68
+ def enable!
69
+ @enabled = true
70
+ end
71
+
72
+ def otlp_exporter
73
+ OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
74
+ OpenTelemetry::Exporter::OTLP::Exporter.new(
75
+ endpoint: otlp_endpoint
76
+ ),
77
+ max_queue_size: 1000,
78
+ schedule_delay: 1000,
79
+ max_export_batch_size: 100
80
+ )
81
+ end
82
+
83
+ def console_exporter
84
+ OpenTelemetry::SDK::Trace::Export::SimpleSpanProcessor.new(
85
+ OpenTelemetry::SDK::Trace::Export::ConsoleSpanExporter.new
86
+ )
87
+ end
88
+
89
+ def exporter
90
+ otlp_endpoint.nil? ? console_exporter : otlp_exporter
91
+ end
92
+
93
+ def ot_resources
94
+ resources = {
95
+ OpenTelemetry::SemanticConventions::Resource::SERVICE_NAME => service_name,
96
+ OpenTelemetry::SemanticConventions::Resource::DEPLOYMENT_ENVIRONMENT => runtime_environment
97
+ }
98
+ OpenTelemetry::SDK::Resources::Resource.create(resources)
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Minato
4
+ module Trace
5
+ module Instrumentation
6
+ class MinatoLogger < OpenTelemetry::Instrumentation::Base
7
+ class Middleware
8
+ def call(log)
9
+ span = OpenTelemetry::Trace.current_span
10
+
11
+ return log unless span.context.valid?
12
+
13
+ data = trace_data(span)
14
+ log.merge(data)
15
+ end
16
+
17
+ private
18
+
19
+ def trace_data(span)
20
+ data = {
21
+ "trace_id" => span.context.hex_trace_id,
22
+ "span_id" => span.context.hex_span_id
23
+ }
24
+ trace_data = otel_data(data, span)
25
+
26
+ data.merge(trace_data)
27
+ end
28
+
29
+ def otel_data(data, span)
30
+ project_id = Minato::Trace.config.project_id
31
+ return {} if project_id.blank?
32
+
33
+ {
34
+ "logging.googleapis.com/trace" => "projects/#{project_id}/traces/#{data["trace_id"]}",
35
+ "logging.googleapis.com/spanId" => data["span_id"],
36
+ "logging.googleapis.com/trace_sampled" => span.context.trace_flags.sampled?
37
+ }
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "opentelemetry/instrumentation/base"
4
+ require_relative "minato_logger/middleware"
5
+
6
+ module Minato
7
+ module Trace
8
+ module Instrumentation
9
+ class MinatoLogger < OpenTelemetry::Instrumentation::Base
10
+ instrumentation_name "Minato::Trace::Instrumentation::MinatoLogger"
11
+ instrumentation_version Minato::Trace::VERSION
12
+
13
+ present do
14
+ defined?(::MinatoLogger::Formatters::FluentBit)
15
+ end
16
+
17
+ install do |_config|
18
+ require_relative "minato_logger/middleware"
19
+
20
+ Rails.application.config.after_initialize do
21
+ if Rails.application.config.respond_to?(:minato_logger)
22
+ Rails.application.config.minato_logger.middleware.use(
23
+ Minato::Trace::Instrumentation::MinatoLogger::Middleware
24
+ )
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,11 +1,61 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "opentelemetry/sdk"
4
+ require "opentelemetry/exporter/otlp"
5
+ require "opentelemetry/resource/detector"
6
+
7
+ require "opentelemetry/instrumentation/rack"
8
+ require "opentelemetry/instrumentation/action_pack"
9
+ require "opentelemetry/instrumentation/active_record"
10
+ require "opentelemetry/instrumentation/active_job"
11
+ require "opentelemetry/instrumentation/net/http"
12
+ require "opentelemetry/instrumentation/faraday"
13
+ require "opentelemetry/instrumentation/http"
14
+ require "opentelemetry/instrumentation/active_model_serializers"
15
+ require "opentelemetry/instrumentation/concurrent_ruby"
16
+ require "opentelemetry/instrumentation/redis"
17
+
18
+ require "minato/trace/instrumentation/minato_logger"
19
+ require "rails"
20
+
3
21
  module Minato
4
22
  module Trace
5
23
  class Railtie < ::Rails::Railtie
6
- initializer "minato_trace_setup",
7
- before: "load_environment_config" do |app|
8
- Minato::Trace.init(app)
24
+ config.minato_trace = ActiveSupport::OrderedOptions.new
25
+
26
+ initializer "minato_trace.configure", after: :load_config_initializers do |_app|
27
+ next unless Minato::Trace.config.enabled?
28
+
29
+ unless Minato::Trace.config.service_name
30
+ raise Minato::Trace::Error, "Minato Trace service_name configuration is missing."
31
+ end
32
+
33
+ OpenTelemetry::SDK.configure do |c|
34
+ c.service_name = Minato::Trace.config.service_name
35
+ app_resource = Minato::Trace.config.ot_resources
36
+ gcp_resource = OpenTelemetry::Resource::Detector::GoogleCloudPlatform.detect
37
+ c.resource = gcp_resource.merge(app_resource)
38
+
39
+ c.use "OpenTelemetry::Instrumentation::Rack", {
40
+ enabled: true,
41
+ untraced_endpoints: Minato::Trace.config.excluded_routes
42
+ }
43
+ c.use "OpenTelemetry::Instrumentation::ActionPack"
44
+
45
+ c.use "OpenTelemetry::Instrumentation::ActiveRecord"
46
+ c.use "OpenTelemetry::Instrumentation::ActiveJob"
47
+ c.use "OpenTelemetry::Instrumentation::Redis"
48
+
49
+ c.use "OpenTelemetry::Instrumentation::Net::HTTP"
50
+ c.use "OpenTelemetry::Instrumentation::Faraday"
51
+ c.use "OpenTelemetry::Instrumentation::HTTP"
52
+
53
+ c.use "OpenTelemetry::Instrumentation::ActiveModelSerializers"
54
+ c.use "OpenTelemetry::Instrumentation::ConcurrentRuby"
55
+ c.use "Minato::Trace::Instrumentation::MinatoLogger", { enabled: true }
56
+
57
+ c.add_span_processor(Minato::Trace.config.exporter)
58
+ end
9
59
  end
10
60
  end
11
61
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Minato
4
4
  module Trace
5
- VERSION = "0.2.0"
5
+ VERSION = "1.0.0"
6
6
  end
7
7
  end
data/lib/minato/trace.rb CHANGED
@@ -1,45 +1,35 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "minato/trace/version"
4
- require "minato/trace/middleware"
5
-
6
- if defined? Rails::Railtie
7
- require "google/cloud/trace/rails"
8
- require "minato/trace/railtie"
4
+ require "minato/trace/configuration"
5
+ require "opentelemetry-sdk"
6
+ begin
7
+ require "rails/railtie"
8
+ rescue LoadError => e
9
+ Rails.logger.debug e
9
10
  end
11
+ require "minato/trace/railtie" if defined?(Rails::Railtie)
10
12
 
11
13
  module Minato
12
14
  module Trace
13
- BLACKLIST_PATHS = ["/health/alive", "/health/ready"].freeze
14
-
15
- def self.init(app)
16
- if Minato::Trace.enabled?
17
- Minato::Trace.configure_loggging
18
- Minato::Trace.configure_trace
19
- end
20
-
21
- app
22
- end
15
+ class Error < StandardError; end
23
16
 
24
17
  def self.enabled?
25
18
  ENV["MINATO_TRACE_DISABLED"] != "true"
26
19
  end
27
20
 
28
- def self.configure_trace
29
- Google::Cloud.configure do |config|
30
- config.use_trace = true
31
- config.trace.sampler = Google::Cloud::Trace::TimeSampler.new(path_blacklist: BLACKLIST_PATHS.dup)
32
- end
21
+ def self.configure
22
+ @config ||= Configuration.new
23
+ yield(@config) if block_given?
24
+ @config
33
25
  end
34
26
 
35
- def self.configure_loggging
36
- Google::Cloud.configure do |config|
37
- config.use_logging = false
38
- end
27
+ def self.config
28
+ @config || configure
39
29
  end
40
30
 
41
- def self.skip_trace?(trace)
42
- BLACKLIST_PATHS.any? { |path| trace.name.start_with?(path) }
31
+ def self.tracer
32
+ @tracer ||= OpenTelemetry.tracer_provider.tracer("minato_trace", Minato::Trace::VERSION)
43
33
  end
44
34
  end
45
35
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # desc "Explaining what the task does"
3
4
  # task :minato_trace do
4
5
  # # Task goes here
metadata CHANGED
@@ -1,44 +1,213 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minato-trace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ferreri
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-31 00:00:00.000000000 Z
11
+ date: 2026-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: google-cloud-trace
14
+ name: opentelemetry-sdk
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.42.2
19
+ version: '1.5'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.42.2
26
+ version: '1.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rails
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 7.0.0
33
+ version: 7.0.8
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 7.0.0
41
- description: Default setup of trace gem in Minato Rails Apps.
40
+ version: 7.0.8
41
+ - !ruby/object:Gem::Dependency
42
+ name: opentelemetry-exporter-otlp
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.28'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.28'
55
+ - !ruby/object:Gem::Dependency
56
+ name: opentelemetry-resource-detector-google_cloud_platform
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.2'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: opentelemetry-instrumentation-action_pack
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: opentelemetry-instrumentation-active_job
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: opentelemetry-instrumentation-active_model_serializers
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: opentelemetry-instrumentation-active_record
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: opentelemetry-instrumentation-concurrent_ruby
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: opentelemetry-instrumentation-faraday
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: opentelemetry-instrumentation-http
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: opentelemetry-instrumentation-net_http
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: opentelemetry-instrumentation-rack
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: opentelemetry-instrumentation-redis
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ description: Add OpenTelemetry instrumentation to your Minato Rails applications, enabling
210
+ tracing with Google Cloud Trace integration or any other trace service.
42
211
  email:
43
212
  - contato@ferreri.co
44
213
  executables: []
@@ -49,9 +218,9 @@ files:
49
218
  - README.md
50
219
  - Rakefile
51
220
  - lib/minato/trace.rb
52
- - lib/minato/trace/middleware.rb
53
- - lib/minato/trace/middleware/distributed_trace_context.rb
54
- - lib/minato/trace/middleware/integrate_with_cloud_logging.rb
221
+ - lib/minato/trace/configuration.rb
222
+ - lib/minato/trace/instrumentation/minato_logger.rb
223
+ - lib/minato/trace/instrumentation/minato_logger/middleware.rb
55
224
  - lib/minato/trace/railtie.rb
56
225
  - lib/minato/trace/version.rb
57
226
  - lib/tasks/minato/trace_tasks.rake
@@ -71,7 +240,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
71
240
  requirements:
72
241
  - - ">="
73
242
  - !ruby/object:Gem::Version
74
- version: 2.6.0
243
+ version: '3.2'
75
244
  required_rubygems_version: !ruby/object:Gem::Requirement
76
245
  requirements:
77
246
  - - ">="
@@ -81,5 +250,5 @@ requirements: []
81
250
  rubygems_version: 3.4.1
82
251
  signing_key:
83
252
  specification_version: 4
84
- summary: trace configuration for Minato Rails Apps.
253
+ summary: Configure OpenTelementry instrumentation for Minato Rails applications
85
254
  test_files: []
@@ -1,40 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Minato
4
- module Trace
5
- module Middleware
6
- class DistributedTraceContext
7
- TRACE_HEADER_KEY = "X-Cloud-Trace-Context"
8
-
9
- def initialize(app)
10
- @app = app
11
- end
12
-
13
- def call(env)
14
- add_trace_context_header(env)
15
-
16
- @app.call(env)
17
- end
18
-
19
- private
20
-
21
- def add_trace_context_header(env)
22
- return unless ::Rails.env.production? && Minato::Trace.enabled?
23
-
24
- return if current_cloud_trace.nil?
25
-
26
- env.request_headers.merge!({ "#{TRACE_HEADER_KEY}": "#{current_cloud_trace.trace.trace_id};o=1" })
27
- end
28
-
29
- def current_cloud_trace
30
- @current_cloud_trace ||= current_trace_from_google_cloud
31
- end
32
-
33
- def current_trace_from_google_cloud
34
- _trace_client = Google::Cloud::Trace.new
35
- Google::Cloud::Trace.get
36
- end
37
- end
38
- end
39
- end
40
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Minato
4
- module Trace
5
- module Middleware
6
- class IntegrateWithCloudLogging
7
- def call(log)
8
- return log unless ::Rails.env.production? && Minato::Trace.enabled?
9
-
10
- add_trace_to_logs(log)
11
- end
12
-
13
- private
14
-
15
- def add_trace_to_logs(log)
16
- return log if current_cloud_trace.nil?
17
-
18
- trace_log = "projects/#{current_cloud_trace.trace.project_id}/traces/#{current_cloud_trace.trace.trace_id}"
19
-
20
- log.merge({ "logging.googleapis.com/trace": trace_log,
21
- "logging.googleapis.com/spanId": current_cloud_trace.span_id.to_s })
22
- end
23
-
24
- def current_cloud_trace
25
- @current_cloud_trace ||= current_cloud_trace_from_google_cloud
26
- end
27
-
28
- def current_cloud_trace_from_google_cloud
29
- _trace_client = Google::Cloud::Trace.new
30
- Google::Cloud::Trace.get
31
- end
32
- end
33
- end
34
- end
35
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "minato/trace/middleware/distributed_trace_context"
4
- require "minato/trace/middleware/integrate_with_cloud_logging"
5
-
6
- module Minato
7
- module Trace
8
- module Middleware
9
- end
10
- end
11
- end