appoptics_apm 4.1.0 → 4.1.1

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
  SHA1:
3
- metadata.gz: 90ed895e7d5acf3fb30fa85e0d5df0a3df0d3075
4
- data.tar.gz: acf370948b698d06dfe982a322058d2bb2e227eb
3
+ metadata.gz: bec85d45871f627c9a17c7d4ee6e592d33b1df21
4
+ data.tar.gz: c3bfd02109828928249837b492672ec0f7f5a0e8
5
5
  SHA512:
6
- metadata.gz: 26c3753688ed6e8568b9c4ced5364505bde26cccfbf0b7ce53adb55ea5dd703de3427c7b68f96fe9845726d04c3049422c30feb686bd76791e5590467c70ca87
7
- data.tar.gz: 8cdc020d21282e659a2fc8c82066f9975641f45a82735fc628e94e11dbf6cfc5ca0b35115e3ef3012be37daa32e05de733799d0d88f4470c03a925faeda62c00
6
+ metadata.gz: 847a79988f646a46381ee1ca6d581e500a8aa5e156569143aee9e846ef63b2dd0ec7a9686d8dce16e6f843185d758e1a87f88fe07d003546be2147a90f6d6bab
7
+ data.tar.gz: 5969da7af7a351e23d569ca2e02338164029227a97d73885ab0e0d042ae3f029c8b18d2f5d4c20c4089fe7881c2092756f08069272237eed6be54acb6443a5f1
data/Dockerfile_alpine CHANGED
@@ -32,11 +32,10 @@ RUN git clone https://github.com/rbenv/rbenv.git ~/.rbenv \
32
32
  && echo 'bundler' > ~/.rbenv/default-gems
33
33
 
34
34
  # install rubies to build our gem against
35
- RUN source ~/.profile
36
- && rbenv install 1.9.3-p551 \
35
+ RUN source ~/.profile \
37
36
  && rbenv install 2.3.1 \
38
- && rbenv install 2.4.1
39
- && rbenv install jruby-9.0.5.0
37
+ && rbenv install 2.4.1 \
38
+ # && rbenv install jruby-9.0.5.0
40
39
 
41
40
  # install swig 3.0.8
42
41
  RUN curl -SL http://kent.dl.sourceforge.net/project/swig/swig/swig-3.0.8/swig-3.0.8.tar.gz \
@@ -50,7 +49,7 @@ RUN apk add --upgrade \
50
49
  redis \
51
50
  memcached \
52
51
  postgresql \
53
- openrc
52
+ openrc \
54
53
  && rc-service postgresql start \
55
54
  && echo "psql --command \"CREATE USER docker WITH SUPERUSER PASSWORD 'docker';\"" >> /tmp/config \
56
55
  && echo "createdb -O docker travis_ci_test" >> /tmp/config \
data/Rakefile CHANGED
@@ -73,7 +73,7 @@ task :fetch_ext_deps do
73
73
  end
74
74
 
75
75
  # The c-lib version is different from the gem version
76
- oboe_version = ENV['OBOE_VERSION'] || 'latest'
76
+ oboe_version = ENV['OBOE_VERSION'] || '2.0.10' # 'latest'
77
77
  oboe_src_dir = "https://s3-us-west-2.amazonaws.com/rc-files-t2/c-lib/#{oboe_version}"
78
78
  ext_src_dir = File.expand_path('ext/oboe_metal/src')
79
79
 
@@ -85,7 +85,7 @@ task :fetch_ext_deps do
85
85
  puts "fetching #{remote_file} to #{local_file}"
86
86
  open(remote_file, 'rb') do |rf|
87
87
  content = rf.read
88
- File.open(local_file, 'wb') {|f| f.puts content}
88
+ File.open(local_file, 'wb') { |f| f.puts content }
89
89
  end
90
90
  end
91
91
  FileUtils.cd(ext_src_dir) do
@@ -105,7 +105,7 @@ task :compile do
105
105
  so_file = File.expand_path('ext/oboe_metal/oboe_metal.so')
106
106
 
107
107
  Dir.chdir ext_dir
108
- ENV['FROM_S3'] = 'TRUE'
108
+ ENV['APPOPTICS_FROM_S3'] = 'true'
109
109
  cmd = [Gem.ruby, 'extconf.rb']
110
110
  sh cmd.join(' ')
111
111
  sh '/usr/bin/env make'
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
29
29
  s.extensions = ['ext/oboe_metal/extconf.rb'] unless defined?(JRUBY_VERSION)
30
30
 
31
31
  s.add_runtime_dependency('json', '>= 0')
32
+ s.add_runtime_dependency('no_proxy_fix', '~> 0.1.2', '>= 0.1.2')
32
33
 
33
34
  # Development dependencies used in gem development & testing
34
35
  s.add_development_dependency('rake', '>= 0.9.0')
@@ -42,4 +43,5 @@ Gem::Specification.new do |s|
42
43
  end
43
44
 
44
45
  s.required_ruby_version = '>= 2.0.0'
46
+ s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
45
47
  end
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ ##
4
+ # execute this with `bundle exec appoptics_apm_config`
5
+ # copies the configuration template file into the current directory
6
+ #
7
+
8
+ puts "Copying the configuration template file to appoptics_apm_config_tmp.rb"
9
+ puts "Edit and save as appoptics_apm_config.rb"
10
+
11
+ target_file = File.join(Dir.pwd, 'appoptics_apm_config_tmp.rb')
12
+ temp_orig = File.join(File.dirname(File.dirname(__FILE__)),
13
+ 'lib/rails/generators/appoptics_apm/templates/appoptics_apm_initializer.rb')
14
+
15
+ FileUtils.copy(temp_orig, target_file)
File without changes
data/docker-compose.yml CHANGED
@@ -7,7 +7,7 @@ version: "2"
7
7
  # ('ruby_appoptics' and 'wait' will exit)
