Add New Relic Node.js APM monitoring to backend

- Install newrelic package for server-side APM
- Create newrelic.js configuration with distributed tracing enabled
- Update npm scripts to preload agent via -r flag for ES modules
- Correlates with existing browser agent for end-to-end tracing

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Michael Mainguy 2026-01-13 15:15:27 -06:00
parent 3155cc930f
commit d9cd0692b5
3 changed files with 1700 additions and 12 deletions

36
newrelic.js Normal file
View File

@ -0,0 +1,36 @@
'use strict'
/**
* New Relic Node.js APM Configuration
*
* This file configures the New Relic agent for backend monitoring.
* Requires NEW_RELIC_LICENSE_KEY environment variable to be set.
*
* Distributed tracing is enabled to correlate with browser agent traces.
*/
exports.config = {
app_name: ['dasfad'],
license_key: process.env.NEW_RELIC_KEY,
distributed_tracing: {
enabled: true
},
logging: {
level: 'info'
},
allow_all_headers: true,
attributes: {
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*'
]
}
}

1665
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +1,18 @@
{
"name": "immersive",
"private": true,
"version": "0.0.8-47",
"version": "0.0.8-48",
"type": "module",
"license": "MIT",
"engines": {
"node": ">=18.0.0"
},
"scripts": {
"dev": "node server.js",
"dev": "node -r newrelic server.js",
"test": "vitest",
"build": "node versionBump.js && vite build",
"start": "NODE_ENV=production node server.js",
"start:api": "API_ONLY=true node server.js",
"start": "NODE_ENV=production node -r newrelic server.js",
"start:api": "API_ONLY=true node -r newrelic server.js",
"socket": "node server/server.js",
"serverBuild": "cd server && tsc",
"havok": "cp ./node_modules/@babylonjs/havok/lib/esm/HavokPhysics.wasm ./node_modules/.vite/deps"
@ -33,6 +33,7 @@
"@mantine/form": "^7.17.8",
"@mantine/hooks": "^7.17.8",
"@maptiler/client": "1.8.1",
"@newrelic/browser-agent": "^1.306.0",
"@picovoice/cobra-web": "^2.0.3",
"@picovoice/eagle-web": "^1.0.0",
"@picovoice/web-voice-processor": "^4.0.9",
@ -40,7 +41,6 @@
"@types/node": "^18.14.0",
"@types/react": "^18.2.72",
"@types/react-dom": "^18.2.22",
"@newrelic/browser-agent": "^1.306.0",
"axios": "^1.10.0",
"canvas-hypertxt": "1.0.3",
"cors": "^2.8.5",
@ -54,6 +54,7 @@
"leveldown": "^6.1.1",
"loglevel": "^1.9.1",
"meaningful-string": "^1.4.0",
"newrelic": "^13.9.1",
"peer-lite": "2.0.2",
"pouchdb": "^8.0.1",
"pouchdb-adapter-leveldb": "^9.0.0",