New Relic dashboards help you see service health and business metrics in one place. You can build custom charts, query with NRQL, and share views across teams. This gives engineers a clear picture of what is happening and why.
The New Relic Dashboard plugin brings those dashboards into Backstage. It adds dashboard links on a service page overview. It can show near real time snapshots of your New Relic dashboards inside Backstage. You get the context of your catalog with the visuals you already trust, without a tab switch.
Under the hood it talks to New Relic through the Backstage proxy and uses NerdGraph. Your dashboards stay in New Relic. Backstage surfaces them beside ownership, docs, and runbooks. Common uses include incident triage, pre release checks, and onboarding sessions where a team walks through golden signals for a service. If you already rely on New Relic dashboards, this plugin meets you where you work and keeps your flow intact.
Installation Instructions
These instructions apply to self-hosted Backstage only. To use this plugin on Roadie, visit the docs.
Configure the proxy
This plugin uses the Backstage proxy to reach New Relic.
Add this to app-config.yaml
proxy:
'/newrelic/apm/api':
target: https://api.newrelic.com/v2
headers:
X-Api-Key: ${NEW_RELIC_REST_API_KEY}
allowedHeaders:
- link
The API key must be a User type key in New Relic. In local development you can hard code it in app-config.local.yaml
proxy:
'/newrelic/apm/api':
headers:
X-Api-Key: NRRA-YourActualApiKey
allowedHeaders:
- link
Make sure the proxy backend plugin is running
If your app already has the proxy backend plugin you can keep it. If not, add it.
Legacy backend system
Add the dependency in the backend package
yarn --cwd packages/backend add @backstage/plugin-proxy-backend
Create packages/backend/src/plugins/proxy.ts
// packages/backend/src/plugins/proxy.ts
import { createRouter } from '@backstage/plugin-proxy-backend';
import { PluginEnvironment } from '../types';
export default async function createPlugin(env: PluginEnvironment) {
return await createRouter({
logger: env.logger,
config: env.config,
discovery: env.discovery,
tokenManager: env.tokenManager,
});
}
Wire it in packages/backend/src/index.ts
// packages/backend/src/index.ts
import proxy from './plugins/proxy';
// inside the main bootstrap function
const apiRouter = Router();
// other routers
apiRouter.use('/proxy', await proxy(env));
app.use('/api', apiRouter);
New backend system
Add the dependency in the backend package
yarn --cwd packages/backend add @backstage/plugin-proxy-backend @backstage/backend-defaults
Register the proxy plugin in packages/backend/src/index.ts
// packages/backend/src/index.ts
import { createBackend } from '@backstage/backend-defaults';
import { proxyPlugin } from '@backstage/plugin-proxy-backend';
const backend = createBackend();
backend.add(proxyPlugin());
backend.start();
Install the New Relic plugin in the frontend
Add the dependency in the app package
yarn --cwd packages/app add @backstage-community/plugin-newrelic
Add the page route
Import the page and mount it at a route. Edit packages/app/src/App.tsx
// packages/app/src/App.tsx
import React from 'react';
import { FlatRoutes } from '@backstage/core-app-api';
import { Route } from 'react-router';
import { NewRelicPage } from '@backstage-community/plugin-newrelic';
export const AppRoutes = () => (
<FlatRoutes>
{/* other routes */}
<Route path="/newrelic" element={<NewRelicPage />} />
</FlatRoutes>
);
Add a sidebar link
Edit packages/app/src/components/Root/Root.tsx
// packages/app/src/components/Root/Root.tsx
import React, { PropsWithChildren } from 'react';
import { SidebarPage, Sidebar, SidebarItem } from '@backstage/core-components';
import ExtensionIcon from '@material-ui/icons/ExtensionOutlined';
export const Root = ({ children }: PropsWithChildren<{}>) => (
<SidebarPage>
<Sidebar>
{/* other items */}
<SidebarItem icon={ExtensionIcon} to="newrelic" text="New Relic" />
{/* other items */}
</Sidebar>
{children}
</SidebarPage>
);
Provide the API key at runtime
Set the variable before starting the backend
export NEW_RELIC_REST_API_KEY=NRRA-YourActualApiKey
Changelog
This changelog is produced from commits made to the New Relic Dashboard plugin since a year ago, and based on the code located here. It may not contain information about all commits. Releases and version bumps are intentionally omitted. This changelog is generated by AI.
Breaking changes
- Change the plugin ID for the New Relic dashboard plugin in the new frontend system. Fix a conflict with the other New Relic plugin. #4780 merged 2 months ago
Features
- Add support for the new frontend system for New Relic plugins. #4586 merged 2 months ago
Bug fixes
- Rename the New Relic dashboards tab. #4605 merged 2 months ago
Maintenance
Set up Backstage in minutes with Roadie
Focus on using Backstage, rather than building and maintaining it.