8
8
  #
9
9
  # to run some ruby tests:
10
- # > docker-compose run --service-ports ruby_appoptics /code/ruby-appoptics_apm/ruby_setup.sh 2.3.1 gemfiles/rails42.gemfile
10
+ # > docker-compose run --service-ports ruby_appoptics_apm /code/ruby-appoptics_apm/ruby_setup.sh 2.3.6 gemfiles/rails42.gemfile
11
11
  #
12
12
  ########################################################################################################
13
13
 
@@ -34,27 +34,27 @@ services:
34
34
  - MYSQL_HOST=mysql
35
35
  - APPOPTICS_MONGO_SERVER=mongo
36
36
 
37
- ruby_appoptics_apm_alpine:
38
- container_name: ruby_appoptics_apm_alpine
39
- image: ruby_alpine
40
- build:
41
- context: .
42
- dockerfile: ./Dockerfile_alpine
43
- cpu_quota: 100000 # 1 cpu, assumes cpu_period of 1 second
44
- mem_limit: 1G
45
- volumes:
46
- - .:/code/ruby-appoptics_apm
47
- depends_on:
48
- - wait
49
- links:
50
- - wait
51
- environment:
52
- - APPOPTICS_RABBITMQ_SERVER=rabbitmq
53
- - DOCKER_MYSQL_PASS=admin
54
- - MYSQL_ALLOW_EMPTY_PASSWORD=yes
55
- - MYSQL_ROOT_PASSWORD=admin
56
- - MYSQL_HOST=mysql
57
- - APPOPTICS_MONGO_SERVER=mongo
37
+ # ruby_appoptics_apm_alpine:
38
+ # container_name: ruby_appoptics_apm_alpine
39
+ # image: ruby_alpine
40
+ # build:
41
+ # context: .
42
+ # dockerfile: ./Dockerfile_alpine
43
+ # cpu_quota: 100000 # 1 cpu, assumes cpu_period of 1 second
44
+ # mem_limit: 1G
45
+ # volumes:
46
+ # - .:/code/ruby-appoptics_apm
47
+ # depends_on:
48
+ # - wait
49
+ # links:
50
+ # - wait
51
+ # environment:
52
+ # - APPOPTICS_RABBITMQ_SERVER=rabbitmq
53
+ # - DOCKER_MYSQL_PASS=admin
54
+ # - MYSQL_ALLOW_EMPTY_PASSWORD=yes
55
+ # - MYSQL_ROOT_PASSWORD=admin
56
+ # - MYSQL_HOST=mysql
57
+ # - APPOPTICS_MONGO_SERVER=mongo
58
58
 
59
59
  rabbitmq:
60
60
  container_name: rabbitmq
@@ -4,7 +4,7 @@
4
4
  require 'mkmf'
5
5
  require 'rbconfig'
6
6
  require 'open-uri'
7
- require 'digest'
7
+ require 'no_proxy_fix'
8
8
 
9
9
  ext_dir = File.expand_path(File.dirname(__FILE__))
10
10
 
@@ -18,7 +18,7 @@ ao_include = File.join(ext_dir, 'src')
18
18
 
19
19
  # Download the appropriate liboboe from S3(via rake for testing) or files.appoptics.com (production)
20
20
  version = File.read(File.join(ao_include, 'VERSION')).chomp
21
- if ENV['FROM_S3']
21
+ if ENV['APPOPTICS_FROM_S3'].to_s.downcase == 'true'
22
22
  ao_path = File.join('https://s3-us-west-2.amazonaws.com/rc-files-t2/c-lib/', version)
23
23
  puts "Fetching c-lib from S3"
24
24
  else
@@ -78,6 +78,7 @@ if success
78
78
 
79
79
  dir_config('oboe', 'src', 'lib')
80
80
 
81
+ # create Makefile
81
82
  if jruby || ENV.key?('APPOPTICS_URL')
82
83
  # Build the noop extension under JRuby and Heroku.
83
84
  # The oboe-heroku gem builds it's own c extension which links to
@@ -1 +1 @@
1
- 2.0.9
1
+ 2.0.10
data/lib/appoptics_apm.rb CHANGED
@@ -46,6 +46,8 @@ begin
46
46
  end
47
47
 
48
48
  require 'appoptics_apm/config'
49
+ AppOpticsAPM::Config.load_config_file
50
+
49
51
  require 'appoptics_apm/loading'
50
52
  require 'appoptics_apm/legacy_method_profiling'
51
53
  require 'appoptics_apm/method_profiling'
@@ -69,4 +71,4 @@ begin
69
71
  rescue => e
70
72
  $stderr.puts "[appoptics_apm/error] Problem loading: #{e.inspect}"
71
73
  $stderr.puts e.backtrace
72
- end
74
+ end
@@ -23,156 +23,97 @@ module AppOpticsAPM
23
23
  @@http_clients = [:curb, :excon, :em_http_request, :faraday, :httpclient, :nethttp, :rest_client, :typhoeus]
24
24
 
25
25
  ##
26
- # Return the raw nested hash.
26
+ # load_config_file
27
27
  #
