helios-opentelemetry-sdk 0.1.9 → 0.1.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bb476fb50993b19c6b35c72a63680d84defa571fdbb7eb3d07fedcfb52f32ffe
4
- data.tar.gz: 86240290fc29832f4e821c532013ca7c60df7a7a18069e2a985d3ded3e1f283c
3
+ metadata.gz: ce889a94723b9b8f7b2c8da0a10608f5ae627841543649b3716cc01c5d915c2c
4
+ data.tar.gz: ef7bc57d8507c1bb613a603197414700a9e428a58f9d271d5b3c19d975a97f68
5
5
  SHA512:
6
- metadata.gz: 952e43d554c02fff52605cb8efdc78a712ee2ccb639746bd38562969c34cd0f40955b831031cd07576994ec96dd04c03e683e94c821a2bd7a83f09bc79cc3a75
7
- data.tar.gz: 0a79bc6a89ae39ea1c3510485f8a3810f5f0ce8407bdfd4bbb3d7ba73711f21ae9fd85aa136cecbb5b1fc3c1e1c286870cf9bba8a9b0e18e9587f2d62bc0d23a
6
+ metadata.gz: 1199e9514864e6497bd3cff0f9f2c311bd6711298ac4d6e7f94834bcb02c84d90ce08b0404ca76b2b6425736d027c3e91e67eb5e846ddfb5c01a4a8af36eae70
7
+ data.tar.gz: a9d5cf728fda4d6745386218ffc55e7df3bbf0a1ac6119c404c94379106f7f570c51905c3f484046636b51604765dad633e7b1d82ca6f193ac159191a90ab3a7
@@ -17,11 +17,15 @@ jobs:
17
17
  test:
18
18
  runs-on: ubuntu-latest
19
19
  timeout-minutes: 10
20
+ strategy:
21
+ fail-fast: false
22
+ matrix:
23
+ ruby-version: ['2.6', '2.7', '3.1']
20
24
  steps:
21
25
  - uses: actions/checkout@v2
22
26
  - uses: actions/setup-ruby@v1
23
27
  with:
24
- ruby-version: '3.1'
28
+ ruby-version: ${{ matrix.ruby-version }}
25
29
  - name: Install bundler
26
30
  run: gem install bundler -v 2.3.16
27
31
  - name: bundle install
data/.rubocop.yml CHANGED
@@ -15,3 +15,9 @@ Style/MutableConstant:
15
15
 
16
16
  AllCops:
17
17
  SuggestExtensions: false
18
+
19
+ Style/HashSyntax:
20
+ Enabled: false
21
+
22
+ Metrics/BlockLength:
23
+ Enabled: false
data/Gemfile.lock CHANGED
@@ -1,7 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- helios-opentelemetry-sdk (0.1.9)
4
+ helios-opentelemetry-sdk (0.1.12)
5
+ opentelemetry-exporter-otlp (~> 0.22.0)
6
+ opentelemetry-instrumentation-all (~> 0.25.0)
7
+ opentelemetry-instrumentation-rspec (~> 0.2.0)
8
+ opentelemetry-sdk (~> 1.1.0)
5
9
 
6
10
  GEM
7
11
  remote: https://rubygems.org/
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.summary = "Helios OpenTelemetry SDK for Ruby"
13
13
  spec.description = "Helios OpenTelemetry SDK for Ruby"
14
14
  spec.homepage = "https://gethelios.dev"
15
- spec.required_ruby_version = Gem::Requirement.new(">= 2.7")
15
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.3")
16
16
 
17
17
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
18
  # to allow pushing to a single host or delete this section to allow pushing to any host.
@@ -37,4 +37,8 @@ Gem::Specification.new do |spec|
37
37
  spec.add_development_dependency "bundler", "~> 2.3.16"
38
38
  spec.add_development_dependency "rake", "~> 13.0"
39
39
  spec.add_development_dependency "rspec", "~> 3.0"
40
+ spec.add_runtime_dependency "opentelemetry-sdk", "~> 1.1.0"
41
+ spec.add_runtime_dependency "opentelemetry-exporter-otlp", "~> 0.22.0"
42
+ spec.add_runtime_dependency "opentelemetry-instrumentation-all", "~> 0.25.0"
43
+ spec.add_runtime_dependency "opentelemetry-instrumentation-rspec", "~> 0.2.0"
40
44
  end
@@ -48,4 +48,11 @@ def apply_instrumentations(otel_config)
48
48
 
