Gathering detailed insights and metrics for newrelic
Gathering detailed insights and metrics for newrelic
Gathering detailed insights and metrics for newrelic
Gathering detailed insights and metrics for newrelic
New Relic Node.js agent code base. Developers are welcome to create pull requests here, please see our contributing guidelines. For New Relic technical support, please go to http://support.newrelic.com.
npm install newrelic
Typescript
Module System
Min. Node Version
Node Version
NPM Version
64.2
Supply Chain
95.9
Quality
91.8
Maintenance
100
Vulnerability
76.8
License
Updated on 06 Dec 2024
JavaScript (99.47%)
HTML (0.23%)
Shell (0.16%)
PowerShell (0.07%)
Handlebars (0.02%)
Batchfile (0.02%)
TypeScript (0.01%)
Cumulative downloads
Total Downloads
Last day
25.4%
Compared to previous day
Last week
3.9%
Compared to previous week
Last month
3.4%
Compared to previous month
Last year
6.4%
Compared to previous year
14
44
3
This package instruments your application for performance monitoring with New Relic.
In order to take full advantage of this package, make sure you have a New Relic account before starting. Available features, such as slow transaction traces, will vary based on account level.
As with any instrumentation tool, please test before using in production.
To use New Relic's Node.js agent entails these three steps, which are described in detail below:
newrelic
packageTo install the agent for performance monitoring, use your favorite npm-based package manager and install the newrelic
package into your application:
1$ npm install newrelic
Then, copy the stock configuration file to your program's base folder:
1$ cp ./node_modules/newrelic/newrelic.js ./<your destination>
Now, add your New Relic license key and application/service name to that file:
1 /* File: newrelic.js */ 2 'use strict' 3 /** 4 * New Relic agent configuration. 5 * 6 * See lib/config/default.js in the agent distribution for a more complete 7 * description of configuration variables and their potential values. 8 */ 9 exports.config = { 10 app_name: ['Your application or service name'], 11 license_key: 'your new relic license key', 12 /* ... rest of configuration .. */ 13 }
newrelic
module loaded first by using node's -r/--require
flag. $ node -r newrelic your-program.js
If you cannot control how your program is run, you can load the newrelic
module before any other module in your program.
1 const newrelic = require('newrelic') 2 3 /* ... the rest of your program ... */
Note: The minimum supported Next.js version is 12.0.9. If you are using Next.js middleware the minimum supported version is 12.2.0.
The New Relic Node.js agent provides instrumentation for Next.js The instrumentation provides telemetry for server-side rendering via getServerSideProps, middleware, and New Relic transaction naming for both page and server requests. It does not provide any instrumentation for actions occurring during build or in client-side code. If you want telemetry data on actions occurring on the client (browser), you can inject the browser agent.
Here are documents for more in-depth explanations about transaction naming, and segments/spans.
Typically you are running a Next.js app with the next
cli and you must load the agent via NODE_OPTIONS
:
1NODE_OPTIONS='-r newrelic' next start
If you are having trouble getting the newrelic
package to instrument Next.js, take a look at our FAQs.
The following example applications show how to load the newrelic
instrumentation, inject browser agent, and handle errors:
If you are using next as a custom server, you're probably not running your application with the next
CLI. In that scenario we recommend running the Next.js instrumentation as follows.
1node -r newrelic your-program.js
If your application is written with import
and export
statements in javascript, you are using ES Modules and must bootstrap the agent in a different way.
The New Relic Node.js agent includes experimental support for ES Modules. The agent is reliant on an experimental feature in Node.js in order to appropriately register instrumentation. Until the Node.js API for ES Module Loaders is stable, breaking changes may occur when updating Node.js. Lastly, the ESM loader does not follow the same supported Node.js versions as the agent. The minimum supported version of Node.js is v16.12.0
.
newrelic.js
to newrelic.cjs
so it can be properly loaded. All the contents of the configuration file will behave the same once you rename. See CommonJS modules in ESM for more details.1$ mv newrelic.js newrelic.cjs
--experimental-loader
flag and a path to the loader file, like this:1$ node --experimental-loader newrelic/esm-loader.mjs -r newrelic your-program.js
Note: Unlike the CommonJS methods listed above, there are no alternatives to running the agent without the --experimental-loader
flag.
The agent supports adding your own custom instrumentation to ES module applications. You can use the instrumentation API methods. The only other difference between CommonJS custom instrumentation and ESM is you must provide a property of isEsm: true
.
1import newrelic from 'newrelic' 2newrelic.instrument({ moduleName: 'parse-json', isEsm: true }, function wrap(shim, parseJson, moduleName) { 3 shim.wrap(parseJson.default, function wrapParseJson(shim, orig) { 4 return function wrappedParseJson() { 5 const result = orig.apply(this, arguments) 6 result.instrumented = true 7 return true 8 } 9 }) 10})
We support the following custom instrumentation API methods in ES module apps:
newrelic.instrument
newrelic.instrumentConglomerate
newrelic.instrumentDatastore
newrelic.instrumentMessages
newrelic.instrumentWebframework
Note that we do not support newrelic.instrumentLoadedModule
, for the same issue of immutability mentioned above.
If you want to see an example of how to write custom instrumentation in an ES module app, check out our examples repo for a working demo.
For more information on getting started, check the Node.js docs.
There are modules that can be installed and configured to accompany the Node.js agent:
There are modules included within the Node.js agent to add more instrumentation for 3rd party modules:
The newrelic
module returns an object with the Node.js agent's API methods attached.
1 const newrelic = require('newrelic') 2 3 /* ... */ 4 newrelic.addCustomAttribute('some-attribute', 'some-value')
You can read more about using the API over on the New Relic documentation site.
These are the steps to work on core agent features, with more detail below:
npm
Fork and clone this GitHub repository:
$ git clone git@github.com:your-user-name/node-newrelic.git $ cd node-newrelic
Install the project's dependencies:
$ npm install
Then you're all set to start programming.
$ npm run services
$ npm run test
Available test suites include:
$ npm run unit
$ npm run integration
$ npm run versioned
$ npm run lint
$ npm run smoke
Here are some resources for learning more about the agent:
Configuring the agent using newrelic.js
or environment variables
Example applications - Working examples of New Relic features in Node.js.
Should you need assistance with New Relic products, you are in good hands with several support channels.
If the issue has been confirmed as a bug or is a feature request, please file a GitHub issue.
Support Channels
At New Relic we take your privacy and the security of your information seriously, and are committed to protecting your information. We must emphasize the importance of not sharing personal data in public forums, and ask all users to scrub logs and diagnostic information for sensitive information, whether personal, proprietary, or otherwise.
We define “Personal Data” as any information relating to an identified or identifiable individual, including, for example, your name, phone number, post code or zip code, Device ID, IP address and email address.
Please review New Relic’s General Data Privacy Notice for more information.
See our roadmap, to learn more about our product vision, understand our plans, and provide us valuable feedback.
We encourage your contributions to improve the Node.js agent! Keep in mind when you submit your pull request, you'll need to sign the CLA via the click-through using CLA-Assistant. You only have to sign the CLA one time per project.
If you have any questions, or to execute our corporate CLA, required if your contribution is on behalf of a company, please drop us an email at opensource@newrelic.com.
A note about vulnerabilities
As noted in our security policy, New Relic is committed to the privacy and security of our customers and their data. We believe that providing coordinated disclosure by security researchers and engaging with the security community are important means to achieve our security goals.
If you believe you have found a security vulnerability in this project or any of New Relic's products or websites, we welcome and greatly appreciate you reporting it to New Relic through our bug bounty program.
If you would like to contribute to this project, review these guidelines.
To all contributors, we thank you! Without your contribution, this project would not be what it is today. We also host a community project page dedicated to New Relic Node Agent.
Except as noted below, the Node.js agent is licensed under the Apache 2.0 License.
The New Relic security agent is licensed under the New Relic Software License v1.0. The New Relic security agent module may be integrated like the New Relic Node.js agent.
The Node.js agent also uses source code from third-party libraries. You can find full details on which libraries are used and the terms under which they are licensed in the third-party notices document.
No vulnerabilities found.
Reason
no dangerous workflow patterns detected
Reason
30 commit(s) and 25 issue activity found in the last 90 days -- score normalized to 10
Reason
all changesets reviewed
Reason
no binaries found in the repo
Reason
0 existing vulnerabilities detected
Reason
license file detected
Details
Reason
packaging workflow detected
Details
Reason
security policy file detected
Details
Reason
branch protection is not maximal on development and all release branches
Details
Reason
dependency not pinned by hash detected -- score normalized to 2
Details
Reason
SAST tool is not run on all commits -- score normalized to 2
Details
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
detected GitHub workflow tokens with excessive permissions
Details
Reason
project is not fuzzed
Details
Score
Last Scanned on 2024-11-25
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More