28
- def self.show
29
- @@config
28
+ # There are 3 possible locations for the config file:
29
+ # Rails default, ENV['APPOPTICS_APM_CONFIG_RUBY'], or the gem's default
30
+ #
31
+ # Hierarchie:
32
+ # 1 - Rails default: config/initializers/appoptics_apm.rb
33
+ # (also loaded by Rails, but we can't reliably determine if Rails is running)
34
+ # 2 - ENV['APPOPTICS_APM_CONFIG_RUBY']
35
+ # 3 - Gem default: <startup_dir>/appoptics_apm_config.rb
36
+ #
37
+ def self.load_config_file
38
+ config_files = []
39
+
40
+ # Check for the rails config file
41
+ config_file = File.join(Dir.pwd, 'config/initializers/appoptics_apm.rb')
42
+ config_files << config_file if File.exist?(config_file)
43
+
44
+ # Check for file set by env variable
45
+ if ENV.key?('APPOPTICS_APM_CONFIG_RUBY')
46
+ if File.exist?(ENV['APPOPTICS_APM_CONFIG_RUBY']) && !File.directory?(ENV['APPOPTICS_APM_CONFIG_RUBY'])
47
+ config_files << ENV['APPOPTICS_APM_CONFIG_RUBY']
48
+ elsif File.exist?(File.join(ENV['APPOPTICS_APM_CONFIG_RUBY'], 'appoptics_apm_config.rb'))
49
+ config_files << File.join(ENV['APPOPTICS_APM_CONFIG_RUBY'], 'appoptics_apm_config.rb')
50
+ else
51
+ $stderr.puts 'Could not find the configuration file set by the APPOPTICS_APM_CONFIG_RUBY environment variable:'
52
+ $stderr.puts "#{ENV['APPOPTICS_APM_CONFIG_RUBY']}"
53
+ end
54
+ end
55
+
56
+ # Check for default config file
57
+ config_file = File.join(Dir.pwd, 'appoptics_apm_config.rb')
58
+ config_files << config_file if File.exist?(config_file)
59
+
60
+ return if config_files.empty?
61
+
62
+ if config_files.size > 1
63
+ $stderr.puts 'Found multiple configuration files, using the first one listed:'
64
+ config_files.each { |path| $stderr.puts " #{path}" }
65
+ end
66
+ load(config_files[0])
67
+ end
68
+
69
+ ##
70
+ # print_config
71
+ #
72
+ # print configurations one per line
73
+ # to create an output similar to the content of the config file
74
+ #
75
+ def self.print_config
76
+ puts "# General configurations"
77
+ non_instrumentation = @@config.keys - @@instrumentation
78
+ non_instrumentation.each do |config|
79
+ puts "AppOpticsAPM::Config[:#{config}] = #{@@config[config]}"
80
+ end
81
+
82
+ puts "\n# Instrumentation specific configurations"
83
+ puts "# Enabled/Disabled Instrumentation"
84
+ @@instrumentation.each do |config|
85
+ puts "AppOpticsAPM::Config[:#{config}][:enabled] = #{@@config[config][:enabled]}"
86
+ end
87
+
88
+ puts "\n# Enabled/Disabled Backtrace Collection"
89
+ @@instrumentation.each do |config|
90
+ puts "AppOpticsAPM::Config[:#{config}][:collect_backtraces] = #{@@config[config][:collect_backtraces]}"
91
+ end
92
+
93
+ puts "\n# Logging of outgoing HTTP query args"
94
+ @@instrumentation.each do |config|
95
+ puts "AppOpticsAPM::Config[:#{config}][:log_args] = #{@@config[config][:log_args]}"
96
+ end
97
+
98
+ puts "\n# Bunny Controller and Action"
99
+ puts "AppOpticsAPM::Config[:bunnyconsumer][:controller] = #{@@config[:bunnyconsumer][:controller].inspect}"
100
+ puts "AppOpticsAPM::Config[:bunnyconsumer][:action] = #{@@config[:bunnyconsumer][:action].inspect}"
101
+ nil
30
102
  end
31
103
 
32
104
  ##
33
105
  # initialize
34
106
  #
35
- # Initializer method to set everything up with a
36
- # default configuration.
107
+ # Initializer method to set everything up with a default configuration.
108
+ # The defaults are read from the template configuration file.
37
109
  #
38
110
  # rubocop:disable Metrics/AbcSize
39
111
  def self.initialize(_data = {})
40
- # Setup default instrumentation values
41
112
  @@instrumentation.each do |k|
42
113
  @@config[k] = {}
43
- @@config[k][:enabled] = true
44
- @@config[k][:collect_backtraces] = false
45
- @@config[k][:log_args] = true
46
114
  end
