newrelic_rpm 6.8.0.360 → 9.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +14 -1
- data/.rubocop.yml +1845 -0
- data/.rubocop_todo.yml +61 -0
- data/.simplecov +16 -0
- data/.snyk +11 -0
- data/.yardopts +1 -0
- data/Brewfile +13 -0
- data/CHANGELOG.md +4029 -2514
- data/CONTRIBUTING.md +132 -19
- data/DOCKER.md +167 -0
- data/Dockerfile +10 -0
- data/Gemfile +5 -2
- data/Guardfile +21 -8
- data/LICENSE +202 -38
- data/README.md +86 -87
- data/Rakefile +32 -32
- data/THIRD_PARTY_NOTICES.md +28 -0
- data/Thorfile +5 -0
- data/bin/newrelic +4 -2
- data/bin/newrelic_cmd +2 -0
- data/bin/nrdebug +86 -63
- data/config.dot +5 -5
- data/docker-compose.yml +107 -0
- data/init.rb +5 -7
- data/install.rb +3 -3
- data/lefthook.yml +9 -0
- data/lib/new_relic/agent/adaptive_sampler.rb +14 -10
- data/lib/new_relic/agent/agent.rb +114 -942
- data/lib/new_relic/agent/agent_helpers/connect.rb +222 -0
- data/lib/new_relic/agent/agent_helpers/harvest.rb +153 -0
- data/lib/new_relic/agent/agent_helpers/shutdown.rb +72 -0
- data/lib/new_relic/agent/agent_helpers/special_startup.rb +74 -0
- data/lib/new_relic/agent/agent_helpers/start_worker_thread.rb +175 -0
- data/lib/new_relic/agent/agent_helpers/startup.rb +202 -0
- data/lib/new_relic/agent/agent_helpers/transmit.rb +76 -0
- data/lib/new_relic/agent/agent_logger.rb +28 -24
- data/lib/new_relic/agent/attribute_filter.rb +66 -49
- data/lib/new_relic/agent/attribute_processing.rb +10 -10
- data/lib/new_relic/agent/attributes.rb +9 -8
- data/lib/new_relic/agent/audit_logger.rb +22 -7
- data/lib/new_relic/agent/autostart.rb +22 -21
- data/lib/new_relic/agent/chained_call.rb +2 -2
- data/lib/new_relic/agent/commands/agent_command.rb +5 -5
- data/lib/new_relic/agent/commands/agent_command_router.rb +16 -14
- data/lib/new_relic/agent/commands/thread_profiler_session.rb +17 -15
- data/lib/new_relic/agent/configuration/default_source.rb +1444 -1167
- data/lib/new_relic/agent/configuration/dotted_hash.rb +7 -6
- data/lib/new_relic/agent/configuration/environment_source.rb +14 -12
- data/lib/new_relic/agent/configuration/event_harvest_config.rb +41 -18
- data/lib/new_relic/agent/configuration/high_security_source.rb +12 -13
- data/lib/new_relic/agent/configuration/manager.rb +96 -70
- data/lib/new_relic/agent/configuration/manual_source.rb +2 -2
- data/lib/new_relic/agent/configuration/mask_defaults.rb +4 -4
- data/lib/new_relic/agent/configuration/security_policy_source.rb +93 -96
- data/lib/new_relic/agent/configuration/server_source.rb +44 -42
- data/lib/new_relic/agent/configuration/yaml_source.rb +36 -12
- data/lib/new_relic/agent/configuration.rb +2 -2
- data/lib/new_relic/agent/connect/request_builder.rb +19 -19
- data/lib/new_relic/agent/connect/response_handler.rb +6 -9
- data/lib/new_relic/agent/custom_event_aggregator.rb +16 -16
- data/lib/new_relic/agent/database/explain_plan_helpers.rb +6 -7
- data/lib/new_relic/agent/database/obfuscation_helpers.rb +18 -17
- data/lib/new_relic/agent/database/obfuscator.rb +5 -5
- data/lib/new_relic/agent/database/postgres_explain_obfuscator.rb +4 -4
- data/lib/new_relic/agent/database.rb +47 -56
- data/lib/new_relic/agent/database_adapter.rb +35 -0
- data/lib/new_relic/agent/datastores/metric_helper.rb +22 -23
- data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +8 -7
- data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +18 -22
- data/lib/new_relic/agent/datastores/mongo.rb +7 -12
- data/lib/new_relic/agent/datastores/nosql_obfuscator.rb +41 -0
- data/lib/new_relic/agent/datastores/redis.rb +10 -16
- data/lib/new_relic/agent/datastores.rb +14 -16
- data/lib/new_relic/agent/deprecator.rb +2 -2
- data/lib/new_relic/agent/{cross_app_payload.rb → distributed_tracing/cross_app_payload.rb} +13 -12
- data/lib/new_relic/agent/{cross_app_tracing.rb → distributed_tracing/cross_app_tracing.rb} +90 -70
- data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +84 -0
- data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +75 -0
- data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +163 -0
- data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +38 -0
- data/lib/new_relic/agent/distributed_tracing/trace_context.rb +245 -0
- data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +127 -0
- data/lib/new_relic/agent/distributed_tracing.rb +113 -32
- data/lib/new_relic/agent/encoding_normalizer.rb +5 -3
- data/lib/new_relic/agent/error_collector.rb +129 -65
- data/lib/new_relic/agent/error_event_aggregator.rb +9 -8
- data/lib/new_relic/agent/error_filter.rb +174 -0
- data/lib/new_relic/agent/error_trace_aggregator.rb +10 -8
- data/lib/new_relic/agent/event_aggregator.rb +23 -22
- data/lib/new_relic/agent/event_buffer.rb +8 -9
- data/lib/new_relic/agent/event_listener.rb +2 -3
- data/lib/new_relic/agent/event_loop.rb +28 -26
- data/lib/new_relic/agent/external.rb +19 -52
- data/lib/new_relic/agent/guid_generator.rb +14 -12
- data/lib/new_relic/agent/harvester.rb +6 -9
- data/lib/new_relic/agent/heap.rb +9 -10
- data/lib/new_relic/agent/hostname.rb +22 -9
- data/lib/new_relic/agent/http_clients/abstract.rb +69 -0
- data/lib/new_relic/agent/http_clients/curb_wrappers.rb +30 -26
- data/lib/new_relic/agent/http_clients/excon_wrappers.rb +37 -21
- data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +22 -23
- data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +18 -17
- data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +28 -8
- data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +17 -17
- data/lib/new_relic/agent/http_clients/uri_util.rb +13 -14
- data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +10 -25
- data/lib/new_relic/agent/instrumentation/action_controller_other_subscriber.rb +42 -0
- data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +46 -34
- 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 +28 -21
- data/lib/new_relic/agent/instrumentation/active_job.rb +34 -14
- data/lib/new_relic/agent/instrumentation/active_job_subscriber.rb +41 -0
- data/lib/new_relic/agent/instrumentation/active_merchant.rb +21 -7
- data/lib/new_relic/agent/instrumentation/active_record.rb +97 -47
- data/lib/new_relic/agent/instrumentation/active_record_helper.rb +97 -73
- data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +53 -66
- data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +36 -12
- data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +37 -24
- data/lib/new_relic/agent/instrumentation/active_storage.rb +8 -4
- data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +9 -30
- data/lib/new_relic/agent/instrumentation/active_support.rb +27 -0
- data/lib/new_relic/agent/instrumentation/active_support_logger/chain.rb +23 -0
- data/lib/new_relic/agent/instrumentation/active_support_logger/instrumentation.rb +20 -0
- data/lib/new_relic/agent/instrumentation/active_support_logger/prepend.rb +12 -0
- data/lib/new_relic/agent/instrumentation/active_support_logger.rb +24 -0
- data/lib/new_relic/agent/instrumentation/active_support_subscriber.rb +41 -0
- data/lib/new_relic/agent/instrumentation/bunny/chain.rb +45 -0
- data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +150 -0
- data/lib/new_relic/agent/instrumentation/bunny/prepend.rb +35 -0
- data/lib/new_relic/agent/instrumentation/bunny.rb +14 -138
- data/lib/new_relic/agent/instrumentation/concurrent_ruby/chain.rb +36 -0
- data/lib/new_relic/agent/instrumentation/concurrent_ruby/instrumentation.rb +21 -0
- data/lib/new_relic/agent/instrumentation/concurrent_ruby/prepend.rb +27 -0
- data/lib/new_relic/agent/instrumentation/concurrent_ruby.rb +31 -0
- data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +75 -63
- data/lib/new_relic/agent/instrumentation/curb/chain.rb +91 -0
- data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +221 -0
- data/lib/new_relic/agent/instrumentation/curb/prepend.rb +61 -0
- data/lib/new_relic/agent/instrumentation/curb.rb +16 -201
- data/lib/new_relic/agent/instrumentation/custom_events.rb +12 -0
- data/lib/new_relic/agent/instrumentation/custom_events_subscriber.rb +38 -0
- data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +36 -0
- data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +48 -0
- data/lib/new_relic/agent/instrumentation/delayed_job/prepend.rb +33 -0
- data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +31 -52
- data/lib/new_relic/agent/instrumentation/elasticsearch/chain.rb +29 -0
- data/lib/new_relic/agent/instrumentation/elasticsearch/instrumentation.rb +67 -0
- data/lib/new_relic/agent/instrumentation/elasticsearch/prepend.rb +13 -0
- data/lib/new_relic/agent/instrumentation/elasticsearch.rb +31 -0
- data/lib/new_relic/agent/instrumentation/excon/middleware.rb +10 -8
- data/lib/new_relic/agent/instrumentation/excon.rb +29 -31
- data/lib/new_relic/agent/instrumentation/fiber/chain.rb +20 -0
- data/lib/new_relic/agent/instrumentation/fiber/instrumentation.rb +24 -0
- data/lib/new_relic/agent/instrumentation/fiber/prepend.rb +18 -0
- data/lib/new_relic/agent/instrumentation/fiber.rb +25 -0
- data/lib/new_relic/agent/instrumentation/grape/chain.rb +24 -0
- data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +100 -0
- data/lib/new_relic/agent/instrumentation/grape/prepend.rb +17 -0
- data/lib/new_relic/agent/instrumentation/grape.rb +17 -123
- data/lib/new_relic/agent/instrumentation/grpc/client/chain.rb +97 -0
- data/lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb +90 -0
- data/lib/new_relic/agent/instrumentation/grpc/client/prepend.rb +111 -0
- data/lib/new_relic/agent/instrumentation/grpc/client/request_wrapper.rb +30 -0
- data/lib/new_relic/agent/instrumentation/grpc/helper.rb +32 -0
- data/lib/new_relic/agent/instrumentation/grpc/server/chain.rb +69 -0
- data/lib/new_relic/agent/instrumentation/grpc/server/instrumentation.rb +134 -0
- data/lib/new_relic/agent/instrumentation/grpc/server/rpc_desc_prepend.rb +35 -0
- data/lib/new_relic/agent/instrumentation/grpc/server/rpc_server_prepend.rb +26 -0
- data/lib/new_relic/agent/instrumentation/grpc_client.rb +23 -0
- data/lib/new_relic/agent/instrumentation/grpc_server.rb +25 -0
- data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +24 -0
- data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +37 -0
- data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +15 -0
- data/lib/new_relic/agent/instrumentation/httpclient.rb +12 -32
- data/lib/new_relic/agent/instrumentation/httprb/chain.rb +22 -0
- data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +30 -0
- data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +15 -0
- data/lib/new_relic/agent/instrumentation/httprb.rb +29 -0
- data/lib/new_relic/agent/instrumentation/ignore_actions.rb +6 -7
- data/lib/new_relic/agent/instrumentation/logger/chain.rb +21 -0
- data/lib/new_relic/agent/instrumentation/logger/instrumentation.rb +66 -0
- data/lib/new_relic/agent/instrumentation/logger/prepend.rb +13 -0
- data/lib/new_relic/agent/instrumentation/logger.rb +26 -0
- data/lib/new_relic/agent/instrumentation/memcache/chain.rb +15 -0
- data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +60 -125
- data/lib/new_relic/agent/instrumentation/memcache/helper.rb +59 -0
- data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +90 -0
- data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +103 -0
- data/lib/new_relic/agent/instrumentation/memcache.rb +57 -71
- data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +16 -15
- data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +11 -11
- data/lib/new_relic/agent/instrumentation/mongo.rb +7 -132
- data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +53 -17
- data/lib/new_relic/agent/instrumentation/net_http/chain.rb +24 -0
- data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +40 -0
- data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +21 -0
- data/lib/new_relic/agent/instrumentation/net_http.rb +44 -0
- data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +75 -9
- data/lib/new_relic/agent/instrumentation/padrino/chain.rb +38 -0
- data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +28 -0
- data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +20 -0
- data/lib/new_relic/agent/instrumentation/padrino.rb +22 -58
- data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +7 -7
- data/lib/new_relic/agent/instrumentation/queue_time.rb +9 -10
- data/lib/new_relic/agent/instrumentation/rack/chain.rb +66 -0
- data/lib/new_relic/agent/instrumentation/rack/helpers.rb +33 -0
- data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +75 -0
- data/lib/new_relic/agent/instrumentation/rack/prepend.rb +43 -0
- data/lib/new_relic/agent/instrumentation/rack.rb +33 -141
- data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +22 -57
- data/lib/new_relic/agent/instrumentation/rails_middleware.rb +5 -5
- data/lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb +10 -9
- data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +18 -6
- data/lib/new_relic/agent/instrumentation/rails_notifications/action_view.rb +9 -6
- data/lib/new_relic/agent/instrumentation/rails_notifications/custom_events.rb +30 -0
- data/lib/new_relic/agent/instrumentation/rake/chain.rb +20 -0
- data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +142 -0
- data/lib/new_relic/agent/instrumentation/rake/prepend.rb +14 -0
- data/lib/new_relic/agent/instrumentation/rake.rb +18 -158
- data/lib/new_relic/agent/instrumentation/redis/chain.rb +45 -0
- data/lib/new_relic/agent/instrumentation/redis/constants.rb +17 -0
- data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +94 -0
- data/lib/new_relic/agent/instrumentation/redis/middleware.rb +16 -0
- data/lib/new_relic/agent/instrumentation/redis/prepend.rb +29 -0
- data/lib/new_relic/agent/instrumentation/redis.rb +20 -103
- data/lib/new_relic/agent/instrumentation/resque/chain.rb +21 -0
- data/lib/new_relic/agent/instrumentation/resque/helper.rb +19 -0
- data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +34 -0
- data/lib/new_relic/agent/instrumentation/resque/prepend.rb +15 -0
- data/lib/new_relic/agent/instrumentation/resque.rb +33 -41
- data/lib/new_relic/agent/instrumentation/sequel.rb +17 -20
- data/lib/new_relic/agent/instrumentation/sequel_helper.rb +13 -13
- data/lib/new_relic/agent/instrumentation/sidekiq/client.rb +20 -0
- data/lib/new_relic/agent/instrumentation/sidekiq/extensions/delayed_class.rb +30 -0
- data/lib/new_relic/agent/instrumentation/sidekiq/server.rb +37 -0
- data/lib/new_relic/agent/instrumentation/sidekiq.rb +30 -46
- data/lib/new_relic/agent/instrumentation/sinatra/chain.rb +55 -0
- data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +31 -37
- data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +126 -0
- data/lib/new_relic/agent/instrumentation/sinatra/prepend.rb +33 -0
- data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +4 -4
- data/lib/new_relic/agent/instrumentation/sinatra.rb +35 -165
- data/lib/new_relic/agent/instrumentation/thread/chain.rb +24 -0
- data/lib/new_relic/agent/instrumentation/thread/instrumentation.rb +28 -0
- data/lib/new_relic/agent/instrumentation/thread/prepend.rb +22 -0
- data/lib/new_relic/agent/instrumentation/thread.rb +20 -0
- data/lib/new_relic/agent/instrumentation/tilt/chain.rb +24 -0
- data/lib/new_relic/agent/instrumentation/tilt/instrumentation.rb +42 -0
- data/lib/new_relic/agent/instrumentation/tilt/prepend.rb +13 -0
- data/lib/new_relic/agent/instrumentation/tilt.rb +25 -0
- data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +22 -0
- data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +80 -0
- data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +14 -0
- data/lib/new_relic/agent/instrumentation/typhoeus.rb +14 -76
- data/lib/new_relic/agent/instrumentation.rb +2 -2
- data/lib/new_relic/agent/internal_agent_error.rb +3 -3
- data/lib/new_relic/agent/javascript_instrumentor.rb +59 -48
- data/lib/new_relic/agent/linking_metadata.rb +44 -0
- data/lib/new_relic/agent/local_log_decorator.rb +37 -0
- data/lib/new_relic/agent/log_event_aggregator.rb +235 -0
- data/lib/new_relic/agent/log_once.rb +2 -2
- data/lib/new_relic/agent/log_priority.rb +20 -0
- data/lib/new_relic/agent/logging.rb +104 -51
- data/lib/new_relic/agent/memory_logger.rb +3 -3
- data/lib/new_relic/agent/messaging.rb +74 -156
- data/lib/new_relic/agent/method_tracer.rb +157 -150
- data/lib/new_relic/agent/method_tracer_helpers.rb +89 -12
- data/lib/new_relic/agent/monitors/cross_app_monitor.rb +117 -0
- data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +28 -0
- data/lib/new_relic/agent/{inbound_request_monitor.rb → monitors/inbound_request_monitor.rb} +3 -4
- data/lib/new_relic/agent/{synthetics_monitor.rb → monitors/synthetics_monitor.rb} +8 -13
- data/lib/new_relic/agent/monitors.rb +26 -0
- data/lib/new_relic/agent/new_relic_service/encoders.rb +8 -8
- data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +7 -7
- data/lib/new_relic/agent/new_relic_service/marshaller.rb +3 -3
- data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +5 -5
- data/lib/new_relic/agent/new_relic_service.rb +266 -193
- data/lib/new_relic/agent/noticeable_error.rb +19 -0
- data/lib/new_relic/agent/null_logger.rb +8 -4
- data/lib/new_relic/agent/obfuscator.rb +9 -11
- data/lib/new_relic/agent/parameter_filtering.rb +30 -16
- data/lib/new_relic/agent/payload_metric_mapping.rb +10 -11
- data/lib/new_relic/agent/pipe_channel_manager.rb +34 -23
- data/lib/new_relic/agent/pipe_service.rb +14 -9
- data/lib/new_relic/agent/prepend_supportability.rb +3 -3
- data/lib/new_relic/agent/priority_sampled_buffer.rb +16 -16
- data/lib/new_relic/agent/rules_engine/replacement_rule.rb +12 -12
- data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +13 -14
- data/lib/new_relic/agent/rules_engine.rb +6 -5
- data/lib/new_relic/agent/sampler.rb +6 -6
- data/lib/new_relic/agent/sampler_collection.rb +5 -6
- data/lib/new_relic/agent/samplers/cpu_sampler.rb +9 -8
- data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +21 -18
- data/lib/new_relic/agent/samplers/memory_sampler.rb +33 -22
- data/lib/new_relic/agent/samplers/object_sampler.rb +3 -3
- data/lib/new_relic/agent/samplers/vm_sampler.rb +22 -20
- data/lib/new_relic/agent/span_event_aggregator.rb +16 -16
- data/lib/new_relic/agent/span_event_primitive.rb +106 -68
- data/lib/new_relic/agent/sql_sampler.rb +23 -23
- data/lib/new_relic/agent/stats.rb +80 -43
- data/lib/new_relic/agent/stats_engine/gc_profiler.rb +11 -13
- data/lib/new_relic/agent/stats_engine/stats_hash.rb +13 -14
- data/lib/new_relic/agent/stats_engine.rb +9 -9
- data/lib/new_relic/agent/synthetics_event_aggregator.rb +9 -10
- data/lib/new_relic/agent/system_info.rb +97 -68
- data/lib/new_relic/agent/threading/agent_thread.rb +19 -15
- data/lib/new_relic/agent/threading/backtrace_node.rb +13 -14
- data/lib/new_relic/agent/threading/backtrace_service.rb +18 -22
- data/lib/new_relic/agent/threading/thread_profile.rb +25 -25
- data/lib/new_relic/agent/timestamp_sampled_buffer.rb +3 -3
- data/lib/new_relic/agent/tracer.rb +127 -107
- data/lib/new_relic/agent/transaction/abstract_segment.rb +145 -49
- data/lib/new_relic/agent/transaction/datastore_segment.rb +23 -19
- data/lib/new_relic/agent/transaction/distributed_tracer.rb +185 -0
- data/lib/new_relic/agent/transaction/distributed_tracing.rb +76 -86
- data/lib/new_relic/agent/transaction/external_request_segment.rb +67 -77
- data/lib/new_relic/agent/transaction/message_broker_segment.rb +34 -46
- data/lib/new_relic/agent/transaction/request_attributes.rb +40 -40
- data/lib/new_relic/agent/transaction/segment.rb +41 -11
- data/lib/new_relic/agent/transaction/slowest_sample_buffer.rb +2 -4
- data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +3 -3
- data/lib/new_relic/agent/transaction/trace.rb +19 -17
- data/lib/new_relic/agent/transaction/trace_builder.rb +11 -11
- data/lib/new_relic/agent/transaction/trace_context.rb +102 -93
- data/lib/new_relic/agent/transaction/trace_node.rb +31 -32
- data/lib/new_relic/agent/transaction/tracing.rb +22 -13
- data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +7 -7
- data/lib/new_relic/agent/transaction.rb +239 -198
- data/lib/new_relic/agent/transaction_error_primitive.rb +32 -28
- data/lib/new_relic/agent/transaction_event_aggregator.rb +17 -17
- data/lib/new_relic/agent/transaction_event_primitive.rb +43 -47
- data/lib/new_relic/agent/transaction_event_recorder.rb +17 -16
- data/lib/new_relic/agent/transaction_metrics.rb +11 -10
- data/lib/new_relic/agent/transaction_sampler.rb +8 -9
- data/lib/new_relic/agent/transaction_time_aggregator.rb +33 -28
- data/lib/new_relic/agent/utilization/aws.rb +35 -5
- data/lib/new_relic/agent/utilization/azure.rb +7 -7
- data/lib/new_relic/agent/utilization/gcp.rb +11 -11
- data/lib/new_relic/agent/utilization/pcf.rb +7 -6
- data/lib/new_relic/agent/utilization/vendor.rb +45 -30
- data/lib/new_relic/agent/utilization_data.rb +8 -6
- data/lib/new_relic/agent/vm/jruby_vm.rb +2 -2
- data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +4 -4
- data/lib/new_relic/agent/vm/mri_vm.rb +54 -26
- data/lib/new_relic/agent/vm/snapshot.rb +6 -6
- data/lib/new_relic/agent/vm.rb +2 -2
- data/lib/new_relic/agent/worker_loop.rb +11 -13
- data/lib/new_relic/agent.rb +159 -109
- data/lib/new_relic/cli/command.rb +22 -24
- data/lib/new_relic/cli/commands/deployments.rb +101 -51
- data/lib/new_relic/cli/commands/install.rb +33 -35
- data/lib/new_relic/coerce.rb +19 -15
- data/lib/new_relic/collection_helper.rb +51 -49
- data/lib/new_relic/constants.rb +38 -0
- data/lib/new_relic/control/class_methods.rb +6 -6
- data/lib/new_relic/control/frameworks/external.rb +3 -3
- data/lib/new_relic/control/frameworks/rails.rb +50 -32
- data/lib/new_relic/control/frameworks/rails3.rb +4 -5
- data/lib/new_relic/control/frameworks/rails4.rb +2 -2
- data/lib/new_relic/control/frameworks/rails_notifications.rb +2 -2
- data/lib/new_relic/control/frameworks/ruby.rb +4 -4
- data/lib/new_relic/control/frameworks/sinatra.rb +8 -2
- data/lib/new_relic/control/frameworks.rb +2 -2
- data/lib/new_relic/control/instance_methods.rb +28 -46
- data/lib/new_relic/control/instrumentation.rb +26 -12
- data/lib/new_relic/control/private_instance_methods.rb +48 -0
- data/lib/new_relic/control/server_methods.rb +4 -5
- data/lib/new_relic/control.rb +2 -3
- data/lib/new_relic/delayed_job_injection.rb +2 -2
- data/lib/new_relic/dependency_detection.rb +138 -31
- data/lib/new_relic/environment_report.rb +42 -36
- data/lib/new_relic/helper.rb +50 -8
- data/lib/new_relic/language_support.rb +31 -7
- data/lib/new_relic/latest_changes.rb +11 -10
- data/lib/new_relic/local_environment.rb +23 -27
- data/lib/new_relic/metric_data.rb +32 -27
- data/lib/new_relic/metric_spec.rb +9 -7
- data/lib/new_relic/noticed_error.rb +58 -47
- data/lib/new_relic/rack/agent_hooks.rb +2 -2
- data/lib/new_relic/rack/agent_middleware.rb +6 -4
- data/lib/new_relic/rack/browser_monitoring.rb +136 -117
- data/lib/new_relic/rack.rb +2 -2
- data/lib/new_relic/recipes/capistrano3.rb +5 -63
- data/lib/new_relic/recipes/capistrano_legacy.rb +25 -28
- data/lib/new_relic/recipes/helpers/send_deployment.rb +70 -0
- data/lib/new_relic/recipes.rb +2 -2
- data/lib/new_relic/supportability_helper.rb +23 -7
- data/lib/new_relic/traced_thread.rb +39 -0
- data/lib/new_relic/version.rb +7 -18
- data/lib/newrelic_rpm.rb +21 -34
- data/lib/sequel/extensions/{newrelic_instrumentation.rb → new_relic_instrumentation.rb} +18 -21
- data/lib/sequel/plugins/{newrelic_instrumentation.rb → new_relic_instrumentation.rb} +10 -16
- data/lib/tasks/all.rb +4 -4
- data/lib/tasks/config.rake +24 -119
- data/lib/tasks/coverage_report.rake +28 -0
- data/lib/tasks/helpers/config.html.erb +21 -0
- data/lib/tasks/helpers/format.rb +123 -0
- data/lib/tasks/helpers/matches.rb +12 -0
- data/lib/tasks/helpers/prompt.rb +24 -0
- data/lib/tasks/helpers/removers.rb +33 -0
- data/lib/tasks/install.rake +8 -4
- data/lib/tasks/instrumentation_generator/README.md +63 -0
- data/lib/tasks/instrumentation_generator/TODO.md +33 -0
- data/lib/tasks/instrumentation_generator/instrumentation.thor +121 -0
- data/lib/tasks/instrumentation_generator/templates/Envfile.tt +9 -0
- data/lib/tasks/instrumentation_generator/templates/chain.tt +22 -0
- data/lib/tasks/instrumentation_generator/templates/chain_method.tt +8 -0
- data/lib/tasks/instrumentation_generator/templates/dependency_detection.tt +29 -0
- data/lib/tasks/instrumentation_generator/templates/instrumentation.tt +13 -0
- data/lib/tasks/instrumentation_generator/templates/instrumentation_method.tt +3 -0
- data/lib/tasks/instrumentation_generator/templates/newrelic.yml.tt +19 -0
- data/lib/tasks/instrumentation_generator/templates/prepend.tt +13 -0
- data/lib/tasks/instrumentation_generator/templates/prepend_method.tt +3 -0
- data/lib/tasks/instrumentation_generator/templates/test.tt +15 -0
- data/lib/tasks/multiverse.rake +4 -0
- data/lib/tasks/multiverse.rb +23 -9
- data/lib/tasks/newrelic.rb +3 -2
- data/lib/tasks/tests.rake +17 -17
- data/newrelic.yml +672 -3
- data/newrelic_rpm.gemspec +46 -39
- data/recipes/newrelic.rb +3 -3
- data/test/agent_helper.rb +340 -110
- metadata +272 -97
- data/.travis.yml +0 -210
- data/bin/mongrel_rpm +0 -33
- data/cert/cacert.pem +0 -1177
- data/lib/new_relic/agent/cross_app_monitor.rb +0 -110
- data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +0 -44
- data/lib/new_relic/agent/datastores/mongo/statement_formatter.rb +0 -53
- data/lib/new_relic/agent/distributed_trace_intrinsics.rb +0 -90
- data/lib/new_relic/agent/distributed_trace_metrics.rb +0 -74
- data/lib/new_relic/agent/distributed_trace_monitor.rb +0 -30
- data/lib/new_relic/agent/distributed_trace_payload.rb +0 -175
- data/lib/new_relic/agent/distributed_trace_transport_type.rb +0 -43
- data/lib/new_relic/agent/http_clients/abstract_request.rb +0 -31
- data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +0 -74
- data/lib/new_relic/agent/instrumentation/authlogic.rb +0 -25
- data/lib/new_relic/agent/instrumentation/data_mapper.rb +0 -202
- data/lib/new_relic/agent/instrumentation/excon/connection.rb +0 -46
- data/lib/new_relic/agent/instrumentation/http.rb +0 -46
- data/lib/new_relic/agent/instrumentation/merb/controller.rb +0 -44
- data/lib/new_relic/agent/instrumentation/merb/errors.rb +0 -33
- data/lib/new_relic/agent/instrumentation/net.rb +0 -50
- data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +0 -125
- data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +0 -46
- data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +0 -26
- data/lib/new_relic/agent/instrumentation/sunspot.rb +0 -33
- data/lib/new_relic/agent/range_extensions.rb +0 -47
- data/lib/new_relic/agent/supported_versions.rb +0 -275
- data/lib/new_relic/agent/trace_context.rb +0 -244
- data/lib/new_relic/agent/trace_context_payload.rb +0 -134
- data/lib/new_relic/agent/trace_context_request_monitor.rb +0 -42
- data/lib/new_relic/build.rb +0 -2
- data/lib/new_relic/control/frameworks/merb.rb +0 -29
- data/lib/new_relic/metrics.rb +0 -13
- data/lib/tasks/config.html.erb +0 -32
- data/true +0 -0
- /data/lib/tasks/{config.text.erb → helpers/config.text.erb} +0 -0
data/README.md
CHANGED
@@ -1,12 +1,19 @@
|
|
1
|
+
<a href="https://opensource.newrelic.com/oss-category/#community-plus"><picture><source media="(prefers-color-scheme: dark)" srcset="https://github.com/newrelic/opensource-website/raw/main/src/images/categories/dark/Community_Plus.png"><source media="(prefers-color-scheme: light)" srcset="https://github.com/newrelic/opensource-website/raw/main/src/images/categories/Community_Plus.png"><img alt="New Relic Open Source community plus project banner." src="https://github.com/newrelic/opensource-website/raw/main/src/images/categories/Community_Plus.png"></picture></a>
|
2
|
+
|
1
3
|
# New Relic Ruby Agent
|
2
4
|
|
3
|
-
New Relic
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
The New Relic Ruby agent monitors your applications to help you
|
6
|
+
[identify and solve performance issues](https://docs.newrelic.com/docs/agents/ruby-agent/getting-started/introduction-new-relic-ruby#monitor-performance).
|
7
|
+
You can also extend the agent's performance monitoring to
|
8
|
+
[collect and analyze business data](https://docs.newrelic.com/docs/agents/ruby-agent/getting-started/introduction-new-relic-ruby#business-data)
|
9
|
+
to help you improve the customer experience and make data-driven business decisions.
|
10
|
+
|
11
|
+
The New Relic Ruby agent is dual-purposed as either a Gem or a Rails plugin,
|
12
|
+
hosted on [github](https://github.com/newrelic/newrelic-ruby-agent).
|
13
|
+
|
14
|
+
This code is actively maintained by New Relic engineering teams and delivered here in GitHub. See below for troubleshooting and defect reporting instructions.
|
15
|
+
|
16
|
+
[![Gem Version](https://badge.fury.io/rb/newrelic_rpm.svg)](https://badge.fury.io/rb/newrelic_rpm)
|
10
17
|
|
11
18
|
## Supported Environments
|
12
19
|
|
@@ -14,127 +21,119 @@ An up-to-date list of Ruby versions and frameworks for the latest agent
|
|
14
21
|
can be found on [our docs site](http://docs.newrelic.com/docs/ruby/supported-frameworks).
|
15
22
|
|
16
23
|
You can also monitor non-web applications. Refer to the "Other
|
17
|
-
Environments" section
|
24
|
+
Environments" section below.
|
18
25
|
|
19
|
-
##
|
26
|
+
## Installing and Using
|
20
27
|
|
21
|
-
|
22
|
-
community. Before submitting a pull request please review
|
23
|
-
[these guidelines](https://github.com/newrelic/rpm/blob/master/CONTRIBUTING.md).
|
28
|
+
The latest released gem for the Ruby agent can be found at [Rubygems.org](https://rubygems.org/gems/newrelic_rpm)
|
24
29
|
|
25
|
-
|
26
|
-
and avoid breaking your code with future changes to the agent.
|
30
|
+
### Quick Start
|
27
31
|
|
32
|
+
#### With Bundler
|
28
33
|
|
29
|
-
|
34
|
+
For using with Bundler, add the Ruby agent to your project's Gemfile.
|
30
35
|
|
31
|
-
|
36
|
+
```ruby
|
37
|
+
gem 'newrelic_rpm'
|
38
|
+
```
|
32
39
|
|
33
|
-
|
40
|
+
and run `bundle install` to activate the new gem.
|
34
41
|
|
35
|
-
|
36
|
-
http://newrelic.com/ . There you can
|
37
|
-
sign up for a free Lite account or one of our paid subscriptions.
|
42
|
+
#### Without Bundler
|
38
43
|
|
39
|
-
|
40
|
-
`newrelic.yml` file, you can copy the `newrelic.yml` file into your app config
|
41
|
-
directory OR can generate the file manually with command:
|
44
|
+
If you are not using Bundler, install the gem with:
|
42
45
|
|
43
|
-
|
46
|
+
```bash
|
47
|
+
gem install newrelic_rpm
|
48
|
+
```
|
44
49
|
|
45
|
-
|
46
|
-
is by default read from the `config` directory of the application root
|
47
|
-
and is subsequently searched for in the application root directory,
|
48
|
-
and then in a `~/.newrelic` directory. Once you're up and running you can
|
49
|
-
enable Server Side Config and manage your newrelic configuration from the web
|
50
|
-
UI.
|
50
|
+
and then require the New Relic Ruby agent in your Ruby start-up sequence:
|
51
51
|
|
52
|
-
|
52
|
+
```ruby
|
53
|
+
require 'newrelic_rpm'
|
54
|
+
```
|
53
55
|
|
54
|
-
|
56
|
+
#### Other Environments
|
55
57
|
|
56
|
-
|
58
|
+
Assuming you have installed the agent per above, you may also need to tell the Ruby agent to start for some frameworks and non-framework environments. To do so, add the following to your Ruby start-up sequence start the agent:
|
57
59
|
|
58
|
-
|
60
|
+
```ruby
|
61
|
+
NewRelic::Agent.manual_start
|
62
|
+
```
|
59
63
|
|
60
|
-
|
64
|
+
### Complete Install Instructions
|
61
65
|
|
62
|
-
For
|
66
|
+
For complete documentation on installing the New Relic Ruby agent, see the following links:
|
63
67
|
|
64
|
-
|
68
|
+
* [Introduction](https://docs.newrelic.com/docs/agents/ruby-agent/getting-started/introduction-new-relic-ruby)
|
69
|
+
* [Install the New Relic Ruby agent](https://docs.newrelic.com/docs/agents/ruby-agent/installation/install-new-relic-ruby-agent)
|
70
|
+
* [Configure the agent](https://docs.newrelic.com/docs/agents/ruby-agent/configuration/ruby-agent-configuration)
|
71
|
+
* [Update the agent](https://docs.newrelic.com/docs/agents/ruby-agent/installation/update-ruby-agent)
|
72
|
+
* [Rails plugin installation](https://docs.newrelic.com/docs/agents/ruby-agent/installation/ruby-agent-installation-rails-plugin)
|
73
|
+
* [GAE Flexible Environment](https://docs.newrelic.com/docs/agents/ruby-agent/installation/install-new-relic-ruby-agent-gae-flexible-environment)
|
74
|
+
* [Pure Rack Apps](http://docs.newrelic.com/docs/ruby/rack-middlewares)
|
75
|
+
* [Ruby agent and Heroku](https://docs.newrelic.com/docs/agents/ruby-agent/installation/ruby-agent-heroku)
|
76
|
+
* [Background Jobs](https://docs.newrelic.com/docs/agents/ruby-agent/background-jobs/monitor-ruby-background-processes)
|
77
|
+
* [Uninstall the Ruby agent](https://docs.newrelic.com/docs/agents/ruby-agent/installation/uninstall-ruby-agent)
|
65
78
|
|
66
|
-
|
79
|
+
### Recording Deploys
|
67
80
|
|
68
|
-
|
81
|
+
The Ruby agent supports recording deployments in New Relic via a command line
|
82
|
+
tool or Capistrano recipes. For more information on these features, see
|
83
|
+
[our deployment documentation](http://docs.newrelic.com/docs/ruby/recording-deployments-with-the-ruby-agent)
|
84
|
+
for more information.
|
69
85
|
|
70
|
-
To use the Ruby Agent with a Sinatra app, add:
|
71
86
|
|
72
|
-
|
73
|
-
require 'newrelic_rpm'
|
74
|
-
```
|
87
|
+
## Support
|
75
88
|
|
76
|
-
|
89
|
+
Should you need assistance with New Relic products, you are in good hands with several support diagnostic tools and support channels.
|
77
90
|
|
78
|
-
|
79
|
-
configuration definitions in the newrelic.yml file; e.g., development,
|
80
|
-
staging, production, etc.
|
91
|
+
This [troubleshooting framework](https://discuss.newrelic.com/t/ruby-troubleshooting-framework-install/108685) steps you through common troubleshooting questions.
|
81
92
|
|
82
|
-
|
93
|
+
New Relic offers NRDiag, [a client-side diagnostic utility](https://docs.newrelic.com/docs/using-new-relic/cross-product-functions/troubleshooting/new-relic-diagnostics) that automatically detects common problems with New Relic agents. If NRDiag detects a problem, it suggests troubleshooting steps. NRDiag can also automatically attach troubleshooting data to a New Relic Support ticket.
|
83
94
|
|
84
|
-
|
95
|
+
If the issue has been confirmed as a bug or is a Feature request, please file a GitHub issue.
|
85
96
|
|
86
|
-
|
87
|
-
require 'newrelic_rpm'
|
88
|
-
```
|
97
|
+
**Support Channels**
|
89
98
|
|
90
|
-
|
99
|
+
* [New Relic Documentation](https://docs.newrelic.com/docs/agents/ruby-agent): Comprehensive guidance for using our platform
|
100
|
+
* [New Relic Community](https://discuss.newrelic.com/tags/rubyagent): The best place to engage in troubleshooting questions
|
101
|
+
* [New Relic Developer](https://developer.newrelic.com/): Resources for building a custom observability applications
|
102
|
+
* [New Relic University](https://learn.newrelic.com/): A range of online training for New Relic users of every level
|
103
|
+
* [New Relic Technical Support](https://support.newrelic.com/) 24/7/365 ticketed support. Read more about our [Technical Support Offerings](https://docs.newrelic.com/docs/licenses/license-information/general-usage-licenses/support-plan).
|
91
104
|
|
92
|
-
|
93
|
-
NewRelic::Agent.manual_start
|
94
|
-
```
|
105
|
+
## Privacy
|
95
106
|
|
96
|
-
|
97
|
-
[Rack middlewares documentation](http://docs.newrelic.com/docs/ruby/rack-middlewares).
|
107
|
+
At New Relic we take your privacy and the security of your information seriously, and are committed to protecting your information. We must emphasize the importance of not sharing personal data in public forums, and ask all users to scrub logs and diagnostic information for sensitive information, whether personal, proprietary, or otherwise.
|
98
108
|
|
99
|
-
|
100
|
-
monitor other web frameworks, background jobs, and daemons.
|
109
|
+
We define “Personal Data” as any information relating to an identified or identifiable individual, including, for example, your name, phone number, post code or zip code, Device ID, IP address, and email address.
|
101
110
|
|
102
|
-
|
103
|
-
frameworks. You can find a list of community created intrumentation plugins
|
104
|
-
(e.g. [newrelic-redis](https://github.com/evanphx/newrelic-redis)) in the
|
105
|
-
[extends_newrelic_rpm project](https://github.com/newrelic/extends_newrelic_rpm).
|
111
|
+
Please review [New Relic’s General Data Privacy Notice](https://newrelic.com/termsandconditions/privacy) for more information.
|
106
112
|
|
107
|
-
##
|
113
|
+
## Contributing
|
108
114
|
|
109
|
-
|
110
|
-
|
111
|
-
service and sends deep performance data to the UI for your
|
112
|
-
analysis. To view this data, log in to http://rpm.newrelic.com.
|
115
|
+
We encourage contributions to improve the New Relic Ruby agent! Keep in mind when you submit your pull request, you'll need to sign the Contributor License Agreement (CLA) via the click-through using CLA-Assistant. You only have to sign the CLA one time per project.
|
116
|
+
If you have any questions, or to execute our corporate CLA (required if your contribution is on behalf of a company), please drop us an email at opensource@newrelic.com.
|
113
117
|
|
114
|
-
|
115
|
-
online. Refer to instructions in *Getting Started*.
|
118
|
+
**A note about vulnerabilities**
|
116
119
|
|
117
|
-
|
120
|
+
As noted in our [security policy](https://github.com/newrelic/newrelic-ruby-agent/security/policy), New Relic is committed to the privacy and security of our customers and their data. We believe that providing coordinated disclosure by security researchers and engaging with the security community are important means to achieve our security goals.
|
118
121
|
|
119
|
-
|
120
|
-
tool or Capistrano recipes. For more information on these features see
|
121
|
-
[our deployment documentation](http://docs.newrelic.com/docs/ruby/recording-deployments-with-the-ruby-agent)
|
122
|
-
for more information.
|
122
|
+
If you believe you have found a security vulnerability in this project or any of New Relic's products or websites, we welcome and greatly appreciate you reporting it to New Relic through [HackerOne](https://hackerone.com/newrelic).
|
123
123
|
|
124
|
-
|
124
|
+
If you would like to contribute to this project, please review [these guidelines](https://github.com/newrelic/newrelic-ruby-agent/blob/main/CONTRIBUTING.md).
|
125
|
+
|
126
|
+
To [all contributors](https://github.com/newrelic/newrelic-ruby-agent/graphs/contributors), we thank you! Without your contribution, this project would not be what it is today. We also host a community project page dedicated to
|
127
|
+
the [New Relic Ruby agent](https://opensource.newrelic.com/projects/newrelic/newrelic-ruby-agent).
|
125
128
|
|
126
|
-
|
127
|
-
and specifically in the [Ruby category](http://newrelic.com/docs/ruby).
|
129
|
+
## License
|
128
130
|
|
129
|
-
|
130
|
-
site](http://support.newrelic.com/) or our [community forum](https://discuss.newrelic.com/)
|
131
|
-
and we'll be happy to help you.
|
131
|
+
As of version 6.12 (released July 16, 2020), the New Relic Ruby agent is licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for a copy of the license. For older agent versions, check the LICENSE file included with the source code.
|
132
132
|
|
133
|
-
|
134
|
-
or email support@newrelic.com.
|
133
|
+
The New Relic Ruby agent may use source code from third-party libraries. When used, these libraries will be outlined in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|
135
134
|
|
136
|
-
Thank
|
135
|
+
## Thank You
|
137
136
|
|
138
|
-
|
137
|
+
Thank you,
|
139
138
|
|
140
|
-
New Relic
|
139
|
+
New Relic Ruby agent team
|
data/Rakefile
CHANGED
@@ -1,7 +1,13 @@
|
|
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
|
+
|
1
5
|
require 'rubygems'
|
2
6
|
require 'rake/testtask'
|
3
7
|
require 'yard'
|
4
8
|
require "#{File.dirname(__FILE__)}/lib/tasks/all.rb"
|
9
|
+
require_relative 'lib/tasks/helpers/prompt'
|
10
|
+
include Prompt
|
5
11
|
|
6
12
|
YARD::Rake::YardocTask.new
|
7
13
|
|
@@ -9,32 +15,30 @@ task :default => :test
|
|
9
15
|
task :test => ['test:newrelic']
|
10
16
|
|
11
17
|
namespace :test do
|
12
|
-
desc
|
13
|
-
task :all => %w
|
14
|
-
|
15
|
-
begin
|
16
|
-
require 'test_bisect'
|
17
|
-
TestBisect::BisectTask.new do |t|
|
18
|
-
t.test_task_name = 'test:newrelic'
|
19
|
-
end
|
20
|
-
rescue LoadError
|
21
|
-
end
|
22
|
-
|
18
|
+
desc 'Run all tests'
|
19
|
+
task :all => %w[newrelic multiverse all_compatible_envs]
|
23
20
|
agent_home = File.expand_path(File.dirname(__FILE__))
|
24
21
|
|
25
|
-
desc
|
22
|
+
desc 'Run agent performance tests'
|
26
23
|
task :performance, [:suite, :name] => [] do |t, args|
|
27
24
|
require File.expand_path(File.join(File.dirname(__FILE__), 'test', 'performance', 'lib', 'performance'))
|
28
25
|
options = {}
|
29
26
|
options[:suite] = args[:suite] if args[:suite]
|
30
|
-
options[:name]
|
27
|
+
options[:name] = args[:name] if args[:name]
|
31
28
|
Performance::Runner.new(options).run_and_report
|
32
29
|
end
|
33
30
|
|
34
|
-
desc
|
35
|
-
task :env
|
31
|
+
desc 'Run agent within existing mini environment(s): env[name1,name2,name3,etc.]'
|
32
|
+
task :env do |t, args|
|
36
33
|
require File.expand_path(File.join(File.dirname(__FILE__), 'test', 'environments', 'lib', 'environments', 'runner'))
|
37
|
-
Environments::Runner.new(args.
|
34
|
+
Environments::Runner.new(args.to_a).run_and_report
|
35
|
+
end
|
36
|
+
|
37
|
+
desc 'Run all mini environment tests known to work with the current Ruby version'
|
38
|
+
task :all_compatible_envs do |t, args|
|
39
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'test', 'helpers', 'ruby_rails_mappings'))
|
40
|
+
rails_versions = rails_versions_for_ruby_version(RUBY_VERSION)
|
41
|
+
Rake::Task['test:env'].invoke(*rails_versions)
|
38
42
|
end
|
39
43
|
|
40
44
|
Rake::TestTask.new(:intentional_fail) do |t|
|
@@ -51,18 +55,17 @@ namespace :test do
|
|
51
55
|
|
52
56
|
# Note unit testing task is defined in lib/tasks/tests.rake to facilitate
|
53
57
|
# running them in a rails application environment.
|
54
|
-
|
55
58
|
end
|
56
59
|
|
57
60
|
desc 'Record build number and stage'
|
58
|
-
task :record_build, [
|
61
|
+
task :record_build, [:build_number, :stage] do |t, args|
|
59
62
|
build_string = args.build_number
|
60
63
|
build_string << ".#{args.stage}" unless args.stage.nil? || args.stage.empty?
|
61
64
|
|
62
|
-
gitsha = File.
|
65
|
+
gitsha = File.exist?('.git') ? `git rev-parse HEAD` : 'Unknown'
|
63
66
|
gitsha.chomp!
|
64
67
|
|
65
|
-
File.open(
|
68
|
+
File.open('lib/new_relic/build.rb', 'w') do |f|
|
66
69
|
f.write("# GITSHA: #{gitsha}\n")
|
67
70
|
f.write("module NewRelic; module VERSION; BUILD='#{build_string}'; end; end\n")
|
68
71
|
end
|
@@ -90,14 +93,14 @@ task :update_ca_bundle do |t|
|
|
90
93
|
bundle_last_update = `cd #{ca_bundle_path} && git show -s --format=%ci HEAD`
|
91
94
|
puts "Source CA bundle last updated #{bundle_last_update}"
|
92
95
|
|
93
|
-
bundle_path =
|
96
|
+
bundle_path = 'cert/cacert.pem'
|
94
97
|
cert_paths = []
|
95
98
|
Dir.glob("#{ca_bundle_path}/*.pem").each { |p| cert_paths << p }
|
96
99
|
cert_paths.sort!
|
97
100
|
|
98
101
|
puts "Writing #{cert_paths.size} certs to bundle at #{bundle_path}..."
|
99
102
|
|
100
|
-
File.open(bundle_path,
|
103
|
+
File.open(bundle_path, 'w') do |f|
|
101
104
|
cert_paths.each do |cert_path|
|
102
105
|
cert_name = File.basename(cert_path, '.pem')
|
103
106
|
puts "Adding #{cert_name}"
|
@@ -110,26 +113,23 @@ task :update_ca_bundle do |t|
|
|
110
113
|
end
|
111
114
|
|
112
115
|
namespace :cross_agent_tests do
|
113
|
-
|
114
|
-
|
116
|
+
CROSS_AGENT_TESTS_UPSTREAM_PATH = File.expand_path(File.join('..', 'cross_agent_tests')).freeze
|
117
|
+
CROSS_AGENT_TESTS_LOCAL_PATH = File.expand_path(File.join('test', 'fixtures', 'cross_agent_tests')).freeze
|
115
118
|
|
116
119
|
desc 'Pull latest changes from cross_agent_tests repo'
|
117
120
|
task :pull do
|
118
|
-
|
119
|
-
|
120
|
-
puts cmd
|
121
|
-
system(cmd)
|
121
|
+
command = " rsync -av --exclude .git #{CROSS_AGENT_TESTS_UPSTREAM_PATH}/ #{CROSS_AGENT_TESTS_LOCAL_PATH}/"
|
122
|
+
prompt_to_continue(command)
|
122
123
|
end
|
123
124
|
|
124
125
|
desc 'Copy changes from embedded cross_agent_tests to official repo working copy'
|
125
126
|
task :push do
|
126
|
-
|
127
|
-
|
128
|
-
puts cmd
|
129
|
-
system(cmd)
|
127
|
+
command = "rsync -av #{CROSS_AGENT_TESTS_LOCAL_PATH}/ #{CROSS_AGENT_TESTS_UPSTREAM_PATH}/"
|
128
|
+
prompt_to_continue(command, 'remote (agent spec repo)')
|
130
129
|
end
|
131
130
|
end
|
132
131
|
|
132
|
+
desc 'Start an interactive console session'
|
133
133
|
task :console do
|
134
134
|
require 'pry'
|
135
135
|
require 'newrelic_rpm'
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# Third Party Notices
|
2
|
+
|
3
|
+
The New Relic Ruby agent may make use of source code from third party libraries
|
4
|
+
which carry their own copyright notices and license terms. Any such content will
|
5
|
+
be provided below.
|
6
|
+
|
7
|
+
In the event that a required notice is missing or incorrect, please notify us
|
8
|
+
by e-mailing [open-source@newrelic.com](mailto:open-source@newrelic.com).
|
9
|
+
|
10
|
+
For any licenses that require the disclosure of source
|
11
|
+
code, the source code can be found at:
|
12
|
+
[https://github.com/newrelic/newrelic-ruby-agent](https://github.com/newrelic/newrelic-ruby-agent).
|
13
|
+
|
14
|
+
|
15
|
+
## Current Notices and Terms
|
16
|
+
|
17
|
+
As of version 7.0 (released April 23, 2021), the New Relic Ruby agent does not
|
18
|
+
include any third party software with its distribution.
|
19
|
+
|
20
|
+
The Ruby agent team leverages a variety of open source third party software for
|
21
|
+
the development of the agent but not distributed with the agent. Some of these
|
22
|
+
software packages are referenced as development dependencies in the agent's
|
23
|
+
[newrelic_rpm.gemspec](newrelic_rpm.gemspec) file. We are grateful
|
24
|
+
to the maintainers and contributors for all of these packages.
|
25
|
+
|
26
|
+
For versions older than 7.0, please consult the `THIRD_PARTY_NOTICES.md`
|
27
|
+
document distributed with the agent. Any version of the agent not containing
|
28
|
+
that document are not thought to include any third party software.
|
data/Thorfile
ADDED
data/bin/newrelic
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
2
4
|
# executes one of the commands in the new_relic/commands directory
|
3
5
|
# pass the name of the command as an argument
|
4
6
|
|
5
|
-
$LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..','lib'))
|
7
|
+
$LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
8
|
require 'new_relic/cli/command'
|
7
9
|
begin
|
8
10
|
NewRelic::Cli::Command.run
|
9
11
|
rescue NewRelic::Cli::Command::CommandFailure => failure
|
10
12
|
STDERR.puts failure.message
|
11
13
|
STDERR.puts failure.options if failure.options
|
12
|
-
exit
|
14
|
+
exit(1)
|
13
15
|
end
|