newrelic_rpm 8.15.0 → 9.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.build_ignore +26 -0
- data/CHANGELOG.md +538 -44
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +1 -1
- data/README.md +11 -6
- data/Rakefile +9 -9
- data/Thorfile +1 -1
- data/bin/newrelic +1 -0
- data/bin/newrelic_cmd +1 -0
- data/bin/nrdebug +36 -36
- data/init.rb +1 -1
- data/lib/new_relic/agent/agent.rb +3 -16
- data/lib/new_relic/agent/agent_helpers/connect.rb +5 -10
- data/lib/new_relic/agent/agent_helpers/harvest.rb +4 -4
- data/lib/new_relic/agent/agent_helpers/shutdown.rb +5 -5
- data/lib/new_relic/agent/agent_helpers/special_startup.rb +3 -4
- data/lib/new_relic/agent/agent_helpers/start_worker_thread.rb +47 -39
- data/lib/new_relic/agent/agent_helpers/startup.rb +13 -13
- data/lib/new_relic/agent/agent_helpers/transmit.rb +6 -6
- data/lib/new_relic/agent/agent_logger.rb +9 -9
- data/lib/new_relic/agent/attribute_filter.rb +2 -4
- data/lib/new_relic/agent/attribute_pre_filtering.rb +109 -0
- data/lib/new_relic/agent/attribute_processing.rb +2 -2
- data/lib/new_relic/agent/audit_logger.rb +5 -5
- data/lib/new_relic/agent/autostart.rb +1 -1
- data/lib/new_relic/agent/commands/agent_command.rb +2 -2
- data/lib/new_relic/agent/commands/agent_command_router.rb +5 -4
- data/lib/new_relic/agent/commands/thread_profiler_session.rb +8 -8
- data/lib/new_relic/agent/configuration/default_source.rb +428 -586
- data/lib/new_relic/agent/configuration/environment_source.rb +2 -2
- data/lib/new_relic/agent/configuration/high_security_source.rb +3 -5
- data/lib/new_relic/agent/configuration/manager.rb +16 -2
- data/lib/new_relic/agent/configuration/security_policy_source.rb +10 -26
- data/lib/new_relic/agent/configuration/server_source.rb +24 -24
- data/lib/new_relic/agent/configuration/yaml_source.rb +17 -4
- data/lib/new_relic/agent/connect/request_builder.rb +1 -1
- data/lib/new_relic/agent/connect/response_handler.rb +1 -1
- data/lib/new_relic/agent/custom_event_aggregator.rb +4 -4
- data/lib/new_relic/agent/database/explain_plan_helpers.rb +1 -1
- data/lib/new_relic/agent/database/obfuscation_helpers.rb +2 -2
- data/lib/new_relic/agent/database/obfuscator.rb +2 -2
- data/lib/new_relic/agent/database.rb +4 -18
- data/lib/new_relic/agent/datastores/metric_helper.rb +5 -5
- data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +11 -11
- data/lib/new_relic/agent/datastores/redis.rb +6 -6
- data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +8 -10
- data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +10 -10
- data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +7 -7
- data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +1 -1
- data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +6 -6
- data/lib/new_relic/agent/distributed_tracing/trace_context.rb +7 -7
- data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +4 -4
- data/lib/new_relic/agent/distributed_tracing.rb +6 -6
- data/lib/new_relic/agent/error_collector.rb +36 -8
- data/lib/new_relic/agent/error_filter.rb +5 -5
- data/lib/new_relic/agent/error_trace_aggregator.rb +5 -4
- data/lib/new_relic/agent/event_loop.rb +3 -3
- data/lib/new_relic/agent/external.rb +1 -1
- data/lib/new_relic/agent/harvester.rb +1 -3
- data/lib/new_relic/agent/heap.rb +2 -1
- data/lib/new_relic/agent/hostname.rb +1 -1
- data/lib/new_relic/agent/http_clients/abstract.rb +9 -21
- data/lib/new_relic/agent/http_clients/async_http_wrappers.rb +83 -0
- data/lib/new_relic/agent/http_clients/curb_wrappers.rb +7 -3
- data/lib/new_relic/agent/http_clients/ethon_wrappers.rb +111 -0
- data/lib/new_relic/agent/http_clients/excon_wrappers.rb +7 -5
- data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +4 -0
- data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +6 -2
- data/lib/new_relic/agent/http_clients/httpx_wrappers.rb +93 -0
- data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +5 -1
- data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +8 -5
- data/lib/new_relic/agent/http_clients/uri_util.rb +2 -2
- data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +6 -19
- data/lib/new_relic/agent/instrumentation/action_controller_other_subscriber.rb +42 -0
- data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +3 -2
- data/lib/new_relic/agent/instrumentation/action_dispatch.rb +31 -0
- data/lib/new_relic/agent/instrumentation/action_dispatch_subscriber.rb +64 -0
- data/lib/new_relic/agent/instrumentation/action_mailbox.rb +30 -0
- data/lib/new_relic/agent/instrumentation/action_mailbox_subscriber.rb +33 -0
- data/lib/new_relic/agent/instrumentation/action_mailer.rb +30 -0
- data/lib/new_relic/agent/instrumentation/action_mailer_subscriber.rb +85 -0
- data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +10 -10
- data/lib/new_relic/agent/instrumentation/active_job.rb +16 -3
- data/lib/new_relic/agent/instrumentation/active_job_subscriber.rb +41 -0
- data/lib/new_relic/agent/instrumentation/active_merchant.rb +3 -3
- data/lib/new_relic/agent/instrumentation/active_record.rb +4 -3
- data/lib/new_relic/agent/instrumentation/active_record_helper.rb +38 -36
- data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +5 -4
- data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +2 -2
- data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +3 -2
- data/lib/new_relic/agent/instrumentation/active_storage.rb +4 -0
- data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +2 -30
- data/lib/new_relic/agent/instrumentation/active_support.rb +21 -6
- data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger/chain.rb +69 -0
- data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger/instrumentation.rb +13 -0
- data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger/prepend.rb +37 -0
- data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger.rb +23 -0
- data/lib/new_relic/agent/instrumentation/active_support_logger/instrumentation.rb +4 -0
- data/lib/new_relic/agent/instrumentation/active_support_logger.rb +3 -1
- data/lib/new_relic/agent/instrumentation/active_support_subscriber.rb +41 -0
- data/lib/new_relic/agent/instrumentation/async_http/chain.rb +23 -0
- data/lib/new_relic/agent/instrumentation/async_http/instrumentation.rb +37 -0
- data/lib/new_relic/agent/instrumentation/async_http/prepend.rb +15 -0
- data/lib/new_relic/agent/instrumentation/async_http.rb +26 -0
- data/lib/new_relic/agent/instrumentation/bunny/chain.rb +1 -1
- data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +12 -3
- data/lib/new_relic/agent/instrumentation/bunny.rb +1 -1
- data/lib/new_relic/agent/instrumentation/concurrent_ruby/chain.rb +1 -1
- data/lib/new_relic/agent/instrumentation/concurrent_ruby/instrumentation.rb +3 -4
- data/lib/new_relic/agent/instrumentation/concurrent_ruby/prepend.rb +1 -1
- data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +7 -6
- data/lib/new_relic/agent/instrumentation/curb/chain.rb +1 -1
- data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +9 -5
- data/lib/new_relic/agent/instrumentation/curb.rb +1 -1
- data/lib/new_relic/agent/instrumentation/custom_events.rb +12 -0
- data/lib/new_relic/agent/instrumentation/custom_events_subscriber.rb +2 -1
- data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +1 -0
- data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +4 -1
- data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +2 -1
- data/lib/new_relic/agent/instrumentation/elasticsearch/chain.rb +2 -2
- data/lib/new_relic/agent/instrumentation/elasticsearch/instrumentation.rb +8 -4
- data/lib/new_relic/agent/instrumentation/elasticsearch.rb +2 -2
- data/lib/new_relic/agent/instrumentation/ethon/chain.rb +39 -0
- data/lib/new_relic/agent/instrumentation/ethon/instrumentation.rb +105 -0
- data/lib/new_relic/agent/instrumentation/ethon/prepend.rb +35 -0
- data/lib/new_relic/agent/instrumentation/ethon.rb +39 -0
- data/lib/new_relic/agent/instrumentation/excon/middleware.rb +5 -1
- data/lib/new_relic/agent/instrumentation/excon.rb +3 -3
- data/lib/new_relic/agent/instrumentation/fiber/chain.rb +27 -0
- data/lib/new_relic/agent/instrumentation/fiber/instrumentation.rb +23 -0
- data/lib/new_relic/agent/instrumentation/fiber/prepend.rb +25 -0
- data/lib/new_relic/agent/instrumentation/fiber.rb +25 -0
- data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +8 -4
- data/lib/new_relic/agent/instrumentation/grape.rb +4 -4
- data/lib/new_relic/agent/instrumentation/grpc/client/chain.rb +1 -1
- data/lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb +7 -2
- data/lib/new_relic/agent/instrumentation/grpc/client/prepend.rb +1 -1
- data/lib/new_relic/agent/instrumentation/grpc/client/request_wrapper.rb +1 -1
- data/lib/new_relic/agent/instrumentation/grpc/server/instrumentation.rb +8 -4
- data/lib/new_relic/agent/instrumentation/grpc_client.rb +2 -2
- data/lib/new_relic/agent/instrumentation/grpc_server.rb +2 -2
- data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +4 -0
- data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +4 -0
- data/lib/new_relic/agent/instrumentation/httprb.rb +1 -1
- data/lib/new_relic/agent/instrumentation/httpx/chain.rb +20 -0
- data/lib/new_relic/agent/instrumentation/httpx/instrumentation.rb +51 -0
- data/lib/new_relic/agent/instrumentation/httpx/prepend.rb +15 -0
- data/lib/new_relic/agent/instrumentation/httpx.rb +27 -0
- data/lib/new_relic/agent/instrumentation/ignore_actions.rb +1 -1
- data/lib/new_relic/agent/instrumentation/logger/instrumentation.rb +3 -0
- data/lib/new_relic/agent/instrumentation/logger.rb +1 -1
- data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +3 -1
- data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +14 -5
- data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +3 -1
- data/lib/new_relic/agent/instrumentation/memcache.rb +12 -12
- data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +3 -3
- data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +1 -1
- data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +6 -8
- data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +5 -1
- data/lib/new_relic/agent/instrumentation/net_http.rb +2 -2
- data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +46 -1
- data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +7 -3
- data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +2 -2
- data/lib/new_relic/agent/instrumentation/queue_time.rb +1 -1
- data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +7 -1
- data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +7 -2
- data/lib/new_relic/agent/instrumentation/rails_middleware.rb +1 -1
- data/lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb +4 -4
- data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +14 -1
- data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +12 -15
- data/lib/new_relic/agent/instrumentation/rake.rb +3 -3
- data/lib/new_relic/agent/instrumentation/redis/constants.rb +1 -1
- data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +6 -1
- data/lib/new_relic/agent/instrumentation/redis.rb +1 -1
- data/lib/new_relic/agent/instrumentation/resque/helper.rb +1 -1
- data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +4 -0
- data/lib/new_relic/agent/instrumentation/resque.rb +1 -1
- data/lib/new_relic/agent/instrumentation/roda/chain.rb +43 -0
- data/lib/new_relic/agent/instrumentation/roda/ignorer.rb +45 -0
- data/lib/new_relic/agent/instrumentation/roda/instrumentation.rb +68 -0
- data/lib/new_relic/agent/instrumentation/roda/prepend.rb +24 -0
- data/lib/new_relic/agent/instrumentation/roda/roda_transaction_namer.rb +29 -0
- data/lib/new_relic/agent/instrumentation/roda.rb +36 -0
- data/lib/new_relic/agent/instrumentation/sequel.rb +8 -9
- data/lib/new_relic/agent/instrumentation/sequel_helper.rb +10 -10
- data/lib/new_relic/agent/instrumentation/sidekiq/client.rb +4 -0
- data/lib/new_relic/agent/instrumentation/sidekiq/extensions/delayed_class.rb +1 -1
- data/lib/new_relic/agent/instrumentation/sidekiq/server.rb +26 -3
- data/lib/new_relic/agent/instrumentation/sidekiq.rb +6 -3
- data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +1 -1
- data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +10 -5
- data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +2 -4
- data/lib/new_relic/agent/instrumentation/stripe.rb +28 -0
- data/lib/new_relic/agent/instrumentation/stripe_subscriber.rb +77 -0
- data/lib/new_relic/agent/instrumentation/thread/chain.rb +1 -1
- data/lib/new_relic/agent/instrumentation/thread/instrumentation.rb +3 -8
- data/lib/new_relic/agent/instrumentation/thread/prepend.rb +1 -1
- data/lib/new_relic/agent/instrumentation/tilt/instrumentation.rb +6 -1
- data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +10 -6
- data/lib/new_relic/agent/javascript_instrumentor.rb +29 -24
- data/lib/new_relic/agent/linking_metadata.rb +2 -2
- data/lib/new_relic/agent/log_event_aggregator.rb +64 -17
- data/lib/new_relic/agent/log_event_attributes.rb +115 -0
- data/lib/new_relic/agent/logging.rb +77 -37
- data/lib/new_relic/agent/messaging.rb +9 -7
- data/lib/new_relic/agent/method_tracer.rb +7 -7
- data/lib/new_relic/agent/method_tracer_helpers.rb +27 -6
- data/lib/new_relic/agent/monitors/cross_app_monitor.rb +4 -5
- data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +1 -1
- data/lib/new_relic/agent/monitors/synthetics_monitor.rb +12 -1
- data/lib/new_relic/agent/new_relic_service/encoders.rb +1 -1
- data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +2 -2
- data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +0 -1
- data/lib/new_relic/agent/new_relic_service.rb +47 -32
- data/lib/new_relic/agent/obfuscator.rb +1 -1
- data/lib/new_relic/agent/parameter_filtering.rb +6 -6
- data/lib/new_relic/agent/pipe_channel_manager.rb +7 -6
- data/lib/new_relic/agent/pipe_service.rb +5 -3
- data/lib/new_relic/agent/priority_sampled_buffer.rb +1 -1
- data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +0 -1
- data/lib/new_relic/agent/rules_engine.rb +1 -1
- data/lib/new_relic/agent/sampler.rb +2 -1
- data/lib/new_relic/agent/sampler_collection.rb +1 -1
- data/lib/new_relic/agent/samplers/cpu_sampler.rb +5 -5
- data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +9 -9
- data/lib/new_relic/agent/samplers/memory_sampler.rb +9 -9
- data/lib/new_relic/agent/samplers/object_sampler.rb +1 -1
- data/lib/new_relic/agent/span_event_aggregator.rb +4 -4
- data/lib/new_relic/agent/span_event_primitive.rb +18 -6
- data/lib/new_relic/agent/sql_sampler.rb +2 -2
- data/lib/new_relic/agent/stats.rb +1 -1
- data/lib/new_relic/agent/synthetics_event_aggregator.rb +1 -1
- data/lib/new_relic/agent/system_info.rb +36 -10
- data/lib/new_relic/agent/threading/agent_thread.rb +1 -1
- data/lib/new_relic/agent/threading/backtrace_node.rb +3 -3
- data/lib/new_relic/agent/threading/backtrace_service.rb +3 -7
- data/lib/new_relic/agent/threading/thread_profile.rb +5 -5
- data/lib/new_relic/agent/timestamp_sampled_buffer.rb +1 -1
- data/lib/new_relic/agent/tracer.rb +25 -16
- data/lib/new_relic/agent/transaction/abstract_segment.rb +109 -48
- data/lib/new_relic/agent/transaction/datastore_segment.rb +1 -1
- data/lib/new_relic/agent/transaction/distributed_tracer.rb +7 -6
- data/lib/new_relic/agent/transaction/distributed_tracing.rb +13 -14
- data/lib/new_relic/agent/transaction/external_request_segment.rb +16 -13
- data/lib/new_relic/agent/transaction/message_broker_segment.rb +2 -3
- data/lib/new_relic/agent/transaction/request_attributes.rb +47 -11
- data/lib/new_relic/agent/transaction/segment.rb +1 -1
- data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +1 -1
- data/lib/new_relic/agent/transaction/trace.rb +1 -1
- data/lib/new_relic/agent/transaction/trace_context.rb +4 -4
- data/lib/new_relic/agent/transaction/trace_node.rb +8 -7
- data/lib/new_relic/agent/transaction/tracing.rb +10 -4
- data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +1 -1
- data/lib/new_relic/agent/transaction.rb +90 -58
- data/lib/new_relic/agent/transaction_error_primitive.rb +21 -5
- data/lib/new_relic/agent/transaction_event_aggregator.rb +4 -4
- data/lib/new_relic/agent/transaction_event_primitive.rb +22 -3
- data/lib/new_relic/agent/transaction_sampler.rb +3 -3
- data/lib/new_relic/agent/transaction_time_aggregator.rb +7 -3
- data/lib/new_relic/agent/utilization/aws.rb +1 -1
- data/lib/new_relic/agent/utilization/azure.rb +3 -3
- data/lib/new_relic/agent/utilization/gcp.rb +4 -6
- data/lib/new_relic/agent/utilization/pcf.rb +1 -1
- data/lib/new_relic/agent/utilization/vendor.rb +6 -8
- data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +1 -1
- data/lib/new_relic/agent/vm/mri_vm.rb +9 -8
- data/lib/new_relic/agent/worker_loop.rb +1 -1
- data/lib/new_relic/agent.rb +133 -36
- data/lib/new_relic/cli/command.rb +4 -3
- data/lib/new_relic/cli/commands/deployments.rb +26 -25
- data/lib/new_relic/cli/commands/install.rb +23 -23
- data/lib/new_relic/collection_helper.rb +2 -2
- data/lib/new_relic/constants.rb +10 -8
- data/lib/new_relic/control/class_methods.rb +4 -10
- data/lib/new_relic/control/frameworks/rails.rb +44 -20
- data/lib/new_relic/control/frameworks/roda.rb +20 -0
- data/lib/new_relic/control/instance_methods.rb +6 -6
- data/lib/new_relic/control/instrumentation.rb +1 -15
- data/lib/new_relic/control/private_instance_methods.rb +1 -1
- data/lib/new_relic/dependency_detection.rb +20 -18
- data/lib/new_relic/environment_report.rb +4 -4
- data/lib/new_relic/helper.rb +2 -1
- data/lib/new_relic/language_support.rb +10 -1
- data/lib/new_relic/latest_changes.rb +6 -6
- data/lib/new_relic/local_environment.rb +0 -10
- data/lib/new_relic/noticed_error.rb +25 -20
- data/lib/new_relic/rack/agent_hooks.rb +1 -1
- data/lib/new_relic/rack/agent_middleware.rb +0 -16
- data/lib/new_relic/rack/browser_monitoring.rb +21 -17
- data/lib/new_relic/recipes/capistrano3.rb +1 -1
- data/lib/new_relic/recipes/capistrano_legacy.rb +6 -6
- data/lib/new_relic/recipes/helpers/send_deployment.rb +5 -5
- data/lib/new_relic/supportability_helper.rb +4 -1
- data/lib/new_relic/traced_thread.rb +2 -3
- data/lib/new_relic/version.rb +2 -2
- data/lib/newrelic_rpm.rb +4 -4
- data/lib/sequel/extensions/{newrelic_instrumentation.rb → new_relic_instrumentation.rb} +6 -6
- data/lib/sequel/plugins/{newrelic_instrumentation.rb → new_relic_instrumentation.rb} +4 -4
- data/lib/tasks/bump_version.rake +21 -0
- data/lib/tasks/config.rake +13 -12
- data/lib/tasks/coverage_report.rake +4 -4
- data/lib/tasks/helpers/config.html.erb +93 -0
- data/lib/tasks/helpers/format.rb +19 -15
- data/lib/tasks/helpers/newrelicyml.rb +144 -0
- data/lib/tasks/helpers/version_bump.rb +62 -0
- data/lib/tasks/install.rake +4 -4
- data/lib/tasks/instrumentation_generator/instrumentation.thor +16 -19
- data/lib/tasks/instrumentation_generator/templates/Envfile.tt +1 -1
- data/lib/tasks/instrumentation_generator/templates/chain.tt +1 -1
- data/lib/tasks/instrumentation_generator/templates/dependency_detection.tt +1 -1
- data/lib/tasks/newrelic.rb +1 -0
- data/lib/tasks/newrelicyml.rake +13 -0
- data/lib/tasks/tests.rake +77 -6
- data/newrelic.yml +393 -274
- data/newrelic_rpm.gemspec +41 -30
- data/test/agent_helper.rb +25 -24
- metadata +172 -35
- data/.gitignore +0 -42
- data/.project +0 -23
- data/.rubocop.yml +0 -1946
- data/.rubocop_todo.yml +0 -62
- data/.simplecov +0 -15
- data/.snyk +0 -11
- data/.yardopts +0 -27
- data/Brewfile +0 -12
- data/DOCKER.md +0 -167
- data/Dockerfile +0 -10
- data/Guardfile +0 -26
- data/config/database.yml +0 -5
- data/config.dot +0 -278
- data/docker-compose.yml +0 -107
- data/lefthook.yml +0 -9
- data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +0 -83
- data/lib/new_relic/agent/instrumentation/authlogic.rb +0 -33
- data/lib/new_relic/agent/instrumentation/data_mapper.rb +0 -215
- data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +0 -36
- data/lib/new_relic/agent/instrumentation/sunspot.rb +0 -41
- data/lib/new_relic/agent/range_extensions.rb +0 -27
- data/lib/tasks/helpers/removers.rb +0 -33
- data/lib/tasks/multiverse.rake +0 -6
- data/lib/tasks/multiverse.rb +0 -77
@@ -8,7 +8,7 @@ require_relative 'helpers/send_deployment'
|
|
8
8
|
namespace :newrelic do
|
9
9
|
include SendDeployment
|
10
10
|
# notifies New Relic of a deployment
|
11
|
-
desc
|
11
|
+
desc 'Record a deployment in New Relic (newrelic.com)'
|
12
12
|
task :notice_deployment do
|
13
13
|
if fetch(:newrelic_role)
|
14
14
|
on roles(fetch(:newrelic_role)) do
|
@@ -5,9 +5,9 @@
|
|
5
5
|
make_notify_task = proc do
|
6
6
|
namespace(:newrelic) do
|
7
7
|
# on all deployments, notify New Relic
|
8
|
-
desc(
|
8
|
+
desc('Record a deployment in New Relic (newrelic.com)')
|
9
9
|
task(:notice_deployment, :roles => :app, :except => {:no_release => true}) do
|
10
|
-
rails_env = fetch(:newrelic_rails_env, fetch(:rails_env,
|
10
|
+
rails_env = fetch(:newrelic_rails_env, fetch(:rails_env, 'production'))
|
11
11
|
|
12
12
|
require 'new_relic/cli/command'
|
13
13
|
|
@@ -36,14 +36,14 @@ make_notify_task = proc do
|
|
36
36
|
:license_key => license_key
|
37
37
|
}
|
38
38
|
|
39
|
-
logger.debug(
|
39
|
+
logger.debug('Uploading deployment to New Relic')
|
40
40
|
deployment = NewRelic::Cli::Deployments.new(deploy_options)
|
41
41
|
deployment.run
|
42
|
-
logger.info(
|
42
|
+
logger.info('Uploaded deployment information to New Relic')
|
43
43
|
rescue NewRelic::Cli::Command::CommandFailure => e
|
44
44
|
logger.info(e.message)
|
45
45
|
rescue Capistrano::CommandError
|
46
|
-
logger.info(
|
46
|
+
logger.info('Unable to notify New Relic of the deployment... skipping')
|
47
47
|
rescue => e
|
48
48
|
logger.info("Error creating New Relic deployment (#{e})\n#{e.backtrace.join("\n")}")
|
49
49
|
end
|
@@ -51,7 +51,7 @@ make_notify_task = proc do
|
|
51
51
|
|
52
52
|
def lookup_changelog(changelog)
|
53
53
|
if !changelog
|
54
|
-
logger.debug(
|
54
|
+
logger.debug('Getting log of changes for New Relic Deployment details')
|
55
55
|
from_revision = source.next_revision(current_revision)
|
56
56
|
|
57
57
|
if scm == :git
|
@@ -5,9 +5,9 @@
|
|
5
5
|
module SendDeployment
|
6
6
|
def send_deployment_notification_to_newrelic
|
7
7
|
require 'new_relic/cli/command'
|
8
|
-
debug(
|
8
|
+
debug('Uploading deployment to New Relic')
|
9
9
|
NewRelic::Cli::Deployments.new(deploy_options).run
|
10
|
-
info(
|
10
|
+
info('Uploaded deployment information to New Relic')
|
11
11
|
rescue NewRelic::Cli::Command::CommandFailure => e
|
12
12
|
info(e.message)
|
13
13
|
rescue => e
|
@@ -34,7 +34,7 @@ module SendDeployment
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def fetch_environment
|
37
|
-
fetch(:newrelic_rails_env, fetch(:rack_env, fetch(:rails_env, fetch(:stage,
|
37
|
+
fetch(:newrelic_rails_env, fetch(:rack_env, fetch(:rails_env, fetch(:stage, 'production'))))
|
38
38
|
end
|
39
39
|
|
40
40
|
def fetch_rev
|
@@ -59,9 +59,9 @@ module SendDeployment
|
|
59
59
|
current_revision = fetch(:current_revision)
|
60
60
|
return unless current_revision && previous_revision
|
61
61
|
|
62
|
-
debug(
|
62
|
+
debug('Retrieving changelog for New Relic Deployment details')
|
63
63
|
|
64
|
-
if Rake::Task.task_defined?(
|
64
|
+
if Rake::Task.task_defined?('git:check')
|
65
65
|
log_command = "git --no-pager log --no-color --pretty=format:' * %an: %s' " +
|
66
66
|
"--abbrev-commit --no-merges #{previous_revision}..#{current_revision}"
|
67
67
|
`#{log_command}`
|
@@ -13,6 +13,7 @@ module NewRelic
|
|
13
13
|
:insert_distributed_trace_headers,
|
14
14
|
:accept_distributed_trace_headers,
|
15
15
|
:add_custom_attributes,
|
16
|
+
:add_custom_log_attributes,
|
16
17
|
:add_custom_span_attributes,
|
17
18
|
:add_instrumentation,
|
18
19
|
:add_method_tracer,
|
@@ -21,7 +22,6 @@ module NewRelic
|
|
21
22
|
:browser_timing_header,
|
22
23
|
:disable_all_tracing,
|
23
24
|
:disable_sql_recording,
|
24
|
-
:disable_transaction_tracing,
|
25
25
|
:drop_buffered_data,
|
26
26
|
:get_request_metadata,
|
27
27
|
:get_response_metadata,
|
@@ -45,8 +45,11 @@ module NewRelic
|
|
45
45
|
:record_metric,
|
46
46
|
:recording_web_transaction?,
|
47
47
|
:require_test_helper,
|
48
|
+
:set_error_group_callback,
|
49
|
+
:set_segment_callback,
|
48
50
|
:set_sql_obfuscator,
|
49
51
|
:set_transaction_name,
|
52
|
+
:set_user_id,
|
50
53
|
:shutdown,
|
51
54
|
:start_segment,
|
52
55
|
:trace,
|
@@ -22,15 +22,14 @@ module NewRelic
|
|
22
22
|
# @api public
|
23
23
|
def initialize(*args, &block)
|
24
24
|
NewRelic::Agent.record_api_supportability_metric(:traced_thread)
|
25
|
-
traced_block = create_traced_block(
|
25
|
+
traced_block = create_traced_block(&block)
|
26
26
|
super(*args, &traced_block)
|
27
27
|
end
|
28
28
|
|
29
|
-
def create_traced_block(
|
29
|
+
def create_traced_block(&block)
|
30
30
|
return block if NewRelic::Agent.config[:'instrumentation.thread.tracing'] # if this is on, don't double trace
|
31
31
|
|
32
32
|
NewRelic::Agent::Tracer.thread_block_with_current_transaction(
|
33
|
-
*args,
|
34
33
|
segment_name: 'Ruby/TracedThread',
|
35
34
|
&block
|
36
35
|
)
|
data/lib/new_relic/version.rb
CHANGED
data/lib/newrelic_rpm.rb
CHANGED
@@ -20,17 +20,17 @@ require 'new_relic/control'
|
|
20
20
|
if defined?(Rails::VERSION)
|
21
21
|
module NewRelic
|
22
22
|
class Railtie < Rails::Railtie
|
23
|
-
if
|
24
|
-
initializer
|
23
|
+
if ENV['NEW_RELIC_DEFER_RAILS_INITIALIZATION']
|
24
|
+
initializer 'newrelic_rpm.include_method_tracers', before: :load_config_initializers do |app|
|
25
25
|
Module.send(:include, NewRelic::Agent::MethodTracer::ClassMethods)
|
26
26
|
Module.send(:include, NewRelic::Agent::MethodTracer)
|
27
27
|
end
|
28
28
|
|
29
|
-
initializer
|
29
|
+
initializer 'newrelic_rpm.start_plugin', after: :load_config_initializers do |app|
|
30
30
|
NewRelic::Control.instance.init_plugin(config: app.config)
|
31
31
|
end
|
32
32
|
else
|
33
|
-
initializer
|
33
|
+
initializer 'newrelic_rpm.start_plugin', before: :load_config_initializers do |app|
|
34
34
|
NewRelic::Control.instance.init_plugin(config: app.config)
|
35
35
|
end
|
36
36
|
end
|
@@ -17,7 +17,7 @@ module Sequel
|
|
17
17
|
# instrumentation is loaded:
|
18
18
|
#
|
19
19
|
# db = Sequel.connect( ... )
|
20
|
-
# db.extension :
|
20
|
+
# db.extension :new_relic_instrumentation
|
21
21
|
#
|
22
22
|
# Versions 3.47.0 and later use `Database.extension` to automatically
|
23
23
|
# install the extension for new connections.
|
@@ -27,12 +27,12 @@ module Sequel
|
|
27
27
|
# If you don't want your models or database connections to be instrumented,
|
28
28
|
# you can disable them by setting `disable_database_instrumentation` in
|
29
29
|
# your `newrelic.yml` to `true`. It will also honor the
|
30
|
-
# `
|
30
|
+
# `disable_active_record_instrumentation` setting.
|
31
31
|
#
|
32
32
|
module NewRelicInstrumentation
|
33
33
|
module Naming
|
34
34
|
def self.query_method_name
|
35
|
-
if Sequel::VERSION >=
|
35
|
+
if Sequel::VERSION >= '4.35.0'
|
36
36
|
:log_connection_yield
|
37
37
|
else
|
38
38
|
:log_yield
|
@@ -86,13 +86,13 @@ module Sequel
|
|
86
86
|
if THREAD_SAFE_CONNECTION_POOL_CLASSES.include?(self.pool.class)
|
87
87
|
self[sql].explain
|
88
88
|
else
|
89
|
-
NewRelic::Agent.logger.log_once(:info, :sequel_explain_skipped,
|
89
|
+
NewRelic::Agent.logger.log_once(:info, :sequel_explain_skipped, 'Not running SQL explains because Sequel is not in recognized multi-threaded mode')
|
90
90
|
nil
|
91
91
|
end
|
92
92
|
end
|
93
93
|
end
|
94
94
|
end # module NewRelicInstrumentation
|
95
95
|
|
96
|
-
NewRelic::Agent.logger.debug(
|
97
|
-
Database.register_extension(:
|
96
|
+
NewRelic::Agent.logger.debug('Registering the :new_relic_instrumentation extension.')
|
97
|
+
Database.register_extension(:new_relic_instrumentation, NewRelicInstrumentation)
|
98
98
|
end # module Sequel
|
@@ -11,7 +11,7 @@ require 'new_relic/agent/datastores/metric_helper'
|
|
11
11
|
module Sequel
|
12
12
|
module Plugins
|
13
13
|
# Sequel::Model instrumentation for the New Relic agent.
|
14
|
-
module
|
14
|
+
module NewRelicInstrumentation
|
15
15
|
# Meta-programming for creating method tracers for the Sequel::Model plugin.
|
16
16
|
module MethodWrapping
|
17
17
|
# Install a method named +method_name+ that will trace execution
|
@@ -38,7 +38,7 @@ module Sequel
|
|
38
38
|
|
39
39
|
# Methods to be added to Sequel::Model instances.
|
40
40
|
module InstanceMethods
|
41
|
-
extend Sequel::Plugins::
|
41
|
+
extend Sequel::Plugins::NewRelicInstrumentation::MethodWrapping
|
42
42
|
|
43
43
|
wrap_sequel_method :delete
|
44
44
|
wrap_sequel_method :destroy
|
@@ -52,9 +52,9 @@ module Sequel
|
|
52
52
|
|
53
53
|
# Methods to be added to Sequel::Model classes.
|
54
54
|
module ClassMethods
|
55
|
-
extend Sequel::Plugins::
|
55
|
+
extend Sequel::Plugins::NewRelicInstrumentation::MethodWrapping
|
56
56
|
|
57
|
-
wrap_sequel_method :[],
|
57
|
+
wrap_sequel_method :[], 'get'
|
58
58
|
wrap_sequel_method :all
|
59
59
|
wrap_sequel_method :first
|
60
60
|
wrap_sequel_method :create
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# This file is distributed under New Relic's license terms.
|
2
|
+
# See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
|
3
|
+
# frozen_string_literal: true
|
4
|
+
|
5
|
+
require_relative 'helpers/version_bump'
|
6
|
+
|
7
|
+
namespace :newrelic do
|
8
|
+
namespace :version do
|
9
|
+
desc 'Returns the current version'
|
10
|
+
task :current do
|
11
|
+
puts "#{NewRelic::VERSION::STRING}"
|
12
|
+
end
|
13
|
+
|
14
|
+
desc 'Update version file and changelog to next version'
|
15
|
+
task :bump, [:format] => [] do |t, args|
|
16
|
+
new_version = VersionBump.update_version
|
17
|
+
VersionBump.update_changelog(new_version)
|
18
|
+
puts "New version: #{new_version}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/tasks/config.rake
CHANGED
@@ -7,9 +7,9 @@ include Format
|
|
7
7
|
|
8
8
|
namespace :newrelic do
|
9
9
|
namespace :config do
|
10
|
-
GENERAL =
|
11
|
-
DISABLING =
|
12
|
-
ATTRIBUTES =
|
10
|
+
GENERAL = 'general'
|
11
|
+
DISABLING = 'disabling'
|
12
|
+
ATTRIBUTES = 'attributes'
|
13
13
|
|
14
14
|
# these configuration options are not able to be set using environment variables
|
15
15
|
NON_ENV_CONFIGS = ['error_collector.ignore_classes', 'error_collector.ignore_messages', 'error_collector.expected_classes', 'error_collector.expected_messages']
|
@@ -18,21 +18,22 @@ namespace :newrelic do
|
|
18
18
|
GENERAL => 'These settings are available for agent configuration. Some settings depend on your New Relic subscription level.',
|
19
19
|
DISABLING => 'Use these settings to toggle instrumentation types during agent startup.',
|
20
20
|
ATTRIBUTES => '[Attributes](/docs/features/agent-attributes) are key-value pairs containing information that determines the properties of an event or transaction. These key-value pairs can be viewed within transaction traces in APM, traced errors in APM, transaction events in dashboards, and page views in dashboards. You can customize exactly which attributes will be sent to each of these destinations',
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
'transaction_tracer' => 'The [transaction traces](/docs/apm/traces/transaction-traces/transaction-traces) feature collects detailed information from a selection of transactions, including a summary of the calling sequence, a breakdown of time spent, and a list of SQL queries and their query plans (on mysql and postgresql). Available features depend on your New Relic subscription level.',
|
22
|
+
'error_collector' => "The agent collects and reports all uncaught exceptions by default. These configuration options allow you to customize the error collection.\n\nFor information on ignored and expected errors, [see this page on Error Analytics in APM](/docs/agents/manage-apm-agents/agent-data/manage-errors-apm-collect-ignore-or-mark-expected/). To set expected errors via the `NewRelic::Agent.notice_error` Ruby method, [consult the Ruby Agent API](/docs/agents/ruby-agent/api-guides/sending-handled-errors-new-relic/).",
|
23
|
+
'browser_monitoring' => "The browser monitoring [page load timing](/docs/browser/new-relic-browser/page-load-timing/page-load-timing-process) feature (sometimes referred to as real user monitoring or RUM) gives you insight into the performance real users are experiencing with your website. This is accomplished by measuring the time it takes for your users' browsers to download and render your web pages by injecting a small amount of JavaScript code into the header and footer of each page.",
|
24
|
+
'application_logging' => "The Ruby agent supports [APM logs in context](/docs/apm/new-relic-apm/getting-started/get-started-logs-context). For some tips on configuring logs for the Ruby agent, see [Configure Ruby logs in context](/docs/logs/logs-context/configure-logs-context-ruby).\n\nAvailable logging-related config options include:",
|
25
|
+
'analytics_events' => '[New Relic dashboards](/docs/query-your-data/explore-query-data/dashboards/introduction-new-relic-one-dashboards) is a resource to gather and visualize data about your software and what it says about your business. With it you can quickly and easily create real-time dashboards to get immediate answers about end-user experiences, clickstreams, mobile activities, and server transactions.'
|
25
26
|
}
|
26
27
|
|
27
28
|
NAME_OVERRIDES = {
|
28
|
-
|
29
|
-
|
29
|
+
'slow_sql' => 'Slow SQL [#slow-sql]',
|
30
|
+
'custom_insights_events' => 'Custom Events [#custom-events]'
|
30
31
|
}
|
31
32
|
|
32
|
-
desc
|
33
|
+
desc 'Describe available New Relic configuration settings'
|
33
34
|
task :docs, [:format] => [] do |t, args|
|
34
|
-
require File.expand_path(File.join(File.dirname(__FILE__),
|
35
|
-
format = args[:format] ||
|
35
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'new_relic', 'agent', 'configuration', 'default_source.rb'))
|
36
|
+
format = args[:format] || 'text'
|
36
37
|
output(format)
|
37
38
|
end
|
38
39
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
1
|
# This file is distributed under New Relic's license terms.
|
3
2
|
# See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
|
3
|
+
# frozen_string_literal: true
|
4
4
|
|
5
5
|
if ENV['CI']
|
6
6
|
namespace :coverage do
|
7
|
-
desc
|
7
|
+
desc 'Collates all result sets generated by the different test runners'
|
8
8
|
task :report do
|
9
9
|
require 'simplecov'
|
10
10
|
require 'fileutils'
|
@@ -19,10 +19,10 @@ if ENV['CI']
|
|
19
19
|
Dir['lib/coverage_{[!r][!e][!s][!u][!l][!t][!s]}*'].each { |dir| FileUtils.rm_rf(dir) }
|
20
20
|
end
|
21
21
|
|
22
|
-
desc
|
22
|
+
desc 'Removes all coverage_* directories'
|
23
23
|
task :clear do
|
24
24
|
require 'fileutils'
|
25
|
-
Dir[
|
25
|
+
Dir['lib/coverage_*'].each { |dir| FileUtils.rm_rf(dir) }
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
@@ -1,3 +1,96 @@
|
|
1
|
+
---
|
2
|
+
title: Ruby agent configuration
|
3
|
+
tags:
|
4
|
+
- Agents
|
5
|
+
- Ruby agent
|
6
|
+
- Configuration
|
7
|
+
metaDescription: 'APM for Ruby: how to configure the Ruby agent, including editing the config file and setting environment variables.'
|
8
|
+
redirects:
|
9
|
+
- /docs/agents/ruby-agent/configuration/ruby-agent-configuration
|
10
|
+
- /docs/ruby/ruby-agent-configuration
|
11
|
+
- /docs/agents/ruby-agent/installation-and-configuration/ruby-agent-configuration
|
12
|
+
- /docs/agents/ruby-agent/installation-configuration/ruby-agent-configuration
|
13
|
+
---
|
14
|
+
|
15
|
+
<CONTRIBUTOR_NOTE>
|
16
|
+
This file is automatically generated from values defined in `lib/new_relic/agent/configuration/default_source.rb`.
|
17
|
+
All changes should be made directly to `default_source.rb.`
|
18
|
+
Submit PRs or raise issues at: https://github.com/newrelic/newrelic-ruby-agent
|
19
|
+
</CONTRIBUTOR_NOTE>
|
20
|
+
|
21
|
+
You can configure the New Relic Ruby agent with settings in a configuration file, environment variables, or programmatically with server-side configuration. This document summarizes the configuration options available for the Ruby agent.
|
22
|
+
|
23
|
+
If the default value for a configuration option is `(Dynamic)`, this means the Ruby agent calculates the default at runtime. The value for the config setting defaults to the value of another setting as appropriate.
|
24
|
+
|
25
|
+
## Configuration methods and precedence [#Options]
|
26
|
+
|
27
|
+
The primary (default) method to configure the Ruby agent is via the configuration file (`newrelic.yml`) in the `config` subdirectory. To set configuration values using environment variables:
|
28
|
+
|
29
|
+
1. Add the prefix `NEW_RELIC_` to the setting's name.
|
30
|
+
2. Replace any periods `.` with underscores `_`.
|
31
|
+
|
32
|
+
You can also configure a few values in the UI via [server-side configuration](/docs/agents/manage-apm-agents/configuration/server-side-agent-configuration).
|
33
|
+
|
34
|
+
The Ruby agent follows this order of precedence for configuration:
|
35
|
+
|
36
|
+
1. Environment variables
|
37
|
+
2. Server-side configuration
|
38
|
+
3. Configuration file (`newrelic.yml`)
|
39
|
+
4. Default configuration settings
|
40
|
+
|
41
|
+
In other words, environment variables override all other configuration settings and info, server-side configuration overrides the configuration file and default config settings, and so on.
|
42
|
+
|
43
|
+
## View and edit config file options [#Edit]
|
44
|
+
|
45
|
+
The Ruby agent's `newrelic.yml` is a standard YAML configuration file. It typically includes a `Defaults` section at the top, plus sections below for each application environment; for example, `Development`, `Testing`, and `Production`.
|
46
|
+
|
47
|
+
The Ruby agent determines which section of the `newrelic.yml` config file to read from by looking at certain environment variables to derive the application's environment. This can be useful, for example, when you want to use `info` for the `log_level` config setting in your production environment, and you want more verbose `log_level` config settings (such as `debug` in your development environment.
|
48
|
+
|
49
|
+
Here is an example `newrelic.yml` config file:
|
50
|
+
|
51
|
+
```yaml
|
52
|
+
common: &default_settings
|
53
|
+
license_key: 'YOUR_LICENSE_KEY'
|
54
|
+
app_name: 'My Application Name'
|
55
|
+
production:
|
56
|
+
<<: *default_settings
|
57
|
+
log_level: info
|
58
|
+
development:
|
59
|
+
<<: *default_settings
|
60
|
+
log_level: debug
|
61
|
+
```
|
62
|
+
|
63
|
+
For non-Rails apps, the Ruby agent looks for the following environment variables, in this order, to determine the application environment:
|
64
|
+
|
65
|
+
1. `NEW_RELIC_ENV`
|
66
|
+
2. `RUBY_ENV`
|
67
|
+
3. `RAILS_ENV`
|
68
|
+
4. `APP_ENV`
|
69
|
+
5. `RACK_ENV`
|
70
|
+
|
71
|
+
If the Ruby agent does not detect values for any of those environment variables, it will default the application environment to `development` and read from the `development` section of the `newrelic.yml` config file.
|
72
|
+
|
73
|
+
When running the Ruby agent in a Rails app, the agent first looks for the `NEW_RELIC_ENV` environment variable to determine the application environment and which section of the `newrelic.yml` to use. If `NEW_RELIC_ENV` is not present, the agent uses the Rails environment (`RAILS_ENV` or `RAILS.env`, depending on the version of Rails) .
|
74
|
+
|
75
|
+
When you edit the config file, be sure to:
|
76
|
+
|
77
|
+
* Indent only with two spaces.
|
78
|
+
* Indent only where relevant, in stanzas such as **`error_collector`**.
|
79
|
+
|
80
|
+
If you do not indent correctly, the agent may throw an `Unable to parse configuration file` error on startup.
|
81
|
+
|
82
|
+
To view the most current list of available Ruby agent configuration options, use the `rake newrelic:config:docs` command. This document describes the most common options.
|
83
|
+
|
84
|
+
## Update the config file [#Updates]
|
85
|
+
|
86
|
+
This documentation applies to the Ruby agent's latest release. For details on earlier versions, refer to the comments in `newrelic.yml` itself.
|
87
|
+
|
88
|
+
To update `newrelic.yml` file after a new release, use the template in the base directory of the agent gem. When you update to new gem versions, examine or diff `config/newrelic.yml` and `newrelic.yml` in the [installation directory](/docs/agents/manage-apm-agents/troubleshooting/find-agent-root-directory#ruby-agent) to take advantage of new configuration options.
|
89
|
+
|
90
|
+
<Callout variant="important">
|
91
|
+
Updating the gem does not automatically update `config/newrelic.yml`.
|
92
|
+
</Callout>
|
93
|
+
|
1
94
|
<% sections.each do |(section_key, section_name, section_description, configs)| %>
|
2
95
|
## <%=section_name%>
|
3
96
|
|
data/lib/tasks/helpers/format.rb
CHANGED
@@ -3,16 +3,19 @@
|
|
3
3
|
# frozen_string_literal: true
|
4
4
|
|
5
5
|
module Format
|
6
|
-
|
7
|
-
config_hash = build_config_hash
|
8
|
-
sections = flatten_config_hash(config_hash)
|
6
|
+
DEFAULT_CONFIG_PATH = 'ruby-agent-configuration.mdx'
|
9
7
|
|
10
|
-
|
11
|
-
|
8
|
+
def output(format)
|
9
|
+
result = build_erb(format).result(binding).split("\n").map(&:rstrip).join("\n").gsub('. ', '. ')
|
10
|
+
File.write(DEFAULT_CONFIG_PATH, result)
|
12
11
|
end
|
13
12
|
|
14
13
|
private
|
15
14
|
|
15
|
+
def sections
|
16
|
+
@sections ||= flatten_config_hash(build_config_hash)
|
17
|
+
end
|
18
|
+
|
16
19
|
def add_data_to_sections(sections)
|
17
20
|
sections.each do |section|
|
18
21
|
section_key = section[0]
|
@@ -43,7 +46,7 @@ module Format
|
|
43
46
|
def flatten_config_hash(config_hash)
|
44
47
|
sections = []
|
45
48
|
config = [GENERAL, 'transaction_tracer', 'error_collector',
|
46
|
-
'browser_monitoring', '
|
49
|
+
'browser_monitoring', 'transaction_events',
|
47
50
|
'application_logging']
|
48
51
|
|
49
52
|
config.each { |config| sections << pluck(config, config_hash) }
|
@@ -66,24 +69,25 @@ module Format
|
|
66
69
|
|
67
70
|
def format_description(value)
|
68
71
|
description = ''
|
69
|
-
description +=
|
72
|
+
description += '**DEPRECATED** ' if value[:deprecated]
|
70
73
|
description += value[:description]
|
71
74
|
description
|
72
75
|
end
|
73
76
|
|
74
77
|
def format_env_var(key)
|
75
|
-
return
|
78
|
+
return 'None' if NON_ENV_CONFIGS.include?(key)
|
76
79
|
|
77
|
-
"NEW_RELIC_#{key.tr(
|
80
|
+
"NEW_RELIC_#{key.tr('.', '_').upcase}"
|
78
81
|
end
|
79
82
|
|
80
83
|
def format_name(key)
|
81
84
|
name = NAME_OVERRIDES[key]
|
82
85
|
return name if name
|
83
86
|
|
84
|
-
key.split(
|
87
|
+
title = key.split('_')
|
85
88
|
.each { |fragment| fragment[0] = fragment[0].upcase }
|
86
|
-
.join(
|
89
|
+
.join(' ')
|
90
|
+
"#{title} [##{key.tr('_', '-')}]"
|
87
91
|
end
|
88
92
|
|
89
93
|
def format_sections(key, value)
|
@@ -98,7 +102,7 @@ module Format
|
|
98
102
|
|
99
103
|
def format_type(type)
|
100
104
|
if type == NewRelic::Agent::Configuration::Boolean
|
101
|
-
|
105
|
+
'Boolean'
|
102
106
|
else
|
103
107
|
type
|
104
108
|
end
|
@@ -110,11 +114,11 @@ module Format
|
|
110
114
|
end
|
111
115
|
|
112
116
|
def section_key(key, components)
|
113
|
-
if
|
117
|
+
if /^disable_/.match?(key) # "disable_httpclient"
|
114
118
|
DISABLING
|
115
|
-
elsif components.length >= 2 && !(components[1] ==
|
119
|
+
elsif components.length >= 2 && !(components[1] == 'attributes') # "analytics_events.enabled"
|
116
120
|
components.first
|
117
|
-
elsif components[1] ==
|
121
|
+
elsif components[1] == 'attributes' # "transaction_tracer.attributes.enabled"
|
118
122
|
ATTRIBUTES
|
119
123
|
else
|
120
124
|
GENERAL
|