backstage
Airbrake
The Airbrake plugin provides connectivity between Backstage and Airbrake (https://airbrake.io/).
How to use
-
Install the Frontend plugin:
# From your Backstage root directoryyarn --cwd packages/app add @backstage/plugin-airbrake -
Install the Backend plugin:
# From your Backstage root directoryyarn --cwd packages/backend add @backstage/plugin-airbrake-backend -
Add the
EntityAirbrakeContent
andisAirbrakeAvailable
topackages/app/src/components/catalog/EntityPage.tsx
for all the entity pages you want Airbrake to be in:import {EntityAirbrakeContent,isAirbrakeAvailable,} from '@backstage/plugin-airbrake';const serviceEntityPage = (<EntityLayoutWrapper><EntityLayout.Routeif={isAirbrakeAvailable}path="/airbrake"title="Airbrake"><EntityAirbrakeContent /></EntityLayout.Route></EntityLayoutWrapper>);const websiteEntityPage = (<EntityLayoutWrapper><EntityLayout.Routeif={isAirbrakeAvailable}path="/airbrake"title="Airbrake"><EntityAirbrakeContent /></EntityLayout.Route></EntityLayoutWrapper>);const defaultEntityPage = (<EntityLayoutWrapper><EntityLayout.Routeif={isAirbrakeAvailable}path="/airbrake"title="Airbrake"><EntityAirbrakeContent /></EntityLayout.Route></EntityLayoutWrapper>); -
Create
packages/backend/src/plugins/airbrake.ts
with these contents:import { Router } from 'express';import { PluginEnvironment } from '../types';import {createRouter,extractAirbrakeConfig,} from '@backstage/plugin-airbrake-backend';export default async function createPlugin(env: PluginEnvironment,): Promise<Router> {return createRouter({logger: env.logger,airbrakeConfig: extractAirbrakeConfig(env.config),});} -
Setup the Backend code in
packages/backend/src/index.ts
:import airbrake from './plugins/airbrake';async function main() {//... After const createEnv = makeCreateEnv(config) ...const airbrakeEnv = useHotMemoize(module, () => createEnv('airbrake'));//... After const apiRouter = Router() ...apiRouter.use('/airbrake', await airbrake(airbrakeEnv));} -
Add this config as a top level section in your
app-config.yaml
:airbrake:apiKey: ${AIRBRAKE_API_KEY} -
Set an environment variable
AIRBRAKE_API_KEY
with your API key before starting Backstage backend. -
Add the following annotation to the
catalog-info.yaml
for a repo you want to link to an Airbrake project:metadata:annotations:airbrake.io/project-id: '123456'
New Backend System
The Airbrake backend plugin has support for the new backend system, here's how you can set that up:
In your packages/backend/src/index.ts
make the following changes:
import { createBackend } from '@backstage/backend-defaults';
const backend = createBackend();
// ... other feature additions
+ backend.add(import('@backstage/plugin-airbrake-backend'));
backend.start();
Local Development
Start this plugin in standalone mode by running yarn start
inside the plugin directory. This method of serving the plugin provides quicker
iteration speed and a faster startup and hot reloads. It is only meant for local development, and the setup for it can
be found inside the /dev directory.
A mock API will be used to run it in standalone. If you want to talk to the real API follow the instructions to start up Airbrake Backend in standalone.