newrelic_rpm 9.7.0 → 9.16.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +376 -2
- data/README.md +17 -18
- data/Rakefile +1 -1
- data/lib/boot/strap.rb +101 -0
- data/lib/new_relic/agent/agent.rb +4 -1
- data/lib/new_relic/agent/agent_helpers/connect.rb +10 -8
- data/lib/new_relic/agent/agent_helpers/start_worker_thread.rb +1 -1
- data/lib/new_relic/agent/agent_helpers/startup.rb +2 -1
- data/lib/new_relic/agent/agent_logger.rb +3 -1
- data/lib/new_relic/agent/aws.rb +68 -0
- data/lib/new_relic/agent/configuration/default_source.rb +519 -23
- data/lib/new_relic/agent/configuration/environment_source.rb +14 -2
- data/lib/new_relic/agent/configuration/high_security_source.rb +1 -0
- data/lib/new_relic/agent/configuration/manager.rb +51 -8
- data/lib/new_relic/agent/configuration/security_policy_source.rb +11 -0
- data/lib/new_relic/agent/configuration/yaml_source.rb +2 -0
- data/lib/new_relic/agent/connect/request_builder.rb +1 -1
- data/lib/new_relic/agent/custom_event_aggregator.rb +27 -1
- data/lib/new_relic/agent/database/obfuscation_helpers.rb +11 -11
- data/lib/new_relic/agent/database/obfuscator.rb +1 -0
- data/lib/new_relic/agent/database.rb +39 -0
- data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +1 -5
- data/lib/new_relic/agent/error_collector.rb +39 -10
- data/lib/new_relic/agent/harvester.rb +1 -1
- data/lib/new_relic/agent/instrumentation/active_merchant.rb +0 -13
- data/lib/new_relic/agent/instrumentation/active_record.rb +1 -8
- data/lib/new_relic/agent/instrumentation/active_record_helper.rb +3 -0
- data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +1 -12
- data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger/instrumentation.rb +7 -3
- data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger.rb +0 -2
- data/lib/new_relic/agent/instrumentation/active_support_logger.rb +0 -2
- data/lib/new_relic/agent/instrumentation/async_http.rb +4 -3
- data/lib/new_relic/agent/instrumentation/aws_sdk_lambda/chain.rb +33 -0
- data/lib/new_relic/agent/instrumentation/aws_sdk_lambda/instrumentation.rb +93 -0
- data/lib/new_relic/agent/instrumentation/aws_sdk_lambda/prepend.rb +23 -0
- data/lib/new_relic/agent/instrumentation/aws_sdk_lambda.rb +23 -0
- data/lib/new_relic/agent/instrumentation/aws_sqs/chain.rb +37 -0
- data/lib/new_relic/agent/instrumentation/aws_sqs/instrumentation.rb +67 -0
- data/lib/new_relic/agent/instrumentation/aws_sqs/prepend.rb +21 -0
- data/lib/new_relic/agent/instrumentation/aws_sqs.rb +23 -0
- data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +14 -0
- data/lib/new_relic/agent/instrumentation/bunny.rb +3 -4
- data/lib/new_relic/agent/instrumentation/concurrent_ruby.rb +1 -2
- data/lib/new_relic/agent/instrumentation/curb.rb +3 -4
- data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +0 -23
- data/lib/new_relic/agent/instrumentation/dynamodb/chain.rb +27 -0
- data/lib/new_relic/agent/instrumentation/dynamodb/instrumentation.rb +64 -0
- data/lib/new_relic/agent/instrumentation/dynamodb/prepend.rb +19 -0
- data/lib/new_relic/agent/instrumentation/dynamodb.rb +23 -0
- data/lib/new_relic/agent/instrumentation/elasticsearch/instrumentation.rb +58 -8
- data/lib/new_relic/agent/instrumentation/elasticsearch.rb +0 -2
- data/lib/new_relic/agent/instrumentation/ethon.rb +0 -4
- data/lib/new_relic/agent/instrumentation/excon.rb +0 -16
- data/lib/new_relic/agent/instrumentation/fiber.rb +0 -2
- data/lib/new_relic/agent/instrumentation/grape.rb +1 -1
- data/lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb +0 -1
- data/lib/new_relic/agent/instrumentation/grpc_server.rb +1 -1
- data/lib/new_relic/agent/instrumentation/httpclient.rb +0 -1
- data/lib/new_relic/agent/instrumentation/httprb.rb +0 -1
- data/lib/new_relic/agent/instrumentation/httpx.rb +0 -4
- data/lib/new_relic/agent/instrumentation/logger.rb +1 -3
- data/lib/new_relic/agent/instrumentation/logstasher/chain.rb +21 -0
- data/lib/new_relic/agent/instrumentation/logstasher/instrumentation.rb +24 -0
- data/lib/new_relic/agent/instrumentation/logstasher/prepend.rb +13 -0
- data/lib/new_relic/agent/instrumentation/logstasher.rb +25 -0
- data/lib/new_relic/agent/instrumentation/memcache.rb +0 -1
- data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +6 -0
- data/lib/new_relic/agent/instrumentation/opensearch/chain.rb +21 -0
- data/lib/new_relic/agent/instrumentation/opensearch/instrumentation.rb +66 -0
- data/lib/new_relic/agent/instrumentation/opensearch/prepend.rb +13 -0
- data/lib/new_relic/agent/instrumentation/opensearch.rb +23 -0
- data/lib/new_relic/agent/instrumentation/padrino.rb +3 -3
- data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +3 -0
- data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +9 -5
- data/lib/new_relic/agent/instrumentation/rake.rb +0 -1
- data/lib/new_relic/agent/instrumentation/rdkafka/chain.rb +72 -0
- data/lib/new_relic/agent/instrumentation/rdkafka/instrumentation.rb +70 -0
- data/lib/new_relic/agent/instrumentation/rdkafka/prepend.rb +67 -0
- data/lib/new_relic/agent/instrumentation/rdkafka.rb +25 -0
- data/lib/new_relic/agent/instrumentation/redis/cluster_middleware.rb +26 -0
- data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +14 -11
- data/lib/new_relic/agent/instrumentation/redis/middleware.rb +3 -0
- data/lib/new_relic/agent/instrumentation/redis.rb +11 -5
- data/lib/new_relic/agent/instrumentation/resque.rb +0 -4
- data/lib/new_relic/agent/instrumentation/roda.rb +4 -4
- data/lib/new_relic/agent/instrumentation/ruby_kafka/chain.rb +55 -0
- data/lib/new_relic/agent/instrumentation/ruby_kafka/instrumentation.rb +67 -0
- data/lib/new_relic/agent/instrumentation/ruby_kafka/prepend.rb +60 -0
- data/lib/new_relic/agent/instrumentation/ruby_kafka.rb +25 -0
- data/lib/new_relic/agent/instrumentation/ruby_openai/chain.rb +36 -0
- data/lib/new_relic/agent/instrumentation/ruby_openai/instrumentation.rb +196 -0
- data/lib/new_relic/agent/instrumentation/ruby_openai/prepend.rb +20 -0
- data/lib/new_relic/agent/instrumentation/ruby_openai.rb +35 -0
- data/lib/new_relic/agent/instrumentation/sidekiq.rb +0 -14
- data/lib/new_relic/agent/instrumentation/sinatra.rb +3 -19
- data/lib/new_relic/agent/instrumentation/stripe_subscriber.rb +22 -1
- data/lib/new_relic/agent/instrumentation/thread.rb +0 -2
- data/lib/new_relic/agent/instrumentation/tilt.rb +0 -4
- data/lib/new_relic/agent/instrumentation/typhoeus.rb +0 -1
- data/lib/new_relic/agent/instrumentation/view_component/instrumentation.rb +13 -6
- data/lib/new_relic/agent/instrumentation/view_component.rb +0 -2
- data/lib/new_relic/agent/javascript_instrumentor.rb +2 -3
- data/lib/new_relic/agent/llm/chat_completion_message.rb +25 -0
- data/lib/new_relic/agent/llm/chat_completion_summary.rb +66 -0
- data/lib/new_relic/agent/llm/embedding.rb +60 -0
- data/lib/new_relic/agent/llm/llm_event.rb +95 -0
- data/lib/new_relic/agent/llm/response_headers.rb +80 -0
- data/lib/new_relic/agent/llm.rb +49 -0
- data/lib/new_relic/agent/local_log_decorator.rb +8 -1
- data/lib/new_relic/agent/log_event_aggregator.rb +120 -44
- data/lib/new_relic/agent/messaging.rb +11 -5
- data/lib/new_relic/agent/new_relic_service.rb +12 -2
- data/lib/new_relic/agent/serverless_handler.rb +400 -0
- data/lib/new_relic/agent/serverless_handler_event_sources.json +155 -0
- data/lib/new_relic/agent/serverless_handler_event_sources.rb +49 -0
- data/lib/new_relic/agent/span_event_primitive.rb +8 -10
- data/lib/new_relic/agent/system_info.rb +14 -0
- data/lib/new_relic/agent/threading/agent_thread.rb +1 -2
- data/lib/new_relic/agent/tracer.rb +5 -5
- data/lib/new_relic/agent/transaction/abstract_segment.rb +1 -1
- data/lib/new_relic/agent/transaction/external_request_segment.rb +0 -10
- data/lib/new_relic/agent/transaction/request_attributes.rb +13 -1
- data/lib/new_relic/agent/transaction/trace_context.rb +1 -1
- data/lib/new_relic/agent/transaction/tracing.rb +2 -2
- data/lib/new_relic/agent/transaction.rb +2 -6
- data/lib/new_relic/agent/transaction_error_primitive.rb +23 -19
- data/lib/new_relic/agent.rb +198 -10
- data/lib/new_relic/constants.rb +2 -0
- data/lib/new_relic/control/frameworks/grape.rb +14 -0
- data/lib/new_relic/control/frameworks/padrino.rb +14 -0
- data/lib/new_relic/control/frameworks/rails4.rb +1 -3
- data/lib/new_relic/control/instance_methods.rb +8 -0
- data/lib/new_relic/control/private_instance_methods.rb +4 -0
- data/lib/new_relic/control/security_interface.rb +57 -0
- data/lib/new_relic/control.rb +1 -1
- data/lib/new_relic/dependency_detection.rb +10 -5
- data/lib/new_relic/environment_report.rb +2 -2
- data/lib/new_relic/helper.rb +15 -0
- data/lib/new_relic/language_support.rb +3 -1
- data/lib/new_relic/local_environment.rb +14 -10
- data/lib/new_relic/rack/browser_monitoring.rb +28 -12
- data/lib/new_relic/supportability_helper.rb +2 -0
- data/lib/new_relic/thread_local_storage.rb +31 -0
- data/lib/new_relic/version.rb +2 -2
- data/lib/sequel/extensions/new_relic_instrumentation.rb +3 -2
- data/lib/tasks/config.rake +8 -3
- data/lib/tasks/gha.rake +31 -0
- data/lib/tasks/helpers/config.html.erb +3 -2
- data/lib/tasks/helpers/format.rb +1 -1
- data/lib/tasks/helpers/newrelicyml.rb +76 -13
- data/lib/tasks/instrumentation_generator/instrumentation.thor +31 -22
- data/lib/tasks/instrumentation_generator/templates/chain.tt +0 -1
- data/lib/tasks/instrumentation_generator/templates/chain_method.tt +0 -1
- data/lib/tasks/instrumentation_generator/templates/dependency_detection.tt +11 -8
- data/lib/tasks/instrumentation_generator/templates/newrelic.yml.tt +1 -1
- data/newrelic.yml +387 -143
- data/newrelic_rpm.gemspec +2 -0
- data/test/agent_helper.rb +17 -2
- metadata +80 -3
@@ -35,6 +35,15 @@ module NewRelic
|
|
35
35
|
end
|
36
36
|
|
37
37
|
class DefaultSource
|
38
|
+
BOOLEAN_MAP = {
|
39
|
+
'true' => true,
|
40
|
+
'yes' => true,
|
41
|
+
'on' => true,
|
42
|
+
'false' => false,
|
43
|
+
'no' => false,
|
44
|
+
'off' => false
|
45
|
+
}.freeze
|
46
|
+
|
38
47
|
attr_reader :defaults
|
39
48
|
|
40
49
|
extend Forwardable
|
@@ -52,12 +61,33 @@ module NewRelic
|
|
52
61
|
result
|
53
62
|
end
|
54
63
|
|
64
|
+
def self.default_settings(key)
|
65
|
+
::NewRelic::Agent::Configuration::DEFAULTS[key]
|
66
|
+
end
|
67
|
+
|
68
|
+
def self.value_from_defaults(key, subkey)
|
69
|
+
default_settings(key)&.send(:[], subkey)
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.allowlist_for(key)
|
73
|
+
value_from_defaults(key, :allowlist)
|
74
|
+
end
|
75
|
+
|
76
|
+
def self.boolean_for(key, value)
|
77
|
+
string_value = (value.respond_to?(:call) ? value.call : value).to_s
|
78
|
+
|
79
|
+
BOOLEAN_MAP.fetch(string_value, nil)
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.default_for(key)
|
83
|
+
value_from_defaults(key, :default)
|
84
|
+
end
|
85
|
+
|
55
86
|
def self.transform_for(key)
|
56
|
-
|
57
|
-
default_settings[:transform] if default_settings
|
87
|
+
value_from_defaults(key, :transform)
|
58
88
|
end
|
59
89
|
|
60
|
-
def self.config_search_paths
|
90
|
+
def self.config_search_paths
|
61
91
|
proc {
|
62
92
|
yaml = 'newrelic.yml'
|
63
93
|
config_yaml = File.join('config', yaml)
|
@@ -115,8 +145,10 @@ module NewRelic
|
|
115
145
|
::NewRelic::Agent.logger.warn("Detected untested Rails version #{Rails::VERSION::STRING}")
|
116
146
|
:rails_notifications
|
117
147
|
end
|
148
|
+
when defined?(::Padrino) && defined?(::Padrino::PathRouter::Router) then :padrino
|
118
149
|
when defined?(::Sinatra) && defined?(::Sinatra::Base) then :sinatra
|
119
150
|
when defined?(::Roda) then :roda
|
151
|
+
when defined?(::Grape) then :grape
|
120
152
|
when defined?(::NewRelic::IA) then :external
|
121
153
|
else :ruby
|
122
154
|
end
|
@@ -360,6 +392,28 @@ module NewRelic
|
|
360
392
|
- a.third.event
|
361
393
|
DESCRIPTION
|
362
394
|
},
|
395
|
+
:'ai_monitoring.enabled' => {
|
396
|
+
:default => false,
|
397
|
+
:public => true,
|
398
|
+
:type => Boolean,
|
399
|
+
:allowed_from_server => false,
|
400
|
+
:description => 'If `false`, all LLM instrumentation (OpenAI only for now) will be disabled and no metrics, events, or spans will be sent. AI Monitoring is automatically disabled if `high_security` mode is enabled.'
|
401
|
+
},
|
402
|
+
:'ai_monitoring.record_content.enabled' => {
|
403
|
+
:default => true,
|
404
|
+
:public => true,
|
405
|
+
:type => Boolean,
|
406
|
+
:allowed_from_server => false,
|
407
|
+
:description => <<~DESCRIPTION
|
408
|
+
If `false`, LLM instrumentation (OpenAI only for now) will not capture input and output content on specific LLM events.
|
409
|
+
|
410
|
+
The excluded attributes include:
|
411
|
+
* `content` from LlmChatCompletionMessage events
|
412
|
+
* `input` from LlmEmbedding events
|
413
|
+
|
414
|
+
This is an optional security setting to prevent recording sensitive data sent to and received from your LLMs.
|
415
|
+
DESCRIPTION
|
416
|
+
},
|
363
417
|
# this is only set via server side config
|
364
418
|
:apdex_t => {
|
365
419
|
:default => 0.5,
|
@@ -373,6 +427,7 @@ module NewRelic
|
|
373
427
|
:public => true,
|
374
428
|
:type => String,
|
375
429
|
:allowed_from_server => false,
|
430
|
+
:exclude_from_reported_settings => true,
|
376
431
|
:description => 'Your New Relic <InlinePopover type="userKey" />. Required when using the New Relic REST API v2 to record deployments using the `newrelic deployments` command.'
|
377
432
|
},
|
378
433
|
:backport_fast_active_record_connection_lookup => {
|
@@ -388,7 +443,7 @@ module NewRelic
|
|
388
443
|
:public => true,
|
389
444
|
:type => String,
|
390
445
|
:allowed_from_server => false,
|
391
|
-
:description => "Manual override for the path to your local CA bundle. This CA bundle
|
446
|
+
:description => "Manual override for the path to your local CA bundle. This CA bundle validates the SSL certificate presented by New Relic's data collection service."
|
392
447
|
},
|
393
448
|
:capture_memcache_keys => {
|
394
449
|
:default => false,
|
@@ -417,6 +472,14 @@ module NewRelic
|
|
417
472
|
:allowed_from_server => false,
|
418
473
|
:description => 'If `true`, the agent will clear `Tracer::State` in `Agent.drop_buffered_data`.'
|
419
474
|
},
|
475
|
+
:'cloud.aws.account_id' => {
|
476
|
+
:default => nil,
|
477
|
+
:public => true,
|
478
|
+
:type => String,
|
479
|
+
:allow_nil => true,
|
480
|
+
:allowed_from_server => false,
|
481
|
+
:description => 'The AWS account ID for the AWS account associated with this app'
|
482
|
+
},
|
420
483
|
:config_path => {
|
421
484
|
:default => DefaultSource.config_path,
|
422
485
|
:public => true,
|
@@ -442,12 +505,14 @@ module NewRelic
|
|
442
505
|
:public => true,
|
443
506
|
:type => Boolean,
|
444
507
|
:allowed_from_server => false,
|
445
|
-
:description =>
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
508
|
+
:description => <<~DESC
|
509
|
+
The exit handler that sends all cached data to the collector before shutting down is forcibly installed. \
|
510
|
+
This is true even when it detects scenarios where it generally should not be. The known use case for this \
|
511
|
+
option is when Sinatra runs as an embedded service within another framework. The agent detects the Sinatra \
|
512
|
+
app and skips the `at_exit` handler as a result. Sinatra classically runs the entire application in an \
|
513
|
+
`at_exit` block and would otherwise misbehave if the agent's `at_exit` handler was also installed in those \
|
514
|
+
circumstances. Note: `send_data_on_exit` should also be set to `true` in tandem with this setting.
|
515
|
+
DESC
|
451
516
|
},
|
452
517
|
:high_security => {
|
453
518
|
:default => false,
|
@@ -554,6 +619,13 @@ module NewRelic
|
|
554
619
|
:allowed_from_server => false,
|
555
620
|
:description => 'When set to `true`, forces a synchronous connection to the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) during application startup. For very short-lived processes, this helps ensure the New Relic agent has time to report.'
|
556
621
|
},
|
622
|
+
:thread_local_tracer_state => {
|
623
|
+
:default => false,
|
624
|
+
:public => true,
|
625
|
+
:type => Boolean,
|
626
|
+
:allowed_from_server => false,
|
627
|
+
:description => 'If `true`, tracer state storage is thread-local, otherwise, fiber-local'
|
628
|
+
},
|
557
629
|
:timeout => {
|
558
630
|
:default => 2 * 60, # 2 minutes
|
559
631
|
:public => true,
|
@@ -574,7 +646,7 @@ module NewRelic
|
|
574
646
|
:public => true,
|
575
647
|
:type => Boolean,
|
576
648
|
:allowed_from_server => true,
|
577
|
-
:description =>
|
649
|
+
:description => "If `true`, enables the collection of explain plans in transaction traces. This setting will also apply to explain plans in slow SQL traces if [`slow_sql.explain_enabled`](#slow_sql-explain_enabled) isn't set separately."
|
578
650
|
},
|
579
651
|
:'transaction_tracer.explain_threshold' => {
|
580
652
|
:default => 0.5,
|
@@ -720,7 +792,7 @@ module NewRelic
|
|
720
792
|
:public => true,
|
721
793
|
:type => Integer,
|
722
794
|
:allowed_from_server => false,
|
723
|
-
:description => 'Defines the maximum number of frames in an error backtrace. Backtraces over this amount are truncated
|
795
|
+
:description => 'Defines the maximum number of frames in an error backtrace. Backtraces over this amount are truncated in the middle, preserving the beginning and the end of the stack trace.'
|
724
796
|
},
|
725
797
|
:'error_collector.max_event_samples_stored' => {
|
726
798
|
:default => 100,
|
@@ -738,6 +810,15 @@ module NewRelic
|
|
738
810
|
:allowed_from_server => true,
|
739
811
|
:description => 'If `true`, enables [auto-injection](/docs/browser/new-relic-browser/installation-configuration/adding-apps-new-relic-browser#select-apm-app) of the JavaScript header for page load timing (sometimes referred to as real user monitoring or RUM).'
|
740
812
|
},
|
813
|
+
# CSP nonce
|
814
|
+
:'browser_monitoring.content_security_policy_nonce' => {
|
815
|
+
:default => value_of(:'rum.enabled'),
|
816
|
+
:documentation_default => true,
|
817
|
+
:public => true,
|
818
|
+
:type => Boolean,
|
819
|
+
:allowed_from_server => false,
|
820
|
+
:description => 'If `true`, enables auto-injection of [Content Security Policy Nonce](https://content-security-policy.com/nonce/) in browser monitoring scripts. For now, auto-injection only works with Rails 5.2+.'
|
821
|
+
},
|
741
822
|
# Transaction events
|
742
823
|
:'transaction_events.enabled' => {
|
743
824
|
:default => true,
|
@@ -773,6 +854,7 @@ module NewRelic
|
|
773
854
|
:public => true,
|
774
855
|
:type => String,
|
775
856
|
:allowed_from_server => false,
|
857
|
+
:allowlist => %w[debug info warn error fatal unknown DEBUG INFO WARN ERROR FATAL UNKNOWN],
|
776
858
|
:description => <<~DESCRIPTION
|
777
859
|
Sets the minimum level a log event must have to be forwarded to New Relic.
|
778
860
|
|
@@ -799,6 +881,21 @@ module NewRelic
|
|
799
881
|
:allowed_from_server => false,
|
800
882
|
:description => 'A hash with key/value pairs to add as custom attributes to all log events forwarded to New Relic. If sending using an environment variable, the value must be formatted like: "key1=value1,key2=value2"'
|
801
883
|
},
|
884
|
+
:'application_logging.forwarding.labels.enabled' => {
|
885
|
+
:default => false,
|
886
|
+
:public => true,
|
887
|
+
:type => Boolean,
|
888
|
+
:allowed_from_server => false,
|
889
|
+
:description => 'If `true`, the agent attaches [labels](https://docs.newrelic.com/docs/apm/agents/ruby-agent/configuration/ruby-agent-configuration/#labels) to log records.'
|
890
|
+
},
|
891
|
+
:'application_logging.forwarding.labels.exclude' => {
|
892
|
+
:default => [],
|
893
|
+
:public => true,
|
894
|
+
:type => Array,
|
895
|
+
:transform => DefaultSource.method(:convert_to_list),
|
896
|
+
:allowed_from_server => false,
|
897
|
+
:description => 'A case-insensitive array or comma-delimited string containing the labels to exclude from log records.'
|
898
|
+
},
|
802
899
|
:'application_logging.forwarding.max_samples_stored' => {
|
803
900
|
:default => 10000,
|
804
901
|
:public => true,
|
@@ -1027,6 +1124,7 @@ module NewRelic
|
|
1027
1124
|
Rails::Command::InitializersCommand
|
1028
1125
|
Rails::Command::NotesCommand
|
1029
1126
|
Rails::Command::RoutesCommand
|
1127
|
+
Rails::Command::RunnerCommand
|
1030
1128
|
Rails::Command::SecretsCommand
|
1031
1129
|
Rails::Console
|
1032
1130
|
Rails::DBConsole].join(','),
|
@@ -1055,7 +1153,7 @@ module NewRelic
|
|
1055
1153
|
:public => true,
|
1056
1154
|
:type => Boolean,
|
1057
1155
|
:allowed_from_server => true,
|
1058
|
-
:description => "If `true`, the agent will report source code level metrics for traced methods.\
|
1156
|
+
:description => "If `true`, the agent will report source code level metrics for traced methods.\nSee: " \
|
1059
1157
|
'https://docs.newrelic.com/docs/apm/agents/ruby-agent/features/ruby-codestream-integration/'
|
1060
1158
|
},
|
1061
1159
|
# Cross application tracer
|
@@ -1078,6 +1176,56 @@ module NewRelic
|
|
1078
1176
|
:allowed_from_server => false,
|
1079
1177
|
:description => 'If `false`, custom attributes will not be sent on events.'
|
1080
1178
|
},
|
1179
|
+
:automatic_custom_instrumentation_method_list => {
|
1180
|
+
:default => NewRelic::EMPTY_ARRAY,
|
1181
|
+
:public => true,
|
1182
|
+
:type => Array,
|
1183
|
+
:allowed_from_server => false,
|
1184
|
+
:transform => proc { |arr| NewRelic::Agent.add_automatic_method_tracers(arr) },
|
1185
|
+
:description => <<~DESCRIPTION
|
1186
|
+
An array of `CLASS#METHOD` (for instance methods) and/or `CLASS.METHOD` (for class methods) strings representing Ruby methods that the agent can automatically add custom instrumentation to. This doesn't require any modifications of the source code that defines the methods.
|
1187
|
+
|
1188
|
+
Use fully qualified class names (using the `::` delimiter) that include any module or class namespacing.
|
1189
|
+
|
1190
|
+
Here is some Ruby source code that defines a `render_png` instance method for an `Image` class and a `notify` class method for a `User` class, both within a `MyCompany` module namespace:
|
1191
|
+
|
1192
|
+
```rb
|
1193
|
+
module MyCompany
|
1194
|
+
class Image
|
1195
|
+
def render_png
|
1196
|
+
# code to render a PNG
|
1197
|
+
end
|
1198
|
+
end
|
1199
|
+
|
1200
|
+
class User
|
1201
|
+
def self.notify
|
1202
|
+
# code to notify users
|
1203
|
+
end
|
1204
|
+
end
|
1205
|
+
end
|
1206
|
+
```
|
1207
|
+
|
1208
|
+
Given that source code, the `newrelic.yml` config file might request instrumentation for both of these methods like so:
|
1209
|
+
|
1210
|
+
```yaml
|
1211
|
+
automatic_custom_instrumentation_method_list:
|
1212
|
+
- MyCompany::Image#render_png
|
1213
|
+
- MyCompany::User.notify
|
1214
|
+
```
|
1215
|
+
|
1216
|
+
That configuration example uses YAML array syntax to specify both methods. Alternatively, you can use a comma-delimited string:
|
1217
|
+
|
1218
|
+
```yaml
|
1219
|
+
automatic_custom_instrumentation_method_list: 'MyCompany::Image#render_png, MyCompany::User.notify'
|
1220
|
+
```
|
1221
|
+
|
1222
|
+
Whitespace around the comma(s) in the list is optional. When configuring the agent with a list of methods via the `NEW_RELIC_AUTOMATIC_CUSTOM_INSTRUMENTATION_METHOD_LIST` environment variable, use this comma-delimited string format:
|
1223
|
+
|
1224
|
+
```sh
|
1225
|
+
export NEW_RELIC_AUTOMATIC_CUSTOM_INSTRUMENTATION_METHOD_LIST='MyCompany::Image#render_png, MyCompany::User.notify'
|
1226
|
+
```
|
1227
|
+
DESCRIPTION
|
1228
|
+
},
|
1081
1229
|
# Custom events
|
1082
1230
|
:'custom_insights_events.enabled' => {
|
1083
1231
|
:default => true,
|
@@ -1091,8 +1239,13 @@ module NewRelic
|
|
1091
1239
|
:public => true,
|
1092
1240
|
:type => Integer,
|
1093
1241
|
:allowed_from_server => true,
|
1094
|
-
:
|
1095
|
-
|
1242
|
+
:dynamic_name => true,
|
1243
|
+
# Keep the extra two-space indent before the second bullet to appease translation tool
|
1244
|
+
:description => <<~DESC
|
1245
|
+
* Specify a maximum number of custom events to buffer in memory at a time.
|
1246
|
+
* When configuring the agent for [AI monitoring](/docs/ai-monitoring/intro-to-ai-monitoring), \
|
1247
|
+
set to max value `100000`. This ensures the agent captures the maximum amount of LLM events.
|
1248
|
+
DESC
|
1096
1249
|
},
|
1097
1250
|
# Datastore tracer
|
1098
1251
|
:'datastore_tracer.database_name_reporting.enabled' => {
|
@@ -1383,6 +1536,7 @@ module NewRelic
|
|
1383
1536
|
},
|
1384
1537
|
:'instrumentation.async_http' => {
|
1385
1538
|
:default => 'auto',
|
1539
|
+
:documentation_default => 'auto',
|
1386
1540
|
:public => true,
|
1387
1541
|
:type => String,
|
1388
1542
|
:dynamic_name => true,
|
@@ -1391,14 +1545,67 @@ module NewRelic
|
|
1391
1545
|
},
|
1392
1546
|
:'instrumentation.bunny' => {
|
1393
1547
|
:default => 'auto',
|
1548
|
+
:documentation_default => 'auto',
|
1394
1549
|
:public => true,
|
1395
1550
|
:type => String,
|
1396
1551
|
:dynamic_name => true,
|
1397
1552
|
:allowed_from_server => false,
|
1398
1553
|
:description => 'Controls auto-instrumentation of bunny at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
1399
1554
|
},
|
1555
|
+
:'instrumentation.aws_sdk_lambda' => {
|
1556
|
+
:default => 'auto',
|
1557
|
+
:documentation_default => 'auto',
|
1558
|
+
:public => true,
|
1559
|
+
:type => String,
|
1560
|
+
:dynamic_name => true,
|
1561
|
+
:allowed_from_server => false,
|
1562
|
+
:description => 'Controls auto-instrumentation of the aws_sdk_lambda library at start-up. May be one of `auto`, `prepend`, `chain`, `disabled`.'
|
1563
|
+
},
|
1564
|
+
:'instrumentation.ruby_kafka' => {
|
1565
|
+
:default => 'auto',
|
1566
|
+
:public => true,
|
1567
|
+
:type => String,
|
1568
|
+
:dynamic_name => true,
|
1569
|
+
:allowed_from_server => false,
|
1570
|
+
:description => 'Controls auto-instrumentation of the ruby-kafka library at start-up. May be one of `auto`, `prepend`, `chain`, `disabled`.'
|
1571
|
+
},
|
1572
|
+
:'instrumentation.opensearch' => {
|
1573
|
+
:default => 'auto',
|
1574
|
+
:documentation_default => 'auto',
|
1575
|
+
:public => true,
|
1576
|
+
:type => String,
|
1577
|
+
:dynamic_name => true,
|
1578
|
+
:allowed_from_server => false,
|
1579
|
+
:description => 'Controls auto-instrumentation of the opensearch-ruby library at start-up. May be one of `auto`, `prepend`, `chain`, `disabled`.'
|
1580
|
+
},
|
1581
|
+
:'instrumentation.rdkafka' => {
|
1582
|
+
:default => 'auto',
|
1583
|
+
:public => true,
|
1584
|
+
:type => String,
|
1585
|
+
:dynamic_name => true,
|
1586
|
+
:allowed_from_server => false,
|
1587
|
+
:description => 'Controls auto-instrumentation of the rdkafka library at start-up. May be one of `auto`, `prepend`, `chain`, `disabled`.'
|
1588
|
+
},
|
1589
|
+
:'instrumentation.aws_sqs' => {
|
1590
|
+
:default => 'auto',
|
1591
|
+
:public => true,
|
1592
|
+
:type => String,
|
1593
|
+
:dynamic_name => true,
|
1594
|
+
:allowed_from_server => false,
|
1595
|
+
:description => 'Controls auto-instrumentation of the aws-sdk-sqs library at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
1596
|
+
},
|
1597
|
+
:'instrumentation.dynamodb' => {
|
1598
|
+
:default => 'auto',
|
1599
|
+
:documentation_default => 'auto',
|
1600
|
+
:public => true,
|
1601
|
+
:type => String,
|
1602
|
+
:dynamic_name => true,
|
1603
|
+
:allowed_from_server => false,
|
1604
|
+
:description => 'Controls auto-instrumentation of the aws-sdk-dynamodb library at start-up. May be one of `auto`, `prepend`, `chain`, `disabled`.'
|
1605
|
+
},
|
1400
1606
|
:'instrumentation.fiber' => {
|
1401
1607
|
:default => 'auto',
|
1608
|
+
:documentation_default => 'auto',
|
1402
1609
|
:public => true,
|
1403
1610
|
:type => String,
|
1404
1611
|
:dynamic_name => true,
|
@@ -1407,6 +1614,7 @@ module NewRelic
|
|
1407
1614
|
},
|
1408
1615
|
:'instrumentation.concurrent_ruby' => {
|
1409
1616
|
:default => 'auto',
|
1617
|
+
:documentation_default => 'auto',
|
1410
1618
|
:public => true,
|
1411
1619
|
:type => String,
|
1412
1620
|
:dynamic_name => true,
|
@@ -1433,6 +1641,7 @@ module NewRelic
|
|
1433
1641
|
},
|
1434
1642
|
:'instrumentation.elasticsearch' => {
|
1435
1643
|
:default => 'auto',
|
1644
|
+
:documentation_default => 'auto',
|
1436
1645
|
:public => true,
|
1437
1646
|
:type => String,
|
1438
1647
|
:dynamic_name => true,
|
@@ -1441,11 +1650,12 @@ module NewRelic
|
|
1441
1650
|
},
|
1442
1651
|
:'instrumentation.ethon' => {
|
1443
1652
|
:default => 'auto',
|
1653
|
+
:documentation_default => 'auto',
|
1444
1654
|
:public => true,
|
1445
1655
|
:type => String,
|
1446
1656
|
:dynamic_name => true,
|
1447
1657
|
:allowed_from_server => false,
|
1448
|
-
:description => 'Controls auto-instrumentation of ethon at start up. May be one of
|
1658
|
+
:description => 'Controls auto-instrumentation of ethon at start up. May be one of `auto`, `prepend`, `chain`, `disabled`'
|
1449
1659
|
},
|
1450
1660
|
:'instrumentation.excon' => {
|
1451
1661
|
:default => 'enabled',
|
@@ -1458,6 +1668,7 @@ module NewRelic
|
|
1458
1668
|
},
|
1459
1669
|
:'instrumentation.grape' => {
|
1460
1670
|
:default => 'auto',
|
1671
|
+
:documentation_default => 'auto',
|
1461
1672
|
:public => true,
|
1462
1673
|
:type => String,
|
1463
1674
|
:dynamic_name => true,
|
@@ -1515,7 +1726,7 @@ module NewRelic
|
|
1515
1726
|
:type => String,
|
1516
1727
|
:dynamic_name => true,
|
1517
1728
|
:allowed_from_server => false,
|
1518
|
-
:description => 'Controls auto-instrumentation of httpx at start up. May be one of
|
1729
|
+
:description => 'Controls auto-instrumentation of httpx at start up. May be one of `auto`, `prepend`, `chain`, `disabled`'
|
1519
1730
|
},
|
1520
1731
|
:'instrumentation.logger' => {
|
1521
1732
|
:default => instrumentation_value_from_boolean(:'application_logging.enabled'),
|
@@ -1526,8 +1737,18 @@ module NewRelic
|
|
1526
1737
|
:allowed_from_server => false,
|
1527
1738
|
:description => 'Controls auto-instrumentation of Ruby standard library Logger at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
1528
1739
|
},
|
1740
|
+
:'instrumentation.logstasher' => {
|
1741
|
+
:default => instrumentation_value_from_boolean(:'application_logging.enabled'),
|
1742
|
+
:documentation_default => 'auto',
|
1743
|
+
:public => true,
|
1744
|
+
:type => String,
|
1745
|
+
:dynamic_name => true,
|
1746
|
+
:allowed_from_server => false,
|
1747
|
+
:description => 'Controls auto-instrumentation of the LogStasher library at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
1748
|
+
},
|
1529
1749
|
:'instrumentation.memcache' => {
|
1530
1750
|
:default => 'auto',
|
1751
|
+
:documentation_default => 'auto',
|
1531
1752
|
:public => true,
|
1532
1753
|
:type => String,
|
1533
1754
|
:dynamic_name => true,
|
@@ -1570,6 +1791,15 @@ module NewRelic
|
|
1570
1791
|
:allowed_from_server => false,
|
1571
1792
|
:description => 'Controls auto-instrumentation of `Net::HTTP` at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
1572
1793
|
},
|
1794
|
+
:'instrumentation.ruby_openai' => {
|
1795
|
+
:default => 'auto',
|
1796
|
+
:documentation_default => 'auto',
|
1797
|
+
:public => true,
|
1798
|
+
:type => String,
|
1799
|
+
:dynamic_name => true,
|
1800
|
+
:allowed_from_server => false,
|
1801
|
+
:description => 'Controls auto-instrumentation of the ruby-openai gem at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`. Defaults to `disabled` in high security mode.'
|
1802
|
+
},
|
1573
1803
|
:'instrumentation.puma_rack' => {
|
1574
1804
|
:default => value_of(:'instrumentation.rack'),
|
1575
1805
|
:documentation_default => 'auto',
|
@@ -1612,6 +1842,7 @@ module NewRelic
|
|
1612
1842
|
},
|
1613
1843
|
:'instrumentation.rake' => {
|
1614
1844
|
:default => 'auto',
|
1845
|
+
:documentation_default => 'auto',
|
1615
1846
|
:public => true,
|
1616
1847
|
:type => String,
|
1617
1848
|
:dynamic_name => true,
|
@@ -1620,6 +1851,7 @@ module NewRelic
|
|
1620
1851
|
},
|
1621
1852
|
:'instrumentation.redis' => {
|
1622
1853
|
:default => 'auto',
|
1854
|
+
:documentation_default => 'auto',
|
1623
1855
|
:public => true,
|
1624
1856
|
:type => String,
|
1625
1857
|
:dynamic_name => true,
|
@@ -1637,6 +1869,7 @@ module NewRelic
|
|
1637
1869
|
},
|
1638
1870
|
:'instrumentation.roda' => {
|
1639
1871
|
:default => 'auto',
|
1872
|
+
:documentation_default => 'auto',
|
1640
1873
|
:public => true,
|
1641
1874
|
:type => String,
|
1642
1875
|
:dynamic_name => true,
|
@@ -1645,6 +1878,7 @@ module NewRelic
|
|
1645
1878
|
},
|
1646
1879
|
:'instrumentation.sinatra' => {
|
1647
1880
|
:default => 'auto',
|
1881
|
+
:documentation_default => 'auto',
|
1648
1882
|
:public => true,
|
1649
1883
|
:type => String,
|
1650
1884
|
:dynamic_name => true,
|
@@ -1660,6 +1894,7 @@ module NewRelic
|
|
1660
1894
|
},
|
1661
1895
|
:'instrumentation.view_component' => {
|
1662
1896
|
:default => 'auto',
|
1897
|
+
:documentation_default => 'auto',
|
1663
1898
|
:public => true,
|
1664
1899
|
:type => String,
|
1665
1900
|
:dynamic_name => true,
|
@@ -1676,7 +1911,7 @@ module NewRelic
|
|
1676
1911
|
:description => <<~DESCRIPTION
|
1677
1912
|
An array of strings to specify which keys inside a Stripe event's `user_data` hash should be reported
|
1678
1913
|
to New Relic. Each string in this array will be turned into a regular expression via `Regexp.new` to
|
1679
|
-
|
1914
|
+
enable advanced matching. Setting the value to `["."]` will report all `user_data`.
|
1680
1915
|
DESCRIPTION
|
1681
1916
|
},
|
1682
1917
|
:'stripe.user_data.exclude' => {
|
@@ -1689,13 +1924,14 @@ module NewRelic
|
|
1689
1924
|
:description => <<~DESCRIPTION
|
1690
1925
|
An array of strings to specify which keys and/or values inside a Stripe event's `user_data` hash should
|
1691
1926
|
not be reported to New Relic. Each string in this array will be turned into a regular expression via
|
1692
|
-
`Regexp.new` to permit advanced matching. For each hash pair, if either the key or value is matched the
|
1693
|
-
|
1694
|
-
|
1927
|
+
`Regexp.new` to permit advanced matching. For each hash pair, if either the key or value is matched the pair
|
1928
|
+
isn't reported. By default, no `user_data` is reported. Use this option only if the
|
1929
|
+
`stripe.user_data.include` option is also used.
|
1695
1930
|
DESCRIPTION
|
1696
1931
|
},
|
1697
1932
|
:'instrumentation.thread' => {
|
1698
1933
|
:default => 'auto',
|
1934
|
+
:documentation_default => 'auto',
|
1699
1935
|
:public => true,
|
1700
1936
|
:type => String,
|
1701
1937
|
:dynamic_name => true,
|
@@ -1718,6 +1954,7 @@ module NewRelic
|
|
1718
1954
|
},
|
1719
1955
|
:'instrumentation.tilt' => {
|
1720
1956
|
:default => 'auto',
|
1957
|
+
:documentation_default => 'auto',
|
1721
1958
|
:public => true,
|
1722
1959
|
:type => String,
|
1723
1960
|
:dynamic_name => true,
|
@@ -1756,6 +1993,21 @@ module NewRelic
|
|
1756
1993
|
:allowed_from_server => true,
|
1757
1994
|
:description => 'If `true`, the agent obfuscates Mongo queries in transaction traces.'
|
1758
1995
|
},
|
1996
|
+
# OpenSearch
|
1997
|
+
:'opensearch.capture_queries' => {
|
1998
|
+
:default => true,
|
1999
|
+
:public => true,
|
2000
|
+
:type => Boolean,
|
2001
|
+
:allowed_from_server => true,
|
2002
|
+
:description => 'If `true`, the agent captures OpenSearch queries in transaction traces.'
|
2003
|
+
},
|
2004
|
+
:'opensearch.obfuscate_queries' => {
|
2005
|
+
:default => true,
|
2006
|
+
:public => true,
|
2007
|
+
:type => Boolean,
|
2008
|
+
:allowed_from_server => true,
|
2009
|
+
:description => 'If `true`, the agent obfuscates OpenSearch queries in transaction traces.'
|
2010
|
+
},
|
1759
2011
|
# Process host
|
1760
2012
|
:'process_host.display_name' => {
|
1761
2013
|
:default => proc { NewRelic::Agent::Hostname.get },
|
@@ -1808,6 +2060,17 @@ module NewRelic
|
|
1808
2060
|
:transform => DefaultSource.method(:convert_to_regexp_list),
|
1809
2061
|
:description => 'Define transactions you want the agent to ignore, by specifying a list of patterns matching the URI you want to ignore. For more detail, see [the docs on ignoring specific transactions](/docs/agents/ruby-agent/api-guides/ignoring-specific-transactions/#config-ignoring).'
|
1810
2062
|
},
|
2063
|
+
# Serverless
|
2064
|
+
:'serverless_mode.enabled' => {
|
2065
|
+
:default => false,
|
2066
|
+
:public => true,
|
2067
|
+
:type => Boolean,
|
2068
|
+
:allowed_from_server => false,
|
2069
|
+
:transform => proc { |bool| NewRelic::Agent::ServerlessHandler.env_var_set? || bool },
|
2070
|
+
:description => 'If `true`, the agent will operate in a streamlined mode suitable for use with short-lived ' \
|
2071
|
+
'serverless functions. NOTE: Only AWS Lambda functions are supported currently and this ' \
|
2072
|
+
"option isn't intended for use without [New Relic's Ruby Lambda layer](https://docs.newrelic.com/docs/serverless-function-monitoring/aws-lambda-monitoring/get-started/monitoring-aws-lambda-serverless-monitoring/) offering."
|
2073
|
+
},
|
1811
2074
|
# Sidekiq
|
1812
2075
|
:'sidekiq.args.include' => {
|
1813
2076
|
default: NewRelic::EMPTY_ARRAY,
|
@@ -1900,7 +2163,12 @@ module NewRelic
|
|
1900
2163
|
:public => true,
|
1901
2164
|
:type => Integer,
|
1902
2165
|
:allowed_from_server => true,
|
1903
|
-
|
2166
|
+
# Keep the extra two-space indent before the second bullet to appease translation tool
|
2167
|
+
:description => <<~DESC
|
2168
|
+
* Defines the maximum number of span events reported from a single harvest. Any Integer between `1` and `10000` is valid.'
|
2169
|
+
* When configuring the agent for [AI monitoring](/docs/ai-monitoring/intro-to-ai-monitoring), set to max value `10000`.\
|
2170
|
+
This ensures the agent captures the maximum amount of distributed traces.
|
2171
|
+
DESC
|
1904
2172
|
},
|
1905
2173
|
# Strip exception messages
|
1906
2174
|
:'strip_exception_messages.enabled' => {
|
@@ -2048,7 +2316,7 @@ module NewRelic
|
|
2048
2316
|
:description => 'Enable or disable debugging version of JavaScript agent loader for browser monitoring instrumentation.'
|
2049
2317
|
},
|
2050
2318
|
:'browser_monitoring.ssl_for_http' => {
|
2051
|
-
:default =>
|
2319
|
+
:default => false,
|
2052
2320
|
:allow_nil => true,
|
2053
2321
|
:public => false,
|
2054
2322
|
:type => Boolean,
|
@@ -2216,6 +2484,7 @@ module NewRelic
|
|
2216
2484
|
:public => true,
|
2217
2485
|
:type => Symbol,
|
2218
2486
|
:allowed_from_server => false,
|
2487
|
+
:allowlist => %i[none low medium high],
|
2219
2488
|
:external => :infinite_tracing,
|
2220
2489
|
:description => <<~DESC
|
2221
2490
|
Configure the compression level for data sent to the trace observer.
|
@@ -2412,6 +2681,233 @@ module NewRelic
|
|
2412
2681
|
:type => Integer,
|
2413
2682
|
:allowed_from_server => false,
|
2414
2683
|
:description => 'This value represents the total amount of memory available to the host (not the process), in mebibytes (1024 squared or 1,048,576 bytes).'
|
2684
|
+
},
|
2685
|
+
# security agent
|
2686
|
+
:'security.agent.enabled' => {
|
2687
|
+
:default => false,
|
2688
|
+
:external => true,
|
2689
|
+
:public => true,
|
2690
|
+
:type => Boolean,
|
2691
|
+
:allowed_from_server => false,
|
2692
|
+
:description => "If `true`, the security agent loads (the agent performs a Ruby 'require')"
|
2693
|
+
},
|
2694
|
+
:'security.enabled' => {
|
2695
|
+
:default => false,
|
2696
|
+
:external => true,
|
2697
|
+
:public => true,
|
2698
|
+
:type => Boolean,
|
2699
|
+
:allowed_from_server => false,
|
2700
|
+
:description => 'If `true`, the security agent is started (the agent runs in its event loop)'
|
2701
|
+
},
|
2702
|
+
:'security.mode' => {
|
2703
|
+
:default => 'IAST',
|
2704
|
+
:external => true,
|
2705
|
+
:public => true,
|
2706
|
+
:type => String,
|
2707
|
+
:allowed_from_server => true,
|
2708
|
+
:allowlist => %w[IAST RASP],
|
2709
|
+
:description => 'Defines the mode for the security agent to operate in. Currently only `IAST` is supported',
|
2710
|
+
:dynamic_name => true
|
2711
|
+
},
|
2712
|
+
:'security.validator_service_url' => {
|
2713
|
+
:default => 'wss://csec.nr-data.net',
|
2714
|
+
:external => true,
|
2715
|
+
:public => true,
|
2716
|
+
:type => String,
|
2717
|
+
:allowed_from_server => true,
|
2718
|
+
:description => 'Defines the endpoint URL for posting security-related data',
|
2719
|
+
:dynamic_name => true
|
2720
|
+
},
|
2721
|
+
:'security.application_info.port' => {
|
2722
|
+
:default => nil,
|
2723
|
+
:allow_nil => true,
|
2724
|
+
:public => true,
|
2725
|
+
:type => Integer,
|
2726
|
+
:external => true,
|
2727
|
+
:allowed_from_server => false,
|
2728
|
+
:description => 'The port the application is listening on. This setting is mandatory for Passenger servers. The agent detects other servers by default.'
|
2729
|
+
},
|
2730
|
+
:'security.exclude_from_iast_scan.api' => {
|
2731
|
+
:default => [],
|
2732
|
+
:public => true,
|
2733
|
+
:type => Array,
|
2734
|
+
:external => true,
|
2735
|
+
:allowed_from_server => true,
|
2736
|
+
:transform => DefaultSource.method(:convert_to_list),
|
2737
|
+
:description => 'Defines API paths the security agent should ignore in IAST scans. Accepts an array of regex patterns matching the URI to ignore. The regex pattern should find a complete match for the URL without the endpoint. For example, `[".*account.*"], [".*/\api\/v1\/.*?\/login"]`'
|
2738
|
+
},
|
2739
|
+
:'security.exclude_from_iast_scan.http_request_parameters.header' => {
|
2740
|
+
:default => [],
|
2741
|
+
:public => true,
|
2742
|
+
:type => Array,
|
2743
|
+
:external => true,
|
2744
|
+
:allowed_from_server => true,
|
2745
|
+
:transform => DefaultSource.method(:convert_to_list),
|
2746
|
+
:description => 'An array of HTTP request headers the security agent should ignore in IAST scans. The array should specify a list of patterns matching the headers to ignore.'
|
2747
|
+
},
|
2748
|
+
:'security.exclude_from_iast_scan.http_request_parameters.query' => {
|
2749
|
+
:default => [],
|
2750
|
+
:public => true,
|
2751
|
+
:type => Array,
|
2752
|
+
:external => true,
|
2753
|
+
:allowed_from_server => true,
|
2754
|
+
:transform => DefaultSource.method(:convert_to_list),
|
2755
|
+
:description => 'An array of HTTP request query parameters the security agent should ignore in IAST scans. The array should specify a list of patterns matching the HTTP request query parameters to ignore.'
|
2756
|
+
},
|
2757
|
+
:'security.exclude_from_iast_scan.http_request_parameters.body' => {
|
2758
|
+
:default => [],
|
2759
|
+
:public => true,
|
2760
|
+
:type => Array,
|
2761
|
+
:external => true,
|
2762
|
+
:allowed_from_server => true,
|
2763
|
+
:transform => DefaultSource.method(:convert_to_list),
|
2764
|
+
:description => 'An array of HTTP request body keys the security agent should ignore in IAST scans.'
|
2765
|
+
},
|
2766
|
+
:'security.exclude_from_iast_scan.iast_detection_category.insecure_settings' => {
|
2767
|
+
:default => false,
|
2768
|
+
:external => true,
|
2769
|
+
:public => true,
|
2770
|
+
:type => Boolean,
|
2771
|
+
:allowed_from_server => false,
|
2772
|
+
:description => 'If `true`, disables the detection of low-severity insecure settings. For example, hash, crypto, cookie, random generators, trust boundary).'
|
2773
|
+
},
|
2774
|
+
:'security.exclude_from_iast_scan.iast_detection_category.invalid_file_access' => {
|
2775
|
+
:default => false,
|
2776
|
+
:external => true,
|
2777
|
+
:public => true,
|
2778
|
+
:type => Boolean,
|
2779
|
+
:allowed_from_server => false,
|
2780
|
+
:description => 'If `true`, disables file operation-related IAST detections (File Access & Application integrity violation)'
|
2781
|
+
},
|
2782
|
+
:'security.exclude_from_iast_scan.iast_detection_category.sql_injection' => {
|
2783
|
+
:default => false,
|
2784
|
+
:external => true,
|
2785
|
+
:public => true,
|
2786
|
+
:type => Boolean,
|
2787
|
+
:allowed_from_server => false,
|
2788
|
+
:description => 'If `true`, disables SQL injection detection in IAST scans.'
|
2789
|
+
},
|
2790
|
+
:'security.exclude_from_iast_scan.iast_detection_category.nosql_injection' => {
|
2791
|
+
:default => false,
|
2792
|
+
:external => true,
|
2793
|
+
:public => true,
|
2794
|
+
:type => Boolean,
|
2795
|
+
:allowed_from_server => false,
|
2796
|
+
:description => 'If `true`, disables NOSQL injection detection in IAST scans.'
|
2797
|
+
},
|
2798
|
+
:'security.exclude_from_iast_scan.iast_detection_category.ldap_injection' => {
|
2799
|
+
:default => false,
|
2800
|
+
:external => true,
|
2801
|
+
:public => true,
|
2802
|
+
:type => Boolean,
|
2803
|
+
:allowed_from_server => false,
|
2804
|
+
:description => 'If `true`, disables LDAP injection detection in IAST scans.'
|
2805
|
+
},
|
2806
|
+
:'security.exclude_from_iast_scan.iast_detection_category.javascript_injection' => {
|
2807
|
+
:default => false,
|
2808
|
+
:external => true,
|
2809
|
+
:public => true,
|
2810
|
+
:type => Boolean,
|
2811
|
+
:allowed_from_server => false,
|
2812
|
+
:description => 'If `true`, disables Javascript injection detection in IAST scans.'
|
2813
|
+
},
|
2814
|
+
:'security.exclude_from_iast_scan.iast_detection_category.command_injection' => {
|
2815
|
+
:default => false,
|
2816
|
+
:external => true,
|
2817
|
+
:public => true,
|
2818
|
+
:type => Boolean,
|
2819
|
+
:allowed_from_server => false,
|
2820
|
+
:description => 'If `true`, disables system command injection detection in IAST scans.'
|
2821
|
+
},
|
2822
|
+
:'security.exclude_from_iast_scan.iast_detection_category.xpath_injection' => {
|
2823
|
+
:default => false,
|
2824
|
+
:external => true,
|
2825
|
+
:public => true,
|
2826
|
+
:type => Boolean,
|
2827
|
+
:allowed_from_server => false,
|
2828
|
+
:description => 'If `true`, disables XPATH injection detection in IAST scans.'
|
2829
|
+
},
|
2830
|
+
:'security.exclude_from_iast_scan.iast_detection_category.ssrf' => {
|
2831
|
+
:default => false,
|
2832
|
+
:external => true,
|
2833
|
+
:public => true,
|
2834
|
+
:type => Boolean,
|
2835
|
+
:allowed_from_server => false,
|
2836
|
+
:description => 'If `true`, disables Sever-Side Request Forgery (SSRF) detection in IAST scans.'
|
2837
|
+
},
|
2838
|
+
:'security.exclude_from_iast_scan.iast_detection_category.rxss' => {
|
2839
|
+
:default => false,
|
2840
|
+
:external => true,
|
2841
|
+
:public => true,
|
2842
|
+
:type => Boolean,
|
2843
|
+
:allowed_from_server => false,
|
2844
|
+
:description => 'If `true`, disables Reflected Cross-Site Scripting (RXSS) detection in IAST scans.'
|
2845
|
+
},
|
2846
|
+
:'security.scan_schedule.delay' => {
|
2847
|
+
:default => 0,
|
2848
|
+
:public => true,
|
2849
|
+
:type => Integer,
|
2850
|
+
:external => true,
|
2851
|
+
:allowed_from_server => true,
|
2852
|
+
:description => 'Specifies the delay time (in minutes) before the IAST scan begins after the application starts.'
|
2853
|
+
},
|
2854
|
+
:'security.scan_schedule.duration' => {
|
2855
|
+
:default => 0,
|
2856
|
+
:public => true,
|
2857
|
+
:type => Integer,
|
2858
|
+
:external => true,
|
2859
|
+
:allowed_from_server => true,
|
2860
|
+
:description => 'Indicates the duration (in minutes) for which the IAST scan will be performed.'
|
2861
|
+
},
|
2862
|
+
:'security.scan_schedule.schedule' => {
|
2863
|
+
:default => '',
|
2864
|
+
:public => true,
|
2865
|
+
:type => String,
|
2866
|
+
:external => true,
|
2867
|
+
:allowed_from_server => true,
|
2868
|
+
:description => 'Specifies a cron expression that sets when the IAST scan should run.',
|
2869
|
+
:dynamic_name => true
|
2870
|
+
},
|
2871
|
+
:'security.scan_schedule.always_sample_traces' => {
|
2872
|
+
:default => false,
|
2873
|
+
:external => true,
|
2874
|
+
:public => true,
|
2875
|
+
:type => Boolean,
|
2876
|
+
:allowed_from_server => false,
|
2877
|
+
:description => 'If `true`, allows IAST to continuously gather trace data in the background. The security agent uses collected data to perform an IAST scan at the scheduled time.'
|
2878
|
+
},
|
2879
|
+
:'security.scan_controllers.iast_scan_request_rate_limit' => {
|
2880
|
+
:default => 3600,
|
2881
|
+
:public => true,
|
2882
|
+
:type => Integer,
|
2883
|
+
:external => true,
|
2884
|
+
:allowed_from_server => true,
|
2885
|
+
:description => 'Sets the maximum number of HTTP requests allowed for the IAST scan per minute. Any Integer between 12 and 3600 is valid. The default value is 3600.'
|
2886
|
+
},
|
2887
|
+
:'security.scan_controllers.scan_instance_count' => {
|
2888
|
+
:default => 0,
|
2889
|
+
:public => true,
|
2890
|
+
:type => Integer,
|
2891
|
+
:external => true,
|
2892
|
+
:allowed_from_server => true,
|
2893
|
+
:description => 'The number of application instances for a specific entity to perform IAST analysis on.'
|
2894
|
+
},
|
2895
|
+
:'security.scan_controllers.report_http_response_body' => {
|
2896
|
+
:default => true,
|
2897
|
+
:public => true,
|
2898
|
+
:type => Boolean,
|
2899
|
+
:external => true,
|
2900
|
+
:allowed_from_server => true,
|
2901
|
+
:description => 'If `true`, enables the sending of HTTP responses bodies. Disabling this also disables Reflected Cross-Site Scripting (RXSS) vulnerability detection.'
|
2902
|
+
},
|
2903
|
+
:'security.iast_test_identifier' => {
|
2904
|
+
:default => nil,
|
2905
|
+
:allow_nil => true,
|
2906
|
+
:public => true,
|
2907
|
+
:type => String,
|
2908
|
+
:external => true,
|
2909
|
+
:allowed_from_server => true,
|
2910
|
+
:description => 'A unique test identifier when runnning IAST in a CI/CD environment to differentiate between different test runs. For example, a build number.'
|
2415
2911
|
}
|
2416
2912
|
}.freeze
|
2417
2913
|
# rubocop:enable Metrics/CollectionLiteralLength
|