47
-
48
- # Beta instrumentation disabled by default
49
- AppOpticsAPM::Config[:em_http_request][:enabled] = false
50
-
51
- # Set collect_backtraces defaults
52
- AppOpticsAPM::Config[:action_controller][:collect_backtraces] = false
53
- AppOpticsAPM::Config[:action_controller_api][:collect_backtraces] = false
54
- AppOpticsAPM::Config[:active_record][:collect_backtraces] = true
55
- AppOpticsAPM::Config[:bunnyclient][:collect_backtraces] = false
56
- AppOpticsAPM::Config[:bunnyconsumer][:collect_backtraces] = false
57
- AppOpticsAPM::Config[:action_view][:collect_backtraces] = true
58
- AppOpticsAPM::Config[:cassandra][:collect_backtraces] = true
59
- AppOpticsAPM::Config[:curb][:collect_backtraces] = true
60
- AppOpticsAPM::Config[:dalli][:collect_backtraces] = false
61
- AppOpticsAPM::Config[:delayed_jobclient][:collect_backtraces] = false
62
- AppOpticsAPM::Config[:delayed_jobworker][:collect_backtraces] = false
63
- AppOpticsAPM::Config[:em_http_request][:collect_backtraces] = false
64
- AppOpticsAPM::Config[:excon][:collect_backtraces] = true
65
- AppOpticsAPM::Config[:faraday][:collect_backtraces] = false
66
- AppOpticsAPM::Config[:grape][:collect_backtraces] = true
67
- AppOpticsAPM::Config[:httpclient][:collect_backtraces] = true
68
- AppOpticsAPM::Config[:memcached][:collect_backtraces] = false
69
- AppOpticsAPM::Config[:mongo][:collect_backtraces] = true
70
- AppOpticsAPM::Config[:moped][:collect_backtraces] = true
71
- AppOpticsAPM::Config[:nethttp][:collect_backtraces] = true
72
- AppOpticsAPM::Config[:rack][:collect_backtraces] = false
73
- AppOpticsAPM::Config[:redis][:collect_backtraces] = false
74
- AppOpticsAPM::Config[:resqueclient][:collect_backtraces] = true
75
- AppOpticsAPM::Config[:resqueworker][:collect_backtraces] = false
76
- AppOpticsAPM::Config[:rest_client][:collect_backtraces] = false
77
- AppOpticsAPM::Config[:sequel][:collect_backtraces] = true
78
- AppOpticsAPM::Config[:sidekiqclient][:collect_backtraces] = false
79
- AppOpticsAPM::Config[:sidekiqworker][:collect_backtraces] = false
80
- AppOpticsAPM::Config[:typhoeus][:collect_backtraces] = false
81
-
82
- # Legacy Resque config support. To be removed in a future version
83
- @@config[:resque] = {}
84
-
85
- # Setup an empty host blacklist (see: AppOpticsAPM::API::Util.blacklisted?)
86
- @@config[:blacklist] = []
87
-
88
- # Logging of outgoing HTTP query args
89
- #
90
- # This optionally disables the logging of query args of outgoing
91
- # HTTP clients such as Net::HTTP, excon, typhoeus and others.
92
- #
93
- # This flag is global to all HTTP client instrumentation.
94
- #
95
- # To configure this on a per instrumentation basis, set this
96
- # option to true and instead disable the instrumenstation specific
97
- # option <tt>log_args</tt>:
98
- #
99
- # AppOpticsAPM::Config[:nethttp][:log_args] = false
100
- # AppOpticsAPM::Config[:excon][:log_args] = false
101
- # AppOpticsAPM::Config[:typhoeus][:log_args] = true
102
- #
103
- @@config[:include_url_query_params] = true
104
-
105
- # Logging of incoming HTTP query args
106
- #
107
- # This optionally disables the logging of incoming URL request
108
- # query args.
109
- #
110
- # This flag is global and currently only affects the Rack
111
- # instrumentation which reports incoming request URLs and
112
- # query args by default.
113
- @@config[:include_remote_url_params] = true
114
-
115
- # The AppOpticsAPM Ruby gem has the ability to sanitize query literals
116
- # from SQL statements. By default this is enabled to
117
- # avoid collecting and reporting query literals to AppOpticsAPM.
118
- @@config[:sanitize_sql] = true
119
-
120
- # The regular expression used to sanitize SQL.
121
- @@config[:sanitize_sql_regexp] = '(\'[\s\S][^\']*\'|\d*\.\d+|\d+|NULL)'
122
- @@config[:sanitize_sql_opts] = Regexp::IGNORECASE
123
-
124
- # Do Not Trace
125
- # These two values allow you to configure specific URL patterns to
126
- # never be traced. By default, this is set to common static file
127
- # extensions but you may want to customize this list for your needs.
128
- #
129
- # dnt_regexp and dnt_opts is passed to Regexp.new to create
130
- # a regular expression object. That is then used to match against
131
- # the incoming request path.
132
- #
133
- # The path string originates from the rack layer and is retrieved
134
- # as follows:
135
- #
136
- # req = ::Rack::Request.new(env)
137
- # path = URI.unescape(req.path)
138
- #
139
- # Usage:
140
- # AppOpticsAPM::Config[:dnt_regexp] = "lobster$"
141
- # AppOpticsAPM::Config[:dnt_opts] = Regexp::IGNORECASE
142
- #
143
- # This will ignore all requests that end with the string lobster
144
- # regardless of case
145
- #
146
- # Requests with positive matches (non nil) will not be traced.
147
- # See lib/appoptics_apm/util.rb: AppOpticsAPM::Util.static_asset?
148
- #
149
- @@config[:dnt_regexp] = '\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|otf|eot|ttf|woff|woff2|svg|less)(\?.+){0,1}$'
150
- @@config[:dnt_opts] = Regexp::IGNORECASE
151
-
152
- # In Rails, raised exceptions with rescue handlers via
153
- # <tt>rescue_from</tt> are not reported to the AppOptics
154
- # dashboard by default. Setting this value to true will
155
- # report all raised exception regardless.
156
- #
157
- @@config[:report_rescued_errors] = false
158
-
159
- # The bunny (Rabbitmq) instrumentation can optionally report
160
- # Controller and Action values to allow filtering of bunny
161
- # message handling in # the UI. Use of Controller and Action
162
- # for filters is temporary until the UI is updated with
163
- # additional filters.
164
- #
165
- # These values identify which properties of
166
- # Bunny::MessageProperties to report as Controller
167
- # and Action. The defaults are to report :app_id (as
168
- # Controller) and :type (as Action). If these values
169
- # are not specified in the publish, then nothing
170
- # will be reported here.
171
- #
172
- @@config[:bunnyconsumer][:controller] = :app_id
173
- @@config[:bunnyconsumer][:action] = :type
174
-
175
- @@config[:verbose] = ENV.key?('APPOPTICS_GEM_VERBOSE') && ENV['APPOPTICS_GEM_VERBOSE'] == 'true' ? true : false
115
+ load(File.join(File.dirname(File.dirname(__FILE__)),
116
+ 'rails/generators/appoptics_apm/templates/appoptics_apm_initializer.rb'))
176
117
  end
