newrelic_rpm 8.6.0 → 8.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +83 -3
  3. data/README.md +1 -1
  4. data/Rakefile +1 -1
  5. data/docker-compose.yml +1 -1
  6. data/lib/new_relic/agent/agent.rb +5 -2
  7. data/lib/new_relic/agent/autostart.rb +13 -10
  8. data/lib/new_relic/agent/configuration/default_source.rb +144 -42
  9. data/lib/new_relic/agent/configuration/environment_source.rb +2 -0
  10. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +2 -2
  11. data/lib/new_relic/agent/instrumentation/active_merchant.rb +14 -0
  12. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +10 -0
  13. data/lib/new_relic/agent/instrumentation/authlogic.rb +10 -0
  14. data/lib/new_relic/agent/instrumentation/data_mapper.rb +12 -0
  15. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +19 -0
  16. data/lib/new_relic/agent/instrumentation/rack/helpers.rb +2 -0
  17. data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +11 -0
  18. data/lib/new_relic/agent/instrumentation/sidekiq.rb +15 -0
  19. data/lib/new_relic/agent/instrumentation/sinatra.rb +21 -11
  20. data/lib/new_relic/agent/instrumentation/sunspot.rb +10 -0
  21. data/lib/new_relic/agent/instrumentation/thread/chain.rb +24 -0
  22. data/lib/new_relic/agent/instrumentation/thread/instrumentation.rb +27 -0
  23. data/lib/new_relic/agent/instrumentation/thread/prepend.rb +22 -0
  24. data/lib/new_relic/agent/instrumentation/thread.rb +20 -0
  25. data/lib/new_relic/agent/pipe_service.rb +1 -2
  26. data/lib/new_relic/agent/stats.rb +48 -23
  27. data/lib/new_relic/agent/tracer.rb +14 -1
  28. data/lib/new_relic/agent/transaction/abstract_segment.rb +2 -1
  29. data/lib/new_relic/agent/transaction/tracing.rb +8 -3
  30. data/lib/new_relic/agent/transaction.rb +24 -4
  31. data/lib/new_relic/agent/transaction_error_primitive.rb +2 -0
  32. data/lib/new_relic/agent/transaction_metrics.rb +5 -4
  33. data/lib/new_relic/agent/vm/mri_vm.rb +13 -1
  34. data/lib/new_relic/control/instrumentation.rb +31 -0
  35. data/lib/new_relic/dependency_detection.rb +1 -1
  36. data/lib/new_relic/language_support.rb +17 -0
  37. data/lib/new_relic/local_environment.rb +2 -0
  38. data/lib/new_relic/supportability_helper.rb +1 -0
  39. data/lib/new_relic/traced_thread.rb +36 -0
  40. data/lib/new_relic/version.rb +1 -1
  41. data/lib/tasks/config.rake +11 -3
  42. data/newrelic.yml +12 -1
  43. data/newrelic_rpm.gemspec +5 -2
  44. metadata +12 -3
@@ -247,17 +247,15 @@ module NewRelic
247
247
  end
248
248
 
249
249
  def self.convert_to_constant_list(raw_value)
250
- const_names = convert_to_list(raw_value)
251
- const_names.map! do |class_name|
252
- const = ::NewRelic::LanguageSupport.constantize(class_name)
253
-
254
- unless const
255
- NewRelic::Agent.logger.warn("Ignoring unrecognized constant '#{class_name}' in #{raw_value}")
256
- end
250
+ return NewRelic::EMPTY_ARRAY if raw_value.nil? || raw_value.empty?
257
251
 
252
+ constants = convert_to_list(raw_value).map! do |class_name|
253
+ const = ::NewRelic::LanguageSupport.constantize(class_name)
254
+ NewRelic::Agent.logger.warn("Ignoring invalid constant '#{class_name}' in #{raw_value}") unless const
258
255
  const
259
256
  end
260
- const_names.compact
257
+ constants.compact!
258
+ constants
261
259
  end
262
260
 
263
261
  def self.enforce_fallback(allowed_values: nil, fallback: nil)
@@ -329,10 +327,11 @@ module NewRelic
329
327
  :public => true,
330
328
  :type => String,
331
329
  :allowed_from_server => false,
332
- :description => 'Your New Relic [license key](/docs/accounts-partnerships/accounts/account-setup/license-key).'
330
+ :description => 'Your New Relic [license key](/docs/apis/intro-apis/new-relic-api-keys/#ingest-license-key).'
333
331
  },
334
332
  :agent_enabled => {
335
333
  :default => DefaultSource.agent_enabled,
334
+ :documentation_default => true,
336
335
  :public => true,
337
336
  :type => Boolean,
338
337
  :allowed_from_server => false,
@@ -364,10 +363,11 @@ module NewRelic
364
363
  },
