From 9899b5f5773ad374f56b2de0f4444b0a5fc58d8a Mon Sep 17 00:00:00 2001 From: Kayla Reopelle Date: Wed, 29 May 2024 11:28:00 -0700 Subject: [PATCH 1/3] Update config documentation The generator became out of sync with the published doc. There is a new CI workflow in place to prevent changes not made by the bot. --- .../agent/configuration/default_source.rb | 31 ++++++++++--------- lib/tasks/config.rake | 7 +++-- lib/tasks/helpers/config.html.erb | 5 +-- lib/tasks/helpers/format.rb | 2 +- 4 files changed, 25 insertions(+), 20 deletions(-) diff --git a/lib/new_relic/agent/configuration/default_source.rb b/lib/new_relic/agent/configuration/default_source.rb index 98c486a098..c9a33c9e0a 100644 --- a/lib/new_relic/agent/configuration/default_source.rb +++ b/lib/new_relic/agent/configuration/default_source.rb @@ -390,9 +390,11 @@ def self.enforce_fallback(allowed_values: nil, fallback: nil) :description => <<~DESCRIPTION If `false`, LLM instrumentation (OpenAI only for now) will not capture input and output content on specific LLM events. - The excluded attributes include: - * `content` from LlmChatCompletionMessage events - * `input` from LlmEmbedding events + The excluded attributes include: + * `content` from LlmChatCompletionMessage events + * `input` from LlmEmbedding events + + This is an optional security setting if you don't want to record sensitive data sent to and received from your LLMs. DESCRIPTION }, # this is only set via server side config @@ -477,12 +479,9 @@ def self.enforce_fallback(allowed_values: nil, fallback: nil) :public => true, :type => Boolean, :allowed_from_server => false, - :description => 'Forces the exit handler that sends all cached data to collector ' \ - 'before shutting down to be installed regardless of detecting scenarios where it generally should not be. ' \ - 'Known use-case for this option is where Sinatra is running as an embedded service within another framework ' \ - 'and the agent is detecting the Sinatra app and skipping the `at_exit` handler as a result. Sinatra classically ' \ - 'runs the entire application in an `at_exit` block and would otherwise misbehave if the agent\'s `at_exit` handler ' \ - 'was also installed in those circumstances. Note: `send_data_on_exit` should also be set to `true` in tandem with this setting.' + :description => <<~DESC + Forces the exit handler that sends all cached data to collector before shutting down to be installed regardless of detecting scenarios where it generally should not be. Known use-case for this option is where Sinatra is running as an embedded service within another framework and the agent is detecting the Sinatra app and skipping the `at_exit` handler as a result. Sinatra classically runs the entire application in an `at_exit` block and would otherwise misbehave if the Agent's `at_exit` handler was also installed in those circumstances. Note: `send_data_on_exit` should also be set to `true` in tandem with this setting." + DESC }, :high_security => { :default => false, @@ -1457,7 +1456,7 @@ def self.enforce_fallback(allowed_values: nil, fallback: nil) :type => String, :dynamic_name => true, :allowed_from_server => false, - :description => 'Controls auto-instrumentation of the aws-sdk-dynamodb library at start-up. May be one of [auto|prepend|chain|disabled].' + :description => 'Controls auto-instrumentation of the aws-sdk-dynamodb library at start-up. May be one of `auto`, `prepend`, `chain`, `disabled`.' }, :'instrumentation.fiber' => { :default => 'auto', @@ -1507,7 +1506,7 @@ def self.enforce_fallback(allowed_values: nil, fallback: nil) :type => String, :dynamic_name => true, :allowed_from_server => false, - :description => 'Controls auto-instrumentation of ethon at start up. May be one of [auto|prepend|chain|disabled]' + :description => 'Controls auto-instrumentation of ethon at start up. May be one of `auto`, `prepend`, `chain`, `disabled`' }, :'instrumentation.excon' => { :default => 'enabled', @@ -1577,7 +1576,7 @@ def self.enforce_fallback(allowed_values: nil, fallback: nil) :type => String, :dynamic_name => true, :allowed_from_server => false, - :description => 'Controls auto-instrumentation of httpx at start up. May be one of [auto|prepend|chain|disabled]' + :description => 'Controls auto-instrumentation of httpx at start up. May be one of `auto`, `prepend`, `chain`, `disabled`' }, :'instrumentation.logger' => { :default => instrumentation_value_from_boolean(:'application_logging.enabled'), @@ -1639,7 +1638,7 @@ def self.enforce_fallback(allowed_values: nil, fallback: nil) :type => String, :dynamic_name => true, :allowed_from_server => false, - :description => 'Controls auto-instrumentation of the ruby-openai gem at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.' + :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.' }, :'instrumentation.puma_rack' => { :default => value_of(:'instrumentation.rack'), @@ -1982,7 +1981,11 @@ def self.enforce_fallback(allowed_values: nil, fallback: nil) :public => true, :type => Integer, :allowed_from_server => true, - :description => 'Defines the maximum number of span events reported from a single harvest. Any Integer between `1` and `10000` is valid.' + :description => <<~DESC + * Defines the maximum number of span events reported from a single harvest. Any Integer between `1` and `10000` is valid.' + * When configuring the agent for [AI monitoring](/docs/ai-monitoring/intro-to-ai-monitoring), set to max value `10000`.\ + This ensures that the agent captures the maximum amount of distributed traces. + DESC }, # Strip exception messages :'strip_exception_messages.enabled' => { diff --git a/lib/tasks/config.rake b/lib/tasks/config.rake index 779009b88c..065f11785e 100644 --- a/lib/tasks/config.rake +++ b/lib/tasks/config.rake @@ -20,15 +20,16 @@ namespace :newrelic do ATTRIBUTES => '[Attributes](/docs/features/agent-attributes) are key-value pairs containing information that determines the properties of an event or transaction. These key-value pairs can be viewed within transaction traces in APM, traced errors in APM, transaction events in dashboards, and page views in dashboards. You can customize exactly which attributes will be sent to each of these destinations', 'transaction_tracer' => 'The [transaction traces](/docs/apm/traces/transaction-traces/transaction-traces) feature collects detailed information from a selection of transactions, including a summary of the calling sequence, a breakdown of time spent, and a list of SQL queries and their query plans (on mysql and postgresql). Available features depend on your New Relic subscription level.', 'error_collector' => "The agent collects and reports all uncaught exceptions by default. These configuration options allow you to customize the error collection.\n\nFor information on ignored and expected errors, [see this page on Error Analytics in APM](/docs/agents/manage-apm-agents/agent-data/manage-errors-apm-collect-ignore-or-mark-expected/). To set expected errors via the `NewRelic::Agent.notice_error` Ruby method, [consult the Ruby agent API](/docs/agents/ruby-agent/api-guides/sending-handled-errors-new-relic/).", - 'browser_monitoring' => "The browser monitoring [page load timing](/docs/browser/new-relic-browser/page-load-timing/page-load-timing-process) feature (sometimes referred to as real user monitoring or RUM) gives you insight into the performance real users are experiencing with your website. This is accomplished by measuring the time it takes for your users' browsers to download and render your web pages by injecting a small amount of JavaScript code into the header and footer of each page.", + 'browser_monitoring' => "The [page load timing](/docs/browser/new-relic-browser/page-load-timing/page-load-timing-process) feature (sometimes referred to as real user monitoring or RUM) gives you insight into the performance real users are experiencing with your website. This is accomplished by measuring the time it takes for your users' browsers to download and render your web pages by injecting a small amount of JavaScript code into the header and footer of each page.", 'application_logging' => "The Ruby agent supports [APM logs in context](/docs/apm/new-relic-apm/getting-started/get-started-logs-context). For some tips on configuring logs for the Ruby agent, see [Configure Ruby logs in context](/docs/logs/logs-context/configure-logs-context-ruby).\n\nAvailable logging-related config options include:", 'analytics_events' => '[New Relic dashboards](/docs/query-your-data/explore-query-data/dashboards/introduction-new-relic-one-dashboards) is a resource to gather and visualize data about your software and what it says about your business. With it you can quickly and easily create real-time dashboards to get immediate answers about end-user experiences, clickstreams, mobile activities, and server transactions.', - 'ai_monitoring' => "This section includes Ruby agent configurations for setting up AI monitoring.\n\nYou need to enable distributed tracing to capture trace and feedback data. It is turned on by default in Ruby agents 8.0.0 and higher." + 'ai_monitoring' => "This section includes Ruby agent configurations for setting up AI monitoring.\n\nYou need to enable distributed tracing to capture trace and feedback data. It is turned on by default in Ruby agents 8.0.0 and higher.", } NAME_OVERRIDES = { 'slow_sql' => 'Slow SQL [#slow-sql]', - 'custom_insights_events' => 'Custom Events [#custom-events]' + 'custom_insights_events' => 'Custom Events [#custom-events]', + 'ai_monitoring' => 'AI Monitoring [#ai-monitoring]' } desc 'Describe available New Relic configuration settings' diff --git a/lib/tasks/helpers/config.html.erb b/lib/tasks/helpers/config.html.erb index cd3acf313d..64ede173b1 100644 --- a/lib/tasks/helpers/config.html.erb +++ b/lib/tasks/helpers/config.html.erb @@ -10,6 +10,7 @@ redirects: - /docs/ruby/ruby-agent-configuration - /docs/agents/ruby-agent/installation-and-configuration/ruby-agent-configuration - /docs/agents/ruby-agent/installation-configuration/ruby-agent-configuration +freshnessValidatedDate: never --- @@ -70,12 +71,12 @@ The Ruby agent looks for the following environment variables, in this order, to If the Ruby agent doesn't detect values for any of those environment variables, it will default the application environment to `development` and read from the `development` section of the `newrelic.yml` config file. -When running the Ruby agent in a Rails app, the agent first looks for the `NEW_RELIC_ENV` environment variable to determine the application environment and which section of the `newrelic.yml` to use. If `NEW_RELIC_ENV` is not present, the agent uses the Rails environment (`RAILS_ENV`). +When running the Ruby agent in a Rails app, the agent first looks for the `NEW_RELIC_ENV` environment variable to find the application environment and which section of the `newrelic.yml` to use. If `NEW_RELIC_ENV` is not present, the agent uses the Rails environment (`RAILS_ENV`). When you edit the config file, be sure to: * Indent only with two spaces. -* Indent only where relevant, in stanzas such as **`error_collector`**. +* Indent only where relevant, in sections such as **`error_collector`**. If you do not indent correctly, the agent may throw an `Unable to parse configuration file` error on startup. diff --git a/lib/tasks/helpers/format.rb b/lib/tasks/helpers/format.rb index ea0f5e0557..2c4a3119df 100644 --- a/lib/tasks/helpers/format.rb +++ b/lib/tasks/helpers/format.rb @@ -69,7 +69,7 @@ def format_default_value(spec) def format_description(value) description = '' - description += '**DEPRECATED** ' if value[:deprecated] + description += '**DEPRECATED**' if value[:deprecated] description += value[:description] description end From d2d86bc52a9f87a59eccad02703dc24d511e796e Mon Sep 17 00:00:00 2001 From: Kayla Reopelle Date: Wed, 29 May 2024 11:35:58 -0700 Subject: [PATCH 2/3] Remove trailing comma --- lib/tasks/config.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tasks/config.rake b/lib/tasks/config.rake index 065f11785e..9ba66bbcb2 100644 --- a/lib/tasks/config.rake +++ b/lib/tasks/config.rake @@ -23,7 +23,7 @@ namespace :newrelic do 'browser_monitoring' => "The [page load timing](/docs/browser/new-relic-browser/page-load-timing/page-load-timing-process) feature (sometimes referred to as real user monitoring or RUM) gives you insight into the performance real users are experiencing with your website. This is accomplished by measuring the time it takes for your users' browsers to download and render your web pages by injecting a small amount of JavaScript code into the header and footer of each page.", 'application_logging' => "The Ruby agent supports [APM logs in context](/docs/apm/new-relic-apm/getting-started/get-started-logs-context). For some tips on configuring logs for the Ruby agent, see [Configure Ruby logs in context](/docs/logs/logs-context/configure-logs-context-ruby).\n\nAvailable logging-related config options include:", 'analytics_events' => '[New Relic dashboards](/docs/query-your-data/explore-query-data/dashboards/introduction-new-relic-one-dashboards) is a resource to gather and visualize data about your software and what it says about your business. With it you can quickly and easily create real-time dashboards to get immediate answers about end-user experiences, clickstreams, mobile activities, and server transactions.', - 'ai_monitoring' => "This section includes Ruby agent configurations for setting up AI monitoring.\n\nYou need to enable distributed tracing to capture trace and feedback data. It is turned on by default in Ruby agents 8.0.0 and higher.", + 'ai_monitoring' => "This section includes Ruby agent configurations for setting up AI monitoring.\n\nYou need to enable distributed tracing to capture trace and feedback data. It is turned on by default in Ruby agents 8.0.0 and higher." } NAME_OVERRIDES = { From 0ec165848afcb383be937a31cf167ba7b2c3e288 Mon Sep 17 00:00:00 2001 From: "Kayla Reopelle (she/her)" <87386821+kaylareopelle@users.noreply.github.com> Date: Wed, 29 May 2024 11:42:20 -0700 Subject: [PATCH 3/3] Apply suggestions from code review Co-authored-by: James Bunch --- lib/new_relic/agent/configuration/default_source.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/new_relic/agent/configuration/default_source.rb b/lib/new_relic/agent/configuration/default_source.rb index c9a33c9e0a..75f7bbe8b3 100644 --- a/lib/new_relic/agent/configuration/default_source.rb +++ b/lib/new_relic/agent/configuration/default_source.rb @@ -394,7 +394,7 @@ def self.enforce_fallback(allowed_values: nil, fallback: nil) * `content` from LlmChatCompletionMessage events * `input` from LlmEmbedding events - This is an optional security setting if you don't want to record sensitive data sent to and received from your LLMs. + This is an optional security setting to prevent recording sensitive data sent to and received from your LLMs. DESCRIPTION }, # this is only set via server side config