177
118
  # rubocop:enable Metrics/AbcSize
178
119
 
@@ -235,21 +176,20 @@ module AppOpticsAPM
235
176
  AppOpticsAPM.logger.warn "[appoptics_apm/config] :resque config is deprecated. It is now split into :resqueclient and :resqueworker."
236
177
  AppOpticsAPM.logger.warn "[appoptics_apm/config] Called from #{Kernel.caller[0]}"
237
178
 
238
- elsif key == :include_url_query_params
179
+ elsif key == :include_url_query_params # DEPRECATED
239
180
  # Obey the global flag and update all of the per instrumentation
240
181
  # <tt>:log_args</tt> values.
241
182
  @@config[:rack][:log_args] = value
242
183
 
243
- elsif key == :include_remote_url_params
184
+ elsif key == :include_remote_url_params # DEPRECATED
244
185
  # Obey the global flag and update all of the per instrumentation
245
186
  # <tt>:log_args</tt> values.
246
187
  @@http_clients.each do |i|
247
188
  @@config[i][:log_args] = value
248
189
  end
249
- end
250
190
 
251
191
  # Update liboboe if updating :tracing_mode
252
- if key == :tracing_mode
192
+ elsif key == :tracing_mode
253
193
  AppOpticsAPM.set_tracing_mode(value.to_sym) if AppOpticsAPM.loaded
254
194
 
255
195
  # Make sure that the mode is stored as a symbol
@@ -100,7 +100,7 @@ module AppOpticsAPM
100
100
  AppOpticsAPM.logger.warn '********************************************************'
101
101
  AppOpticsAPM.logger.warn '* AppOpticsAPM::Config Values'
102
102
  AppOpticsAPM.logger.warn '********************************************************'