365
364
  :monitor_mode => {
366
365
  :default => value_of(:enabled),
366
+ :documentation_default => true,
367
367
  :public => true,
368
368
  :type => Boolean,
369
369
  :allowed_from_server => false,
370
- :description => 'When `true`, the agent transmits data about your application to the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector).'
370
+ :description => 'When `true`, the agent transmits data about your app to the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector).'
371
371
  },
372
372
  :test_mode => {
373
373
  :default => false,
@@ -436,20 +436,13 @@ module NewRelic
436
436
  :public => true,
437
437
  :type => Boolean,
438
438
  :allowed_from_server => false,
439
- :description => 'When `true`, the agent captures HTTP request parameters ' \
440
- 'and attaches them to transaction traces, traced errors, and ' \
441
- '[`TransactionError` events](/attribute-dictionary?attribute_name=&events_tids%5B%5D=8241)'\
442
- "\n" \
443
- '<div class="callout-warning">' \
444
- "\n" \
445
- 'When using the `capture_params` setting, the Ruby agent will not attempt ' \
446
- 'to filter secret information. <b>Recommendation:</b> To filter secret information from ' \
447
- 'request parameters, use the [`attributes.include` setting](/docs/agents/ruby-agent/attributes/enable-disable-attributes-ruby) ' \
448
- 'instead. For more information, see the ' \
449
- '<a href="/docs/agents/ruby-agent/attributes/ruby-attribute-examples#ex_req_params">' \
450
- 'Ruby attribute examples</a>.' \
451
- "\n" \
452
- '</div>'
439
+ :description => <<-DESCRIPTION
440
+ When `true`, the agent captures HTTP request parameters and attaches them to transaction traces, traced errors, and [`TransactionError` events](/attribute-dictionary?attribute_name=&events_tids%5B%5D=8241).
441
+
442
+ <Callout variant="caution">
443
+ When using the `capture_params` setting, the Ruby agent will not attempt to filter secret information. <b>Recommendation:</b> To filter secret information from request parameters, use the [`attributes.include` setting](/docs/agents/ruby-agent/attributes/enable-disable-attributes-ruby) instead. For more information, see the <a href="/docs/agents/ruby-agent/attributes/ruby-attribute-examples#ex_req_params">Ruby attribute examples</a>.
444
+ </Callout>
445
+ DESCRIPTION
453
446
  },
454
447
  :config_path => {
455
448
  :default => DefaultSource.config_path,
@@ -523,7 +516,11 @@ module NewRelic
523
516
  :type => Array,
524
517
  :allowed_from_server => false,
525
518
  :transform => DefaultSource.method(:convert_to_regexp_list),
526
- :description => 'Specify an array of Rake tasks to automatically instrument.'
519
+ :description => 'Specify an Array of Rake tasks to automatically instrument. ' \
520
+ 'This configuration option converts the Array to a RegEx list. If you\'d like '\
521
+ 'to allow all tasks by default, use `rake.tasks: [.+]`. No rake tasks will be '\
522
+ 'instrumented unless they\'re added to this list. For more information, '\
523
+ 'visit the (New Relic Rake Instrumentation docs)[/docs/apm/agents/ruby-agent/background-jobs/rake-instrumentation].'
527
524
  },
528
525
  :'rake.connect_timeout' => {
529
526
  :default => 10,
@@ -542,6 +539,7 @@ module NewRelic
542
539
  },
543
540
  :'strip_exception_messages.enabled' => {
544
541
  :default => value_of(:high_security),
542
+ :documentation_default => false,
545
543
  :public => true,
546
544
  :type => Boolean,
547
545
  :allowed_from_server => false,
@@ -759,6 +757,7 @@ module NewRelic
759
757
  },