49
49
  otel_config.use(instrumentation, config)
50
50
  end
51
+
52
+ additional_patches
53
+ end
54
+
55
+ def additional_patches
56
+ require_relative 'net_http_patch'
57
+ ::Net::HTTP.prepend(NetHttpPatch::Instrumentation)
51
58
  end
@@ -0,0 +1,31 @@
1
+ require 'json'
2
+ require_relative '../semantic_attributes'
3
+
4
+ module NetHttpPatch
5
+ # Module to prepend to Net::HTTP for instrumentation
6
+ module Instrumentation
7
+ def request(req, body = nil, &block)
8
+ current_span = OpenTelemetry::Trace.current_span
9
+ current_span.set_attribute(Helios::OpenTelemetry::SemanticAttributes::HTTP_REQUEST_HEADERS, collect_headers(req))
10
+ unless req.body.nil?
11
+ current_span.set_attribute(Helios::OpenTelemetry::SemanticAttributes::HTTP_REQUEST_BODY,
12
+ body.is_a?(String) ? body : body.to_s)
13
+ end
14
+
15
+ super(req, body, &block).tap do |response|
16
+ current_span.set_attribute(Helios::OpenTelemetry::SemanticAttributes::HTTP_RESPONSE_HEADERS,
17
+ collect_headers(response))
18
+ current_span.set_attribute(Helios::OpenTelemetry::SemanticAttributes::HTTP_RESPONSE_BODY, response.body)
19
+ end
20
+ end
21
+
22
+ def collect_headers(obj)
23
+ headers = {}
24
+ obj.each_header do |k, v|
25
+ headers[k] = v
26
+ end
27
+
28
+ headers.to_json
29
+ end
30
+ end
31
+ end
@@ -1,7 +1,7 @@
1
1
  module Helios
2
2
  module OpenTelemetry
3
3
  module SDK
4
- VERSION = '0.1.9'
4
+ VERSION = '0.1.12'
5
5
  end
6
6
  end
7
7
  end
@@ -89,5 +89,8 @@ if auto_tracing_mode?
89
89
  service_name = ENV['HS_SERVICE_NAME']
90
90
  environment = ENV['HS_ENVIRONMENT']
91
91
  enable = true
92
- Helios::OpenTelemetry::SDK.initialize(api_token:, service_name:, environment:, enable:)
92
+ Helios::OpenTelemetry::SDK.initialize(api_token: api_token,
93
+ service_name: service_name,
94
+ environment: environment,
95
+ enable: enable)
93
96
  end
@@ -0,0 +1,10 @@
1
+ module Helios
2
+ module OpenTelemetry
3
+ class SemanticAttributes
4
+ HTTP_REQUEST_BODY = 'http.request.body'
5
+ HTTP_REQUEST_HEADERS = 'http.request.headers'
6
+ HTTP_RESPONSE_BODY = 'http.response.body'
7
+ HTTP_RESPONSE_HEADERS = 'http.response.headers'
8
+ end
9
+ end
10
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: helios-opentelemetry-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Team Helios
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-08-01 00:00:00.000000000 Z
11
+ date: 2022-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,62 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: opentelemetry-sdk
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.1.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.1.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: opentelemetry-exporter-otlp
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.22.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.22.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: opentelemetry-instrumentation-all
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.25.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.25.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: opentelemetry-instrumentation-rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.2.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.2.0
55
111
  description: Helios OpenTelemetry SDK for Ruby
56
112
  email:
57
113
  - support@gethelios.dev
@@ -74,7 +130,9 @@ files:
74
130
  - helios-opentelemetry-sdk.gemspec
75
131
  - lib/helios/opentelemetry/sdk.rb
76
132
  - lib/helios/opentelemetry/sdk/instrumentations.rb
133
+ - lib/helios/opentelemetry/sdk/net_http_patch.rb
77
134
  - lib/helios/opentelemetry/sdk/version.rb
135
+ - lib/helios/opentelemetry/semantic_attributes.rb
78
136
  homepage: https://gethelios.dev
79
137
  licenses:
80
138
  - Apache-2.0
@@ -88,7 +146,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
88
146
  requirements:
89
147
  - - ">="
90
148
  - !ruby/object:Gem::Version
91
- version: '2.7'
149
+ version: '2.3'
92
150
  required_rubygems_version: !ruby/object:Gem::Requirement
93
151
  requirements:
94
152
  - - ">="