NEW_RELIC_APP_NAME: it refers to the name of your application to be able to identify it in the New Relic dashboard.
NEW_RELIC_LICENSE_KEY: you must obtain this value from your New Relic dashboard.
You must copy the INGEST - LICENSE key for Node.js agent.
NEW_RELIC_ENABLED: this variable is used if you want to turn on or off New Relic in your backend.
Every time you modify the NEW_RELIC_ENABLED variable, you must restart your application.
In the src/newrelic.ts file is the configuration you use for New Relic:
'use strict';
import * as dotenv from 'dotenv';
let environment;
if (process.env.NODE_ENV === undefined) {
environment = dotenv.config({ path: `.env.development` }).parsed;
}
/**
* New Relic agent configuration.
*
* See lib/config/default.js in the agent distribution for a more complete
* description of configuration variables and their potential values.
*/
exports.config = {
/**
* Array of application names.
*/
app_name: [
environment
? environment.NEW_RELIC_APP_NAME
: process.env.NEW_RELIC_APP_NAME,
],
/**
* Your New Relic license key.
*/
license_key: environment
? environment.NEW_RELIC_LICENSE_KEY
: process.env.NEW_RELIC_LICENSE_KEY,
/**
* This setting controls distributed tracing.
* Distributed tracing lets you see the path that a request takes through your
* distributed system. Enabling distributed tracing changes the behavior of some
* New Relic features, so carefully consult the transition guide before you enable
* this feature: https://docs.newrelic.com/docs/transition-guide-distributed-tracing
* Default is true.
*/
distributed_tracing: {
/**
* Enables/disables distributed tracing.
*
* @env NEW_RELIC_DISTRIBUTED_TRACING_ENABLED
*/
enabled: true,
},
logging: {
/**
* Level at which to log. 'trace' is most useful to New Relic when diagnosing
* issues with the agent, 'info' and higher will impose the least overhead on
* production applications.
*/
level: 'trace',
enabled: false,
},
/**
* When true, all request headers except for those listed in attributes.exclude
* will be captured for all traces, unless otherwise specified in a destination's
* attributes include/exclude lists.
*/
allow_all_headers: true,
attributes: {
/**
* Prefix of attributes to exclude from all destinations. Allows * as wildcard
* at end.
*
* NOTE: If excluding headers, they must be in camelCase form to be filtered.
*
* @env NEW_RELIC_ATTRIBUTES_EXCLUDE
*/
exclude: [
'request.headers.cookie',
'request.headers.authorization',
'request.headers.proxyAuthorization',
'request.headers.setCookie*',
'request.headers.x*',
'response.headers.cookie',
'response.headers.authorization',
'response.headers.proxyAuthorization',
'response.headers.setCookie*',
'response.headers.x*',
],
},
};
If the environment is not specified when running the NestJS instance, the variables will be read, by default, from an env.development file.