760
758
  :'audit_log.path' => {
761
759
  :default => DefaultSource.audit_log_path,
760
+ :documentation_default => 'config/newrelic_audit.log',
762
761
  :public => true,
763
762
  :type => String,
764
763
  :allowed_from_server => false,
@@ -815,7 +814,24 @@ module NewRelic
815
814
  :public => true,
816
815
  :type => Boolean,
817
816
  :allowed_from_server => false,
818
- :description => 'If `true`, disables agent middleware for Sinatra. This middleware is responsible for advanced feature support such as [cross application tracing](/docs/apm/transactions/cross-application-traces/cross-application-tracing), [page load timing](/docs/browser/new-relic-browser/getting-started/new-relic-browser), and [error collection](/docs/apm/applications-menu/events/view-apm-error-analytics).'
817
+ :description => <<-DESCRIPTION
818
+ If `true`, disables agent middleware for Sinatra. This middleware is responsible for advanced feature support such as [cross application tracing](/docs/apm/transactions/cross-application-traces/cross-application-tracing), [page load timing](/docs/browser/new-relic-browser/getting-started/new-relic-browser), and [error collection](/docs/apm/applications-menu/events/view-apm-error-analytics).
819
+
820
+ <Callout variant="important">
821
+ Cross application tracing is deprecated in favor of [distributed tracing](https://docs.newrelic.com/docs/apm/distributed-tracing/getting-started/introduction-distributed-tracing). Distributed tracing is on by default for Ruby agent versions 8.0.0 and above. Middlewares are not required to support distributed tracing.
822
+
823
+ To continue using cross application tracing, update the following options in your `newrelic.yml` configuration file:
824
+
825
+ ```
826
+ # newrelic.yml
827
+
828
+ cross_application_tracer:
829
+ enabled: true
830
+ distributed_tracing:
831
+ enabled: false
832
+ ```
833
+ </Callout>
834
+ DESCRIPTION
819
835
  },
820
836
  :disable_view_instrumentation => {
821
837
  :default => false,
@@ -840,6 +856,7 @@ module NewRelic
840
856
  },
841
857
  :disable_activerecord_instrumentation => {
842
858
  :default => value_of(:skip_ar_instrumentation),
859
+ :documentation_default => false,
843
860
  :public => true,
844
861
  :type => Boolean,
845
862
  :allowed_from_server => false,
@@ -863,6 +880,7 @@ module NewRelic
863
880
  },
864
881
  :'instrumentation.net_http' => {
865
882
  :default => instrumentation_value_of(:disable_net_http, :prepend_net_instrumentation),
883
+ :documentation_default => 'auto',
866
884
  :public => true,
867
885
  :type => String,
868
886
  :dynamic_name => true,
@@ -871,6 +889,7 @@ module NewRelic
871
889
  },
872
890
  :'instrumentation.typhoeus' => {
873
891
  :default => instrumentation_value_of(:disable_typhoeus),
892
+ :documentation_default => 'auto',
874
893
  :public => true,
875
894
  :type => String,
876
895
  :dynamic_name => true,
@@ -879,6 +898,7 @@ module NewRelic
879
898
  },
880
899
  :'instrumentation.bunny' => {
881
900
  :default => instrumentation_value_of(:disable_bunny),
901
+ :documentation_default => 'auto',
882
902
  :public => true,
883
903
  :type => String,
884
904
  :dynamic_name => true,
@@ -887,6 +907,7 @@ module NewRelic
887
907
  },
888
908
  :'instrumentation.httprb' => {
889
909
  :default => instrumentation_value_of(:disable_httprb),
910
+ :documentation_default => 'auto',
890
911
  :public => true,
891
912
  :type => String,
892
913
  :dynamic_name => true,
@@ -895,14 +916,31 @@ module NewRelic
895
916
  },
896
917
  :'instrumentation.resque' => {
897
918
  :default => instrumentation_value_of(:disable_resque),
919
+ :documentation_default => 'auto',
898
920
  :public => true,
899
921
  :type => String,
900
922
  :dynamic_name => true,
901
923
  :allowed_from_server => false,
902
924
  :description => "Controls auto-instrumentation of resque at start up. May be one of [auto|prepend|chain|disabled]."
903
925
  },
926
+ :'instrumentation.thread' => {
927
+ :default => 'auto',
928
+ :public => true,
929
+ :type => String,
930
+ :dynamic_name => true,
931
+ :allowed_from_server => false,
932
+ :description => "Controls auto-instrumentation of the Thread class at start up to allow the agent to correctly nest spans inside of an asyncronous transaction. This does not enable the agent to automatically trace all threads created (see `instrumentation.thread.tracing`). May be one of [auto|prepend|chain|disabled]."
933
+ },
934
+ :'instrumentation.thread.tracing' => {
935
+ :default => false,
936
+ :public => true,
937
+ :type => Boolean,
938
+ :allowed_from_server => false,
939
+ :description => "Controls auto-instrumentation of the Thread class at start up to automatically add tracing to all Threads created in the application."
940
+ },
904
941
  :'instrumentation.redis' => {
905
942
  :default => instrumentation_value_of(:disable_redis),
943
+ :documentation_default => 'auto',
906
944
  :public => true,
907
945
  :type => String,
908
946
  :dynamic_name => true,
@@ -911,6 +949,7 @@ module NewRelic
911
949
  },
912
950
  :'instrumentation.rake' => {
913
951
  :default => instrumentation_value_of(:disable_rake),
952
+ :documentation_default => 'auto',
914
953
  :public => :true,
915
954
  :type => String,
916
955
  :dynamic_name => true,
@@ -919,6 +958,7 @@ module NewRelic
919
958
  },
920
959
  :'instrumentation.mongo' => {
921
960
  :default => instrumentation_value_of(:disable_mongo),
961
+ :documentation_default => 'enabled',
922
962
  :public => :true,
923
963
  :type => String,
924
964
  :dynamic_name => true,
@@ -927,6 +967,7 @@ module NewRelic
927
967
  },
928
968
  :'instrumentation.delayed_job' => {
929
969
  :default => instrumentation_value_of(:disable_dj),
970
+ :documentation_default => 'auto',
930
971
  :public => true,
931
972
  :type => String,
932
973
  :dynamic_name => true,
@@ -935,6 +976,7 @@ module NewRelic
935
976
  },
936
977
  :'instrumentation.httpclient' => {
937
978
  :default => instrumentation_value_of(:disable_httpclient),
979
+ :documentation_default => 'auto',
938
980
  :public => true,
939
981
  :type => String,
940
982
  :dynamic_name => true,
@@ -943,6 +985,7 @@ module NewRelic
943
985
  },
944
986
  :'instrumentation.curb' => {
945
987
  :default => instrumentation_value_of(:disable_curb),
988
+ :documentation_default => 'auto',
946
989
  :public => true,
947
990
  :type => String,
948
991
  :dynamic_name => true,
@@ -951,6 +994,7 @@ module NewRelic
951
994
  },
952
995
  :'instrumentation.sinatra' => {
953
996
  :default => instrumentation_value_of(:disable_sinatra),
997
+ :documentation_default => 'auto',
954
998
  :public => :true,
955
999
  :type => String,
956
1000
  :dynamic_name => true,
@@ -959,6 +1003,7 @@ module NewRelic
959
1003
  },
960
1004
  :'instrumentation.rack' => {
961
1005
  :default => instrumentation_value_of(:disable_rack),
1006
+ :documentation_default => 'auto',
962
1007
  :public => true,
963
1008
  :type => String,
964
1009
  :dynamic_name => true,
@@ -969,6 +1014,7 @@ module NewRelic
969
1014
  },
970
1015
  :'instrumentation.rack_urlmap' => {
971
1016
  :default => instrumentation_value_of(:disable_rack_urlmap),
1017
+ :documentation_default => 'auto',
972
1018
  :public => true,
973
1019
  :type => String,
974
1020
  :dynamic_name => true,
@@ -976,7 +1022,8 @@ module NewRelic
976
1022
  :description => 'Controls auto-instrumentation of Rack::URLMap at start up. May be one of [auto|prepend|chain|disabled].'
977
1023
  },
978
1024
  :'instrumentation.puma_rack' => {
979
- :default => instrumentation_value_of(:disable_puma_rack), # TODO: change to value_of(:'instrumentation.rack') when we remove :disable_puma_rack in 8.0)
1025
+ :default => instrumentation_value_of(:disable_puma_rack), # TODO: MAJOR VERSION - change to value_of(:'instrumentation.rack') when we remove :disable_puma_rack in 8.0)
1026
+ :documentation_default => 'auto',
980
1027
  :public => true,
981
1028
  :type => String,
982
1029
  :dynamic_name => true,
@@ -986,7 +1033,8 @@ module NewRelic
986
1033
  "application startup. May be one of [auto|prepend|chain|disabled]."
987
1034
  },
988
1035
  :'instrumentation.puma_rack_urlmap' => {
989
- :default => instrumentation_value_of(:disable_puma_rack_urlmap), # TODO: change to value_of(:'instrumentation.rack_urlmap') when we remove :disable_puma_rack_urlmap in 8.0)
1036
+ :default => instrumentation_value_of(:disable_puma_rack_urlmap), # TODO: MAJOR VERSION - change to value_of(:'instrumentation.rack_urlmap') when we remove :disable_puma_rack_urlmap in 8.0)
1037
+ :documentation_default => 'auto',
990
1038
  :public => true,
991
1039
  :type => String,
992
1040
  :dynamic_name => true,
@@ -995,6 +1043,7 @@ module NewRelic
995
1043
  },
996
1044
  :'instrumentation.memcached' => {
997
1045
  :default => instrumentation_value_of(:disable_memcached),
1046
+ :documentation_default => 'auto',
998
1047
  :public => true,
999
1048
  :type => String,
1000
1049
  :dynamic_name => true,
@@ -1003,6 +1052,7 @@ module NewRelic
1003
1052
  },
1004
1053
  :'instrumentation.memcache_client' => {
1005
1054
  :default => instrumentation_value_of(:disable_memcache_client),
1055
+ :documentation_default => 'auto',
1006
1056
  :public => true,
1007
1057
  :type => String,
1008
1058
  :dynamic_name => true,
@@ -1011,6 +1061,7 @@ module NewRelic
1011
1061
  },
1012
1062
  :'instrumentation.memcache' => {
1013
1063
  :default => instrumentation_value_of(:disable_dalli),
1064
+ :documentation_default => 'auto',
1014
1065
  :public => true,
1015
1066
  :type => String,
1016
1067
  :dynamic_name => true,
@@ -1019,6 +1070,7 @@ module NewRelic
1019
1070
  },
1020
1071
  :'instrumentation.logger' => {
1021
1072
  :default => instrumentation_value_from_boolean(:'application_logging.enabled'),
1073
+ :documentation_default => 'auto',
1022
1074
  :public => true,
1023
1075
  :type => String,
1024
1076
  :dynamic_name => true,
@@ -1066,6 +1118,7 @@ module NewRelic
1066
1118
  },
1067
1119
  :disable_memcached => {
1068
1120
  :default => value_of(:disable_memcache_instrumentation),
1121
+ :documentation_default => false,
1069
1122
  :public => true,
1070
1123
  :type => Boolean,
1071
1124
  :deprecated => true,
@@ -1074,6 +1127,7 @@ module NewRelic
1074
1127
  },
1075
1128
  :disable_memcache_client => {
1076
1129
  :default => value_of(:disable_memcache_instrumentation),
1130
+ :documentation_default => false,
1077
1131
  :public => true,
1078
1132
  :type => Boolean,
1079
1133
  :deprecated => true,
@@ -1082,6 +1136,7 @@ module NewRelic
1082
1136
  },
1083
1137
  :disable_dalli => {
1084
1138
  :default => value_of(:disable_memcache_instrumentation),
1139
+ :documentation_default => false,
1085
1140
  :public => true,
1086
1141
  :type => Boolean,
1087
1142
  :deprecated => true,
@@ -1090,6 +1145,7 @@ module NewRelic
1090
1145
  },
1091
1146
  :disable_dalli_cas_client => {
1092
1147
  :default => value_of(:disable_memcache_instrumentation),
1148
+ :documentation_default => false,
1093
1149
  :public => true,
1094
1150
  :type => Boolean,
1095
1151
  :deprecated => true,
@@ -1166,11 +1222,9 @@ module NewRelic
1166
1222
 
1167
1223
  By default, this is set to `obfuscated`, which strips out the numeric and string literals.
1168
1224
 
1169
- <ul>
1170
- <li>If you do not want the agent to capture query information, set this to `none`.</li>
1171
- <li>If you want the agent to capture all query information in its original form, set this to `raw`.</li>
1172
- <li>When you enable [high security mode](/docs/agents/manage-apm-agents/configuration/high-security-mode), this is automatically set to `obfuscated`.</li>
1173
- </ul>
1225
+ - If you do not want the agent to capture query information, set this to `none`.
1226
+ - If you want the agent to capture all query information in its original form, set this to `raw`.
1227
+ - When you enable [high security mode](/docs/agents/manage-apm-agents/configuration/high-security-mode), this is automatically set to `obfuscated`.
1174
1228
  '
1175
1229
  },
1176
1230
  :'transaction_tracer.record_redis_arguments' => {
@@ -1265,6 +1319,7 @@ module NewRelic
1265
1319
  },
1266
1320
  :'slow_sql.enabled' => {
1267
1321
  :default => value_of(:'transaction_tracer.enabled'),
1322
+ :documentation_default => true,
1268
1323
  :public => true,
1269
1324
  :type => Boolean,
1270
1325
  :allowed_from_server => true,
@@ -1272,6 +1327,7 @@ module NewRelic
1272
1327
  },
1273
1328
  :'slow_sql.explain_threshold' => {
1274
1329
  :default => value_of(:'transaction_tracer.explain_threshold'),
1330
+ :documentation_default => 0.5,
1275
1331
  :public => true,
1276
1332
  :type => Float,
1277
1333
  :allowed_from_server => true,
@@ -1279,6 +1335,7 @@ module NewRelic
1279
1335
  },
1280
1336
  :'slow_sql.explain_enabled' => {
1281
1337
  :default => value_of(:'transaction_tracer.explain_enabled'),
1338
+ :documentation_default => true,
1282
1339
  :public => true,
1283
1340
  :type => Boolean,
1284
1341
  :allowed_from_server => true,
@@ -1286,6 +1343,7 @@ module NewRelic
1286
1343
  },
1287
1344
  :'slow_sql.record_sql' => {
1288
1345
  :default => value_of(:'transaction_tracer.record_sql'),
1346
+ :documentation_default => 'obfuscated',
1289
1347
  :public => true,
1290
1348
  :type => String,
1291
1349
  :allowed_from_server => true,
@@ -1334,7 +1392,13 @@ module NewRelic
1334
1392
  :deprecated => true,
1335
1393
  :allowed_from_server => true,
1336
1394
  :dynamic_name => true,
1337
- :description => 'Use `error_collector.ignore_classes` instead. Specify a comma-delimited list of error classes that the agent should ignore.'
1395
+ :description => <<-DESCRIPTION
1396
+ Use `error_collector.ignore_classes` instead. Specify a comma-delimited list of error classes that the agent should ignore.
1397
+
1398
+ <Callout variant="caution">
1399
+ Server side configuration takes precedence for this setting over all environment configurations. This differs from all other configuration settings where environment variable take precedence over server side configuration.
1400
+ </Callout>
1401
+ DESCRIPTION
1338
1402
  },
1339
1403
  :'error_collector.ignore_classes' => {
1340
1404
  :default => [],
@@ -1342,7 +1406,13 @@ module NewRelic
1342
1406
  :type => Array,
1343
1407
  :allowed_from_server => true,
1344
1408
  :dynamic_name => true,
1345
- :description => 'A list of error classes that the agent should ignore. *Note: this setting cannot be set via environment variable.*'
1409
+ :description => <<-DESCRIPTION
1410
+ A list of error classes that the agent should ignore.
1411
+
1412
+ <Callout variant="caution">
1413
+ This option can't be set via environment variable.
1414
+ </Callout>
1415
+ DESCRIPTION
1346
1416
  },
1347
1417
  :'error_collector.ignore_messages' => {
1348
1418
  :default => {},
@@ -1350,7 +1420,13 @@ module NewRelic
1350
1420
  :type => Hash,
1351
1421
  :allowed_from_server => true,
1352
1422
  :dynamic_name => true,
1353
- :description => 'A map of error classes to a list of messages. When an error of one of the classes specified here occurs, if its error message contains one of the strings corresponding to it here, that error will be ignored. *Note: this setting cannot be set via environment variable.*'
1423
+ :description => <<-DESCRIPTION
1424
+ A map of error classes to a list of messages. When an error of one of the classes specified here occurs, if its error message contains one of the strings corresponding to it here, that error will be ignored.
1425
+
1426
+ <Callout variant="caution">
1427
+ This option can't be set via environment variable.
1428
+ </Callout>
1429
+ DESCRIPTION
1354
1430
  },
1355
1431
  :'error_collector.ignore_status_codes' => {
1356
1432
  :default => '',
@@ -1366,7 +1442,13 @@ module NewRelic
1366
1442
  :type => Array,
1367
1443
  :allowed_from_server => true,
1368
1444
  :dynamic_name => true,
1369
- :description => 'A list of error classes that the agent should treat as expected. *Note: this setting cannot be set via environment variable.*'
1445
+ :description => <<-DESCRIPTION
1446
+ A list of error classes that the agent should treat as expected.
1447
+
1448
+ <Callout variant="caution">
1449
+ This option can't be set via environment variable.
1450
+ </Callout>
1451
+ DESCRIPTION
1370
1452
  },
1371
1453
  :'error_collector.expected_messages' => {
1372
1454
  :default => {},
@@ -1374,7 +1456,13 @@ module NewRelic
1374
1456
  :type => Hash,
1375
1457
  :allowed_from_server => true,
1376
1458
  :dynamic_name => true,
1377
- :description => 'A map of error classes to a list of messages. When an error of one of the classes specified here occurs, if its error message contains one of the strings corresponding to it here, that error will be treated as expected. *Note: this setting cannot be set via environment variable.*'
1459
+ :description => <<-DESCRIPTION
1460
+ A map of error classes to a list of messages. When an error of one of the classes specified here occurs, if its error message contains one of the strings corresponding to it here, that error will be treated as expected.
1461
+
1462
+ <Callout variant="caution">
1463
+ This option can't be set via environment variable.
1464
+ </Callout>
1465
+ DESCRIPTION
1378
1466
  },
1379
1467
  :'error_collector.expected_status_codes' => {
1380
1468
  :default => '',
@@ -1393,6 +1481,7 @@ module NewRelic
1393
1481
  },
1394
1482
  :'error_collector.capture_events' => {
1395
1483
  :default => value_of(:'error_collector.enabled'),
1484
+ :documentation_default => true,
1396
1485
  :public => true,
1397
1486
  :type => Boolean,
1398
1487
  :allowed_from_server => true,
@@ -1450,6 +1539,7 @@ module NewRelic
1450
1539
  },
1451
1540
  :'browser_monitoring.auto_instrument' => {
1452
1541
  :default => value_of(:'rum.enabled'),
1542
+ :documentation_default => true,
1453
1543
  :public => true,
1454
1544
  :type => Boolean,
1455
1545
  :allowed_from_server => true,
@@ -1550,6 +1640,7 @@ module NewRelic
1550
1640
  },
1551
1641
  :'thread_profiler.enabled' => {
1552
1642
  :default => DefaultSource.thread_profiler_enabled,
1643
+ :documentation_default => false,
1553
1644
  :public => true,
1554
1645
  :type => Boolean,
1555
1646
  :allowed_from_server => true,
@@ -1587,6 +1678,7 @@ module NewRelic
1587
1678
  },
1588
1679
  :'transaction_events.enabled' => {
1589
1680
  :default => value_of(:'analytics_events.enabled'),
1681
+ :documentation_default => true,
1590
1682
  :public => true,
1591
1683
  :type => Boolean,
1592
1684
  :allowed_from_server => true,
@@ -1594,6 +1686,7 @@ module NewRelic
1594
1686
  },
1595
1687
  :'transaction_events.max_samples_stored' => {
1596
1688
  :default => value_of(:'analytics_events.max_samples_stored'),
1689
+ :documentation_default => 1200,
1597
1690
  :public => true,
1598
1691
  :type => Integer,
1599
1692
  :allowed_from_server => true,
@@ -1697,6 +1790,7 @@ module NewRelic
1697
1790
  },
1698
1791
  :'instrumentation.excon' => {
1699
1792
  :default => instrumentation_value_of(:disable_excon),
1793
+ :documentation_default => 'enabled',
1700
1794
  :public => :true,
1701
1795
  :type => String,
1702
1796
  :dynamic_name => true,
@@ -1742,6 +1836,7 @@ module NewRelic
1742
1836
  },
1743
1837
  :disable_puma_rack => {
1744
1838
  :default => value_of(:disable_rack),
1839
+ :documentation_default => false,
1745
1840
  :public => true,
1746
1841
  :type => Boolean,
1747
1842
  :dynamic_name => true,
@@ -1751,6 +1846,7 @@ module NewRelic
1751
1846
  },
1752
1847
  :disable_puma_rack_urlmap => {
1753
1848
  :default => value_of(:disable_rack_urlmap),
1849
+ :documentation_default => false,
1754
1850
  :public => true,
1755
1851
  :type => Boolean,
1756
1852
  :dynamic_name => true,
@@ -1817,7 +1913,7 @@ module NewRelic
1817
1913
  :public => true,
1818
1914
  :type => String,
1819
1915
  :allowed_from_server => false,
1820
- :description => 'A dictionary of [label names](/docs/data-analysis/user-interface-functions/labels-categories-organize-your-apps-servers) and values that will be applied to the data sent from your agent. May also be expressed as a semicolon-delimited `;` string of colon-separated `:` pairs. For example, `<var>Server</var>:<var>One</var>;<var>Data Center</var>:<var>Primary</var>`.'
1916
+ :description => 'A dictionary of [label names](/docs/data-analysis/user-interface-functions/labels-categories-organize-your-apps-servers) and values that will be applied to the data sent from this agent. May also be expressed as a semicolon-delimited `;` string of colon-separated `:` pairs. For example, `<var>Server</var>:<var>One</var>;<var>Data Center</var>:<var>Primary</var>`.'
1821
1917
  },
1822
1918
  :aggressive_keepalive => {
1823
1919
  :default => true,
@@ -1875,7 +1971,7 @@ module NewRelic
1875
1971
  :public => true,
1876
1972
  :type => Integer,
1877
1973
  :allowed_from_server => true,
1878
- :description => 'Defines the maximum number of span events reported from a single harvest. Any Integer between 1 and 10000 is valid.',
1974
+ :description => 'Specify a maximum number of custom events to buffer in memory at a time.',
1879
1975
  :dynamic_name => true
1880
1976
  },
1881
1977
  :'application_logging.enabled' => {
@@ -1886,7 +1982,7 @@ module NewRelic
1886
1982
  :description => 'If `true`, enables log decoration and the collection of log events and metrics.'
1887
1983
  },
1888
1984
  :'application_logging.forwarding.enabled' => {
1889
- :default => false,
1985
+ :default => true,
1890
1986
  :public => true,
1891
1987
  :type => Boolean,
1892
1988
  :allowed_from_server => false,
@@ -1916,6 +2012,7 @@ module NewRelic
1916
2012
  },
1917
2013
  :'instrumentation.active_support_logger' => {
1918
2014
  :default => instrumentation_value_from_boolean(:'application_logging.enabled'),
2015
+ :documentation_default => 'auto',
1919
2016
  :dynamic_name => true,
1920
2017
  :public => true,
1921
2018
  :type => String,
@@ -1942,6 +2039,7 @@ module NewRelic
1942
2039
  },
1943
2040
  :'instrumentation.grape' => {
1944
2041
  :default => instrumentation_value_of(:disable_grape_instrumentation),
2042
+ :documentation_default => 'auto',
1945
2043
  :public => :true,
1946
2044
  :type => String,
1947
2045
  :dynamic_name => true,
@@ -1957,6 +2055,7 @@ module NewRelic
1957
2055
  },
1958
2056
  :'transaction_tracer.attributes.enabled' => {
1959
2057
  :default => value_of(:'transaction_tracer.capture_attributes'),
2058
+ :documentation_default => true,
1960
2059
  :public => true,
1961
2060
  :type => Boolean,
1962
2061
  :allowed_from_server => false,
@@ -1964,6 +2063,7 @@ module NewRelic
1964
2063
  },
1965
2064
  :'transaction_events.attributes.enabled' => {
1966
2065
  :default => value_of(:'analytics_events.capture_attributes'),
2066
+ :documentation_default => true,
1967
2067
  :public => true,
1968
2068
  :type => Boolean,
1969
2069
  :allowed_from_server => false,
@@ -1971,6 +2071,7 @@ module NewRelic
1971
2071
  },
1972
2072
  :'error_collector.attributes.enabled' => {
1973
2073
  :default => value_of(:'error_collector.capture_attributes'),
2074
+ :documentation_default => true,
1974
2075
  :public => true,
1975
2076
  :type => Boolean,
1976
2077
  :allowed_from_server => false,
@@ -1978,6 +2079,7 @@ module NewRelic
1978
2079
  },
1979
2080
  :'browser_monitoring.attributes.enabled' => {
1980
2081
  :default => value_of(:'browser_monitoring.capture_attributes'),
2082
+ :documentation_default => false,
1981
2083
  :public => true,
1982
2084
  :type => Boolean,
1983
2085
  :allowed_from_server => false,
@@ -2272,7 +2374,7 @@ module NewRelic
2272
2374
  :public => true,
2273
2375
  :type => Integer,
2274
2376
  :allowed_from_server => true,
2275
- :description => 'Defines the maximum number of span events reported from a single harvest.'
2377
+ :description => 'Defines the maximum number of span events reported from a single harvest. Any Integer between 1 and 10000 is valid.'
2276
2378
  },
2277
2379
  :'exclude_newrelic_header' => {
2278
2380
  :default => false,
@@ -90,6 +90,8 @@ module NewRelic
90
90
  self[config_key] = value.to_f
91
91
  elsif type == Symbol
92
92
  self[config_key] = value.to_sym
93
+ elsif type == Array
94
+ self[config_key] = value.split(/\s*,\s*/)
93
95
  elsif type == NewRelic::Agent::Configuration::Boolean
94
96
  if value =~ /false|off|no/i
95
97
  self[config_key] = false
@@ -71,8 +71,8 @@ module NewRelic
71
71
  )
72
72
  end
73
73
 
74
- def format_metric_name(metric_action, controller_name)
75
- controller_class = ::NewRelic::LanguageSupport.constantize(controller_name)
74
+ def format_metric_name(metric_action, controller)
75
+ controller_class = controller.is_a?(Class) ? controller : Object.const_get(controller)
76
76
  "Controller/#{controller_class.controller_path}/#{metric_action}"
77
77
  end
78
78
 
@@ -34,4 +34,18 @@ DependencyDetection.defer do
34
34
  end
35
35
  end
36
36
  end
37
+
38
+ executes do
39
+ next unless Gem::Version.new(ActiveMerchant::VERSION) < Gem::Version.new('1.65.0')
40
+ deprecation_msg = 'The Ruby Agent is dropping support for ActiveMerchant versions below 1.65.0 ' \
41
+ 'in version 9.0.0. Please upgrade your ActiveMerchant version to continue receiving full support. ' \
42
+
43
+ ::NewRelic::Agent.logger.log_once(
44
+ :warn,
45
+ :deprecated_active_merchant_version,
46
+ deprecation_msg
47
+ )
48
+
49
+ ::NewRelic::Agent.record_metric("Supportability/Deprecated/ActiveMerchant", 1)
50
+ end
37
51
  end
@@ -44,6 +44,16 @@ DependencyDetection.defer do
44
44
 
45
45
  executes do
46
46
  ::NewRelic::Agent.logger.info 'Installing ActsAsSolr instrumentation'
47
+ deprecation_msg = 'The instrumentation for ActsAsSolr is deprecated. ' \
48
+ 'It will be removed in version 9.0.0.' \
49
+
50
+ ::NewRelic::Agent.logger.log_once(
51
+ :warn,
52
+ :deprecated_acts_as_solr,
53
+ deprecation_msg
54
+ )
55
+
56
+ ::NewRelic::Agent.record_metric("Supportability/Deprecated/ActsAsSolr", 1)
47
57
  end
48
58
 
49
59
  executes do