This document describes the New Relic Node.js agent attributes, details how to enable or disable attributes, and describes the rules the agent follows to determine which attributes to include or exclude for a destination.
Tip
These attribute settings apply to Node.js agent version 2.7.1 or higher. If you use an older version of the agent, see Update legacy attribute configuration.
Find and use attributes
New Relic attributes are key-value pairs containing information that determines the properties of event and transaction data. Attributes can help you gain greater insight into your application and annotate the data in New Relic.
Attributes (both default and custom) can be found in:
You can customize exactly which attributes will be sent to each of these destinations.
Tip
As of Node.js agent version 6.10.0, when you enable distributed tracing and/or Infinite Tracing, information from Transaction events is applied to the currently available Span of the transaction. Because of this, you may want to apply the attribute settings for Transaction events to Span events or apply them as global attribute settings.
Node.js-specific attributes
In addition to the default APM attributes, the Node.js agent collects attributes from these sources:
The response status code for a web request. The key for this attribute is httpResponseCode.
The default setting for each destination is:
Transaction traces: Enabled
Error analytics: Enabled
APM events: Enabled
Browser events: Disabled
Note: The httpResponseCode attribute (string value) is removed as of agent version 7.0.0. http.statusCode (integer value) should be used instead.
The response status message if present for a web request. The key for this attribute is httpResponseMessage.
The default setting for each destination is:
Transaction traces: Enabled
Error analytics: Enabled
APM events: Enabled
Browser events: Disabled
Note: The httpResponseMessage attribute (string value) is removed as of agent version 7.0.0. http.statusText (string value) should be used instead.
Attributes added to an addCustomAttribute() call to the Node.js agent API. The key name for this attribute depends on what you specify when you call the method.
The default setting for each destination is:
Transaction traces: Enabled
Error analytics: Enabled
APM events: Enabled
Browser events: Disabled
Important
Before creating custom attributes, review New Relic's list of reserved terms used by NRQL. Otherwise unexpected results may occur.
Attributes added to a noticeError() call on the Node.js agent API. The key name for this attribute depends on what you specify when you call the method.
The default setting for each destination is:
Transaction traces: Unavailable
Error analytics: Enabled
APM events: Unavailable
Browser events: Unavailable
The Node.js agent can capture response and request headers as attributes. By default, the Node.js agent will collect all request headers that are not excluded.
You can disable collecting all the headers by setting allow_all_headers to false in your newrelic.js file.
The default setting for each destination is:
Transaction traces: Enabled
Error analytics: Enabled
APM events: Enabled
Browser events: Disabled
Request parameters from the transaction. The Node.js agent does not capture parameters by default. All GET parameters can be captured if the request.parameters.* entry is added to attributes.include, or specific request parameters can be added to the list, for example, request.parameters.foo or request.parameters.bar. In order to capture POST parameters, use the addCustomAttribute() Node.js agent API call.
Configure attributes
You can customize what types of attributes the Node.js agent sends to each destination. This is most common for security reasons, when you have certain sensitive attributes you do not want reported to New Relic.
Use the following configuration properties along with the attribute rules to enable or disable attributes:
Disabled by default. Set this to true for the agent to only collect all headers, except those filtered by exclude rules.
Enabled by default. Set this to false to disable the attributes.include array.
Enable or disable attributes entirely. If you set a destination to false, no attributes will be sent to that destination regardless of your include/exclude settings. If a destination is enabled, all user attributes are sent to that destination by default.
Specify particular attribute keys you want the agent to report to New Relic. For all destinations, this is a list of strings that is empty by default. The .exclude properties override the .include properties. To disable all .include values, set attributes.include_enabled to false.
Specify particular attribute keys you do not want the agent to report to New Relic. For all destinations this is a list of strings that is empty by default. The .exclude properties override the .include properties.
Attribute rules
The Node.js agent follows these rules when determining which attributes to include or exclude for a destination:
If you set the main attributes.enabled property to false, the agent does not report any attributes at all.
Agent configuration:
attributes.enabled: false
attributes.include: request.parameters.*
error_collector.attributes.enabled: true
Input keys:
foo
bar
request.parameters.foo
request.parameters.bar
Agent output:
Transaction traces: No attributes
Error analytics: No attributes
APM events: No attributes
Browser events: No attributes
When you set enabled to false for a destination, the agent ignores your include/exclude settings and not report any attributes for that destination.
Agent configuration:
transaction_tracer.attributes.enabled: false
attributes.include: one, two*
transaction_tracer.attributes.include: three, four
Input keys:
one
two
three
four
Agent output:
Transaction traces: No attributes
Error analytics: one, two
APM events: one, two
Browser events: No attributes
The .exclude properties override the .include properties.
Agent configuration:
attributes.enabled: true
attributes.include: foo, myCustomAtt
attributes.exclude: password, myCustomAtt
Input keys:
foo
myCustomAtt
password
Agent output:
Transaction traces: foo
Error analytics: foo
APM events: foo
Browser events: foo
If multiple include or exclude attributes affect the same key, the most specific setting will have priority.