103
- AppOpticsAPM::Config.show.each { |k,v|
103
+ AppOpticsAPM::Config.config.each { |k,v|
104
104
  AppOpticsAPM.logger.warn "#{k}: #{v}"
105
105
  }
106
106
 
@@ -105,6 +105,9 @@ module AppOpticsAPM
105
105
  #
106
106
  def static_asset?(path)
107
107
  path =~ Regexp.new(AppOpticsAPM::Config[:dnt_regexp], AppOpticsAPM::Config[:dnt_opts])
108
+ rescue => e
109
+ AppOpticsAPM.logger.warn "[AppOpticsAPM/debug] Could not apply Regex.new to path. #{e.inspect}"
110
+ false
108
111
  end
109
112
 
110
113
  ##
@@ -8,7 +8,7 @@ module AppOpticsAPM
8
8
  module Version
9
9
  MAJOR = 4
10
10
  MINOR = 1
11
- PATCH = 0
11
+ PATCH = 1
12
12
 
13
13
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
14
14
  end
@@ -3,6 +3,8 @@
3
3
  #
4
4
  # More information on instrumenting Ruby applications can be found here:
5
5
  # https://docs.appoptics.com/kb/apm_tracing/ruby/
6
+ #
7
+ # The settings in this template file represent the defaults
6
8
 
7
9
  if defined?(AppOpticsAPM::Config)
8
10
 
@@ -18,37 +20,8 @@ if defined?(AppOpticsAPM::Config)
18
20
  #
19
21
  # Verbose output of instrumentation initialization
20
22
  #
21
- # AppOpticsAPM::Config[:verbose] = <%= @verbose %>
22
- #
23
-
24
- #
25
- # Logging of incoming HTTP query args
26
- #
27
- # This optionally disables the logging of incoming URL request
28
- # query args.
29
- #
30
- # This flag is global and currently only affects the Rack
31
- # instrumentation which reports incoming request URLs and
32
- # query args by default.
33
- AppOpticsAPM::Config[:include_remote_url_params] = true
34
-
35
- #
36
- # Logging of outgoing HTTP query args
37
- #
38
- # This optionally disables the logging of query args of outgoing
39
- # HTTP clients such as Net::HTTP, excon, typhoeus and others.
40
- #
41
- # This flag is global to all HTTP client instrumentation.
42
- #
43
- # To configure this on a per instrumentation basis, set this
44
- # option to true and instead disable the instrumentation specific
45
- # option <tt>log_args</tt>:
46
- #
47
- # AppOpticsAPM::Config[:nethttp][:log_args] = false
48
- # AppOpticsAPM::Config[:excon][:log_args] = false
49
- # AppOpticsAPM::Config[:typhoeus][:log_args] = true
23
+ AppOpticsAPM::Config[:verbose] = ENV.key?('APPOPTICS_GEM_VERBOSE') && ENV['APPOPTICS_GEM_VERBOSE'] == 'true' ? true : false
50
24
  #
51
- AppOpticsAPM::Config[:include_url_query_params] = true
52
25
 
53
26
  #
54
27
  # Sanitize SQL Statements
@@ -57,9 +30,11 @@ if defined?(AppOpticsAPM::Config)
57
30
  # from SQL statements. By default this is enabled. Disable to
58
31
  # collect and report query literals to AppOpticsAPM.
59
32
  #
60
- # AppOpticsAPM::Config[:sanitize_sql] = true
61
- #
33
+ AppOpticsAPM::Config[:sanitize_sql] = true
34
+ AppOpticsAPM::Config[:sanitize_sql_regexp] = '(\'[\s\S][^\']*\'|\d*\.\d+|\d+|NULL)'
35
+ AppOpticsAPM::Config[:sanitize_sql_opts] = Regexp::IGNORECASE
62
36
 
37
+ #
63
38
  # Do Not Trace
64
39
  # These two values allow you to configure specific URL patterns to
65
40
  # never be traced. By default, this is set to common static file
@@ -85,8 +60,8 @@ if defined?(AppOpticsAPM::Config)
85
60
  # Requests with positive matches (non nil) will not be traced.
86
61
  # See lib/appoptics_apm/util.rb: AppOpticsAPM::Util.static_asset?
87
62
  #
88
- # AppOpticsAPM::Config[:dnt_regexp] = "\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|ttf|woff|svg|less)$"
89
- # AppOpticsAPM::Config[:dnt_opts] = Regexp::IGNORECASE
63
+ AppOpticsAPM::Config[:dnt_regexp] = '\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|otf|eot|ttf|woff|woff2|svg|less)(\?.+){0,1}$'
64
+ AppOpticsAPM::Config[:dnt_opts] = Regexp::IGNORECASE
90
65
 
91
66
  #
92
67
  # Blacklist urls
@@ -99,7 +74,7 @@ if defined?(AppOpticsAPM::Config)
99
74
  #
100
75
  # Example: AppOpticsAPM::Config[:blacklist] = ['google.com']
101
76
  #
102
- # AppOpticsAPM::Config[:blacklist]
77
+ AppOpticsAPM::Config[:blacklist] = []
103
78
  #
104
79
 
105
80
  #
@@ -110,7 +85,7 @@ if defined?(AppOpticsAPM::Config)
110
85
  # dashboard by default. Setting this value to true will
111
86
  # report all raised exception regardless.
112
87
  #
113
- # AppOpticsAPM::Config[:report_rescued_errors] = false
88
+ AppOpticsAPM::Config[:report_rescued_errors] = false
114
89
  #
115
90
 
116
91
  #
@@ -129,54 +104,66 @@ if defined?(AppOpticsAPM::Config)
129
104
  # are not specified in the publish, then nothing
130
105
  # will be reported here.
131
106
  #
132
- # AppOpticsAPM::Config[:bunnyconsumer][:controller] = :app_id
133
- # AppOpticsAPM::Config[:bunnyconsumer][:action] = :type
107
+ AppOpticsAPM::Config[:bunnyconsumer][:controller] = :app_id
108
+ AppOpticsAPM::Config[:bunnyconsumer][:action] = :type
134
109
  #
135
110
 
136
111
  #
137
- # Resque Argument logging
112
+ # Enabling/Disabling Instrumentation
138
113
  #
139
- # Set to true to enable Resque argument logging (Default: false)
114
+ # If you're having trouble with one of the instrumentation libraries, they
115
+ # can be individually disabled here by setting the :enabled
116
+ # value to false:
140
117
  #
141
- # AppOpticsAPM::Config[:resqueworker][:log_args] = false
142
- # AppOpticsAPM::Config[:resqueclient[:log_args] = false
118
+ AppOpticsAPM::Config[:action_controller][:enabled] = true
119
+ AppOpticsAPM::Config[:action_controller_api][:enabled] = true
120
+ AppOpticsAPM::Config[:action_view][:enabled] = true
121
+ AppOpticsAPM::Config[:active_record][:enabled] = true
122
+ AppOpticsAPM::Config[:bunnyclient][:enabled] = true
123
+ AppOpticsAPM::Config[:bunnyconsumer][:enabled] = true
124
+ AppOpticsAPM::Config[:cassandra][:enabled] = true
125
+ AppOpticsAPM::Config[:curb][:enabled] = true
126
+ AppOpticsAPM::Config[:dalli][:enabled] = true
127
+ AppOpticsAPM::Config[:delayed_jobclient][:enabled] = true
128
+ AppOpticsAPM::Config[:delayed_jobworker][:enabled] = true
129
+ AppOpticsAPM::Config[:em_http_request][:enabled] = false
130
+ AppOpticsAPM::Config[:excon][:enabled] = true
131
+ AppOpticsAPM::Config[:faraday][:enabled] = true
132
+ AppOpticsAPM::Config[:grape][:enabled] = true
133
+ AppOpticsAPM::Config[:httpclient][:enabled] = true
134
+ AppOpticsAPM::Config[:memcached][:enabled] = true
135
+ AppOpticsAPM::Config[:mongo][:enabled] = true
136
+ AppOpticsAPM::Config[:moped][:enabled] = true
137
+ AppOpticsAPM::Config[:nethttp][:enabled] = true
138
+ AppOpticsAPM::Config[:rack][:enabled] = true
139
+ AppOpticsAPM::Config[:redis][:enabled] = true
140
+ AppOpticsAPM::Config[:resqueclient][:enabled] = true
141
+ AppOpticsAPM::Config[:resqueworker][:enabled] = true
142
+ AppOpticsAPM::Config[:rest_client][:enabled] = true
143
+ AppOpticsAPM::Config[:sequel][:enabled] = true
144
+ AppOpticsAPM::Config[:sidekiqclient][:enabled] = true
145
+ AppOpticsAPM::Config[:sidekiqworker][:enabled] = true
146
+ AppOpticsAPM::Config[:typhoeus][:enabled] = true
143
147
  #
144
148
 
145
149
  #
146
- # Enabling/Disabling Instrumentation
150
+ # Argument logging
147
151
  #
148
- # If you're having trouble with one of the instrumentation libraries, they
149
- # can be individually disabled here by setting the :enabled
150
- # value to false:
152
+ # for http requests
153
+ # Set to true to enable argument logging
151
154
  #
152
- # AppOpticsAPM::Config[:action_controller][:enabled] = true
153
- # AppOpticsAPM::Config[:action_controller_api][:enabled] = true
154
- # AppOpticsAPM::Config[:action_view][:enabled] = true
155
- # AppOpticsAPM::Config[:active_record][:enabled] = true
156
- # AppOpticsAPM::Config[:bunnyclient][:enabled] = true
157
- # AppOpticsAPM::Config[:bunnyconsumer][:enabled] = true
158
- # AppOpticsAPM::Config[:cassandra][:enabled] = true
159
- # AppOpticsAPM::Config[:curb][:enabled] = true
160
- # AppOpticsAPM::Config[:dalli][:enabled] = true
161
- # AppOpticsAPM::Config[:delayed_jobclient][:enabled] = true
162
- # AppOpticsAPM::Config[:delayed_jobworker][:enabled] = true
163
- # AppOpticsAPM::Config[:em_http_request][:enabled] = true
164
- # AppOpticsAPM::Config[:excon][:enabled] = true
165
- # AppOpticsAPM::Config[:faraday][:enabled] = true
166
- # AppOpticsAPM::Config[:grape][:enabled] = true
167
- # AppOpticsAPM::Config[:httpclient][:enabled] = true
168
- # AppOpticsAPM::Config[:memcached][:enabled] = true
169
- # AppOpticsAPM::Config[:mongo][:enabled] = true
170
- # AppOpticsAPM::Config[:moped][:enabled] = true
171
- # AppOpticsAPM::Config[:nethttp][:enabled] = true
172
- # AppOpticsAPM::Config[:redis][:enabled] = true
173
- # AppOpticsAPM::Config[:resqueclient][:enabled] = true
174
- # AppOpticsAPM::Config[:resqueworker][:enabled] = true
175
- # AppOpticsAPM::Config[:rest_client][:enabled] = true
176
- # AppOpticsAPM::Config[:sequel][:enabled] = true
177
- # AppOpticsAPM::Config[:sidekiqclient][:enabled] = true
178
- # AppOpticsAPM::Config[:sidekiqworker][:enabled] = true
179
- # AppOpticsAPM::Config[:typhoeus][:enabled] = true
155
+ AppOpticsAPM::Config[:bunnyconsumer][:log_args] = true
156
+ AppOpticsAPM::Config[:curb][:log_args] = true
157
+ AppOpticsAPM::Config[:excon][:log_args] = true
158
+ AppOpticsAPM::Config[:httpclient][:log_args] = true
159
+ AppOpticsAPM::Config[:mongo][:log_args] = true
160
+ AppOpticsAPM::Config[:nethttp][:log_args] = true
161
+ AppOpticsAPM::Config[:rack][:log_args] = true
162
+ AppOpticsAPM::Config[:resqueclient][:log_args] = true
163
+ AppOpticsAPM::Config[:resqueworker][:log_args] = true
164
+ AppOpticsAPM::Config[:sidekiqclient][:log_args] = true
165
+ AppOpticsAPM::Config[:sidekiqworker][:log_args] = true
166
+ AppOpticsAPM::Config[:typhoeus][:log_args] = true
180
167
  #
181
168
 
182
169
  #
@@ -187,34 +174,34 @@ if defined?(AppOpticsAPM::Config)
187
174
  # performance but can be useful when trying to locate the source of
188
175
  # a certain call or operation.
189
176
  #
190
- # AppOpticsAPM::Config[:action_controller][:collect_backtraces] = true
191
- # AppOpticsAPM::Config[:action_controller_api][:collect_backtraces] = true
192
- # AppOpticsAPM::Config[:action_view][:collect_backtraces] = true
193
- # AppOpticsAPM::Config[:active_record][:collect_backtraces] = true
194
- # AppOpticsAPM::Config[:bunnyclient][:collect_backtraces] = true
195
- # AppOpticsAPM::Config[:bunnyconsumer][:collect_backtraces] = true
196
- # AppOpticsAPM::Config[:cassandra][:collect_backtraces] = true
197
- # AppOpticsAPM::Config[:curb][:collect_backtraces] = true
198
- # AppOpticsAPM::Config[:dalli][:collect_backtraces] = false
199
- # AppOpticsAPM::Config[:delayed_jobclient][:collect_backtraces] = false
200
- # AppOpticsAPM::Config[:delayed_jobworker][:collect_backtraces] = false
201
- # AppOpticsAPM::Config[:em_http_request][:collect_backtraces] = true
202
- # AppOpticsAPM::Config[:excon][:collect_backtraces] = false
203
- # AppOpticsAPM::Config[:faraday][:collect_backtraces] = false
204
- # AppOpticsAPM::Config[:grape][:collect_backtraces] = false
205
- # AppOpticsAPM::Config[:httpclient][:collect_backtraces] = false
206
- # AppOpticsAPM::Config[:memcached][:collect_backtraces] = false
207
- # AppOpticsAPM::Config[:mongo][:collect_backtraces] = true
208
- # AppOpticsAPM::Config[:moped][:collect_backtraces] = true
209
- # AppOpticsAPM::Config[:nethttp][:collect_backtraces] = true
210
- # AppOpticsAPM::Config[:rack][:collect_backtraces] = true
211
- # AppOpticsAPM::Config[:redis][:collect_backtraces] = false
212
- # AppOpticsAPM::Config[:resqueclient][:collect_backtraces] = true
213
- # AppOpticsAPM::Config[:resqueworker][:collect_backtraces] = true
214
- # AppOpticsAPM::Config[:rest_client][:collect_backtraces] = true
215
- # AppOpticsAPM::Config[:sequel][:collect_backtraces] = true
216
- # AppOpticsAPM::Config[:sidekiqclient][:collect_backtraces] = true
217
- # AppOpticsAPM::Config[:sidekiqworker][:collect_backtraces] = true
218
- # AppOpticsAPM::Config[:typhoeus][:collect_backtraces] = false
219
- #
177
+ AppOpticsAPM::Config[:action_controller][:collect_backtraces] = true
178
+ AppOpticsAPM::Config[:action_controller_api][:collect_backtraces] = true
179
+ AppOpticsAPM::Config[:action_view][:collect_backtraces] = true
180
+ AppOpticsAPM::Config[:active_record][:collect_backtraces] = true
181
+ AppOpticsAPM::Config[:bunnyclient][:collect_backtraces] = false
182
+ AppOpticsAPM::Config[:bunnyconsumer][:collect_backtraces] = false
183
+ AppOpticsAPM::Config[:cassandra][:collect_backtraces] = true
184
+ AppOpticsAPM::Config[:curb][:collect_backtraces] = true
185
+ AppOpticsAPM::Config[:dalli][:collect_backtraces] = false
186
+ AppOpticsAPM::Config[:delayed_jobclient][:collect_backtraces] = false
187
+ AppOpticsAPM::Config[:delayed_jobworker][:collect_backtraces] = false
188
+ AppOpticsAPM::Config[:em_http_request][:collect_backtraces] = true
189
+ AppOpticsAPM::Config[:excon][:collect_backtraces] = true
190
+ AppOpticsAPM::Config[:faraday][:collect_backtraces] = false
191
+ AppOpticsAPM::Config[:grape][:collect_backtraces] = true
192
+ AppOpticsAPM::Config[:httpclient][:collect_backtraces] = true
193
+ AppOpticsAPM::Config[:memcached][:collect_backtraces] = false
194
+ AppOpticsAPM::Config[:mongo][:collect_backtraces] = true
195
+ AppOpticsAPM::Config[:moped][:collect_backtraces] = true
196
+ AppOpticsAPM::Config[:nethttp][:collect_backtraces] = true
197
+ AppOpticsAPM::Config[:rack][:collect_backtraces] = true
198
+ AppOpticsAPM::Config[:redis][:collect_backtraces] = false
199
+ AppOpticsAPM::Config[:resqueclient][:collect_backtraces] = true
200
+ AppOpticsAPM::Config[:resqueworker][:collect_backtraces] = true
201
+ AppOpticsAPM::Config[:rest_client][:collect_backtraces] = true
202
+ AppOpticsAPM::Config[:sequel][:collect_backtraces] = true
203
+ AppOpticsAPM::Config[:sidekiqclient][:collect_backtraces] = false
204
+ AppOpticsAPM::Config[:sidekiqworker][:collect_backtraces] = false
205
+ AppOpticsAPM::Config[:typhoeus][:collect_backtraces] = false
206
+
220
207
  end
@@ -6,7 +6,7 @@ docker build -f Dockerfile -t buildgem .
6
6
  # build the gems in the image
7
7
  docker run --rm -v `pwd`:/code/ruby-appoptics_apm buildgem bash -l -c 'cd /code/ruby-appoptics_apm && ./build_gems.sh'
8
8
 
9
- # save current rbenv setting and switch to 2.4.1 for the package_cloud commands
9
+ # save current rbenv setting and switch to 2.4.3 for the package_cloud commands
10
10
  current_ruby=`rbenv local`
11
11
  rbenv local 2.4.1
12
12
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appoptics_apm
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maia Engeli
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-04-11 00:00:00.000000000 Z
13
+ date: 2018-05-03 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json
@@ -26,6 +26,26 @@ dependencies:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
28
  version: '0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: no_proxy_fix
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: 0.1.2
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: 0.1.2
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - "~>"
44
+ - !ruby/object:Gem::Version
45
+ version: 0.1.2
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: 0.1.2
29
49
  - !ruby/object:Gem::Dependency
30
50
  name: rake
31
51
  requirement: !ruby/object:Gem::Requirement
@@ -85,7 +105,8 @@ dependencies:
85
105
  description: The AppOpticsAPM gem provides performance instrumentation for MRI Ruby
86
106
  and related frameworks.
87
107
  email: support@appoptics.com
88
- executables: []
108
+ executables:
109
+ - appoptics_apm_config
89
110
  extensions:
90
111
  - ext/oboe_metal/extconf.rb
91
112
  extra_rdoc_files:
@@ -108,7 +129,9 @@ files:
108
129
  - Rakefile
109
130
  - Vagrantfile
110
131
  - appoptics_apm.gemspec
132
+ - bin/appoptics_apm_config
111
133
  - build_gems.sh
134
+ - config/initializers/.keep
112
135
  - docker-compose.yml
113
136
  - examples/DNT.md
114
137
  - examples/carrying_context.rb
@@ -129,7 +152,6 @@ files:
129
152
  - ext/oboe_metal/src/oboe_debug.h
130
153
  - ext/oboe_metal/src/oboe_wrap.cxx
131
154
  - ext/oboe_metal/tests/test.rb
132
- - get_version.rb
133
155
  - init.rb
134
156
  - lib/appoptics_apm.rb
135
157
  - lib/appoptics_apm/api.rb
data/get_version.rb DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require File.dirname(__FILE__) + '/lib/oboe/version.rb'
4
-
5
- puts Oboe::Version::STRING