View Source NewRelic.Config (New Relic Elixir Agent v1.34.0)
New Relic Agent Configuration
All configuration items can be set via Environment variables or via Application
config
Summary
Functions
Required
An optional list of key/value pairs that will be automatic custom attributes on all event types reported (Transactions, etc). Values are determined at Agent start.
Some Agent features can be controlled via configuration.
Some Agent features can be toggled via configuration. These all default to true
, but can be configured in two ways
Configure the Agent host display name.
An optional list of paths that will be used to ignore Web Transactions.
An optional list of labels that will be applied to the application.
Required
Configure the Agent logging mechanism.
Functions
Required
Configure your application name. May contain up to 3 names seperated by ;
Application name can be configured in two ways:
- Environment variable:
NEW_RELIC_APP_NAME=MyApp
- Application config:
config :new_relic_agent, app_name: "MyApp"
An optional list of key/value pairs that will be automatic custom attributes on all event types reported (Transactions, etc). Values are determined at Agent start.
Options:
{:system, "ENV_NAME"}
Read a System ENV variable{module, function, args}
Call a function."foo"
A direct value
This feature is only configurable with Application
config.
Example:
config :new_relic_agent,
automatic_attributes: [
environment: {:system, "APP_ENV"},
node_name: {Node, :self, []},
team_name: "Afterlife"
]
Some Agent features can be controlled via configuration.
Logs In Context
This feature can be run in multiple "modes":
forwarder
The recommended mode which formats outgoing logs as JSON objects ready to be picked up by a Log Forwarderdirect
Logs are buffered in the agent and shipped directly to New Relic. Your logs will continue being output to their normal destination.disabled
(default)
Logs In Context can be configured in two ways:
- Environment variable
NEW_RELIC_LOGS_IN_CONTEXT=forwarder
- Application config
config :new_relic_agent, logs_in_context: :forwarder
Infinite Tracing
Infinite Tracing gives you more control of sampling by collecting 100% of Spans and sending them to a Trace Observer for processing.
You can configure your Trace Observer in two ways:
- Environment variable
NEW_RELIC_INFINITE_TRACING_TRACE_OBSERVER_HOST=trace-observer.host
- Application config
config :new_relic_agent, infinite_tracing_trace_observer_host: "trace-observer.host"
Some Agent features can be toggled via configuration. These all default to true
, but can be configured in two ways:
- Environment variables:
NEW_RELIC_ERROR_COLLECTOR_ENABLED=false
- Application config:
config :new_relic_agent, error_collector_enabled: false
Built-in features
:distributed_tracing
- Toggles reading of incoming distributed tracing headers
:request_queuing_metrics_enabled
- Toggles collection of request queuing metrics
:extended_attributes
- Toggles reporting extended per-source attributes for datastore, external and function traces
Security
:error_collector_enabled
- Toggles collection of any Error traces or metrics
:query_collection_enabled
- Toggles collection of any kind of query string
:function_argument_collection_enabled
- Toggles collection of traced function arguments
Common library instrumentation
Opting out of Instrumentation means that :telemetry
handlers
will not be attached, reducing the performance impact to zero.
:plug_instrumentation_enabled
:phoenix_instrumentation_enabled
:phoenix_live_view_instrumentation_enabled
:ecto_instrumentation_enabled
:redix_instrumentation_enabled
:oban_instrumentation_enabled
:finch_instrumentation_enabled
:absinthe_instrumentation_enabled
Configure the Agent host display name.
This can help connecting data from the Infrastructure Agent to the APM application.
Host display name can be configured in two ways:
- Environment variable:
NEW_RELIC_HOST_DISPLAY_NAME=my-host-name
- Application config:
config :new_relic_agent, host_display_name: "my-host-name"
An optional list of paths that will be used to ignore Web Transactions.
Individual items can be Strings or Regexes.
Common use cases include:
- Ignore health checks:
"/health"
- Ignore Phoenix longpoll http requests:
"/live/longpoll"
Example:
config :new_relic_agent,
ignore_paths: [
"/health",
~r/longpoll/
]
An optional list of labels that will be applied to the application.
Configured with a single string containing a list of key-value pairs:
key1:value1;key2:value2
The delimiting characters ;
and :
are not allowed in the key
or value
Labels can be configured in two ways:
- Environment variables:
NEW_RELIC_LABELS=region:west;env:prod
- Application config:
config :new_relic_agent, labels: "region:west;env:prod"
Required
Configure your New Relic License Key.
License Key can be configured in two ways, though using Environment Variables is strongly recommended to keep secrets out of source code:
- Environment variables:
NEW_RELIC_LICENSE_KEY=abc123
- Application config:
config :new_relic_agent, license_key: "abc123"
Configure the Agent logging mechanism.
This controls how the Agent logs it's own behavior, and doesn't impact your applications own logging at all.
Defaults to using Logger
.
Options:
"Logger"
Send Agent logs to Elixir'sLogger
"tmp"
Write totmp/new_relic.log
"stdout"
Write directly to Standard Out"file_name.log"
Write to a chosen file
Agent logging can be configured in two ways:
- Environment variable:
NEW_RELIC_LOG=stdout
- Application config:
config :new_relic_agent, log: "stdout"