aspecto-opentelemetry 0.1.7 → 0.1.10

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: 170a65edd49c074b4b4f4b6c387fca2fd09783966e134b595b7d8bc2f05d79f0
4
- data.tar.gz: dafa464e48a08da3aaf868059843852db9974d7d8eda765356d2c91f631c081b
3
+ metadata.gz: a0943b7b3f5688ebe24ae7f8bb45836d082697786ba1ea649e0ed947836f13d2
4
+ data.tar.gz: f9572d70ddeb8419648e78a2edf3b90094e2bb6658701556b01ed5a353b18f3f
5
5
  SHA512:
6
- metadata.gz: f4730136d9f1f4e1ca13003cbe9ce0eb4f70b66802526c119b99343697e115c3bd7d1fee92005bf03e0010260d35c0a9e07bbdd9fc7a43a1126904a619f48023
7
- data.tar.gz: f11b3ff7ab8da4f02b343d49bf8bf49ee79c341dd6170680e64a4d6346e2be57d530e911ed5a2f3ab1b656b8cf06246ed1586d99373a83984f5a0577ade17278
6
+ metadata.gz: 2181743694a6cefbde9138ddbf3dfbcb57a0b95787cf2cbda35f418d05bf6755a40f495bba32a22a0f5184fa83ef3789a63617b1d6eaadf0dcff36623c0a99ec
7
+ data.tar.gz: 9c6d4cfe66c894c6c9a82c04080d8e9653502c9bf97b82149a30522f82c1e5f5f7b2621257cbf7481baa19d776e499663df17d28bb8007940582da0bb716d909
data/README.md CHANGED
@@ -19,8 +19,6 @@ Or, if you use [bundler](https://bundler.io), include aspecto-opentelemetry in y
19
19
 
20
20
  ### Rails Applications
21
21
 
22
- #### Configuration in Code
23
-
24
22
  Add this code to a new file `aspecto.rb` under `config/initializers/`:
25
23
 
26
24
  ```rb
@@ -34,26 +32,8 @@ Aspecto::OpenTelemetry::configure do |c|
34
32
  end
35
33
  ```
36
34
 
37
- #### Configuration via Environment Variables
38
-
39
- In your Gemfile:
40
-
41
- ```
42
- gem 'aspecto-opentelemetry', require: 'aspecto/auto_instrument'
43
- ```
44
-
45
- And set environment variables:
46
-
47
- ```
48
- OTEL_SERVICE_NAME=<YOUR_SERVICE_NAME>
49
- ASPECTO_AUTH=<YOUR_ASPECTO_TOKEN>
50
- # ASPECTO_SAMPLING_RATIO=1.0 # [optional]: defaults to 1.0, use aspecto app to configure remotely
51
- ```
52
-
53
35
  ### Ruby Applications
54
36
 
55
- #### Configuration in Code
56
-
57
37
  Add this code after your require other gems:
58
38
 
59
39
  ```rb
@@ -67,23 +47,6 @@ Aspecto::OpenTelemetry::configure do |c|
67
47
  end
68
48
  ```
69
49
 
70
- #### Configuration via Environment Variables
71
-
72
- Add this require statement after your require other gems:
73
-
74
- ```rb
75
- require 'aspecto/auto_instrument'
76
- ```
77
-
78
- And set environment variables:
79
-
80
- ```
81
- OTEL_SERVICE_NAME=<YOUR_SERVICE_NAME>
82
- ASPECTO_AUTH=<YOUR_ASPECTO_TOKEN>
83
- # ASPECTO_ENV=<CURRENT_ENVIRONMENT> # [optional]: automatically detected for rails and sinatra
84
- # ASPECTO_SAMPLING_RATIO=1.0 # [optional]: defaults to 1.0, use aspecto app to configure remotely
85
- ```
86
-
87
50
  ### Shutdown
88
51
 
89
52
  Call this function when your application shuts down
data/RELEASE.md ADDED
@@ -0,0 +1,4 @@
1
+ # Release steps
2
+ 1. Increment VERSION in [`version.rb`](./lib/aspecto/opentelemetry/version.rb)
3
+ 1. Create and merge Pull Request into `master`
4
+ 1. Run `Publish` Github action on `master` branch 🚀
@@ -16,6 +16,8 @@ module Aspecto
16
16
  def initialize(aspecto_auth, service_name, env, fallback_sampler)
17
17
  @service_name = service_name
18
18
  @env = env
19
+ @error_reported = false
20
+ @got_remote_config = false
19
21
  @fallback_sampler = fallback_sampler
20
22
  aspecto_config_host = ENV.fetch("ASPECTO_CONFIG_HOST", "https://config.aspecto.io")
21
23
  @aspecto_config_url = URI("#{aspecto_config_host}/config/#{aspecto_auth}")
@@ -27,7 +29,10 @@ module Aspecto
27
29
  update_config
28
30
  end
29
31
 
30
- ::OpenTelemetry.logger.info "[Aspecto] SDK client initialized"
32
+ ::OpenTelemetry.logger.info "[Aspecto] initialized remote config polling"
33
+ rescue StandardError => e
34
+ ::OpenTelemetry.logger.error "[Aspecto] failed to initialize remote config polling"
35
+ ::OpenTelemetry.logger.error e
31
36
  end
32
37
 
33
38
  def shutdown
@@ -50,7 +55,7 @@ module Aspecto
50
55
  @http_client.verify_mode = OpenSSL::SSL::VERIFY_PEER
51
56
  end
52
57
 
53
- def update_config # rubocop:disable Metrics/AbcSize
58
+ def update_config
54
59
  ::OpenTelemetry::Common::Utilities.untraced do
55
60
  request = Net::HTTP::Get.new(@aspecto_config_url.path)
56
61
  request["If-None-Match"] = @latest_config_etag unless @latest_config_etag.nil?
@@ -60,7 +65,7 @@ module Aspecto
60
65
  return if response_code == 304
61
66
 
62
67
  if response_code >= 400
63
- ::OpenTelemetry.logger.error("[Aspecto] error when trying to get remote config. will try again in #{@remote_config_poll_frequency}")
68
+ log_config_error "failed to get remote config with http response #{response_code}."
64
69
  return
65
70
  end
66
71
 
@@ -68,13 +73,14 @@ module Aspecto
68
73
  handle_new_config JSON.parse(response.body) if response_code < 300
69
74
  end
70
75
  rescue StandardError => e
71
- ::OpenTelemetry.logger.error "[Aspecto] updating remote config failed. using previous remote config"
72
- ::OpenTelemetry.logger.debug e
76
+ log_config_error "updating remote config failed with exception.", e
73
77
  end
74
78
 
75
79
  def handle_new_config(config)
76
- ::OpenTelemetry.logger.info("[Aspecto] successfully received remote configuration")
77
80
  update_sampler config["samplingRules"]
81
+ @error_reported = false
82
+ @got_remote_config = true
83
+ ::OpenTelemetry.logger.info("[Aspecto] successfully updated remote configuration")
78
84
  end
79
85
 
80
86
  def update_sampler(sampler_config)
@@ -84,6 +90,16 @@ module Aspecto
84
90
  # updating the sampler should be thread safe as it's an atomic setter on a global value
85
91
  ::OpenTelemetry.tracer_provider.sampler = message_process_sampler
86
92
  end
93
+
94
+ def log_config_error(msg, err = nil)
95
+ return if @error_reported # report every issue only once
96
+
97
+ retry_msg = "will try again until success every #{@remote_config_poll_frequency}."
98
+ previous_config_msg = @got_remote_config ? "using previous remote config" : "no previous config is avialable"
99
+ ::OpenTelemetry.logger.info("[Aspecto]: #{msg} #{retry_msg} #{previous_config_msg}")
100
+ ::OpenTelemetry.logger.info(err) if err
101
+ @error_reported = true
102
+ end
87
103
  end
88
104
  end
89
105
  end
@@ -29,7 +29,7 @@ module Aspecto
29
29
  private
30
30
 
31
31
  def should_sample_processing(parent_context, links, name, attributes)
32
- return if links.length.zero?
32
+ return if !links || links.length.zero?
33
33
 
34
34
  decision = link_decision(links[0])
35
35
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Aspecto
4
4
  module OpenTelemetry
5
- VERSION = "0.1.7"
5
+ VERSION = "0.1.10"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aspecto-opentelemetry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aspecto
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-03 00:00:00.000000000 Z
11
+ date: 2022-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aspecto-opentelemetry-instrumentation-aws_sdk
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.8
19
+ version: 0.4.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.1.8
26
+ version: 0.4.5
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: opentelemetry-exporter-otlp
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -190,6 +190,7 @@ files:
190
190
  - Gemfile
191
191
  - LICENSE
192
192
  - README.md
193
+ - RELEASE.md
193
194
  - Rakefile
194
195
  - lib/aspecto/auto_instrument.rb
195
196
  - lib/aspecto/opentelemetry.rb