Ir al contenido

Sentry

El módulo Sentry (@zumito-team/sentry) integra Sentry para el monitoreo centralizado de errores. Captura automáticamente cada error que pasa por el ErrorHandler del framework, enriqueciéndolos con contexto de Discord (servidor, usuario, canal, nombre del comando).

Ventana de terminal
npm install @zumito-team/sentry
zumito.config.ts
import { SentryModule } from '@zumito-team/sentry';
export const config = {
bundles: [
{
path: 'node_modules/@zumito-team/sentry',
options: {
dsn: 'https://<key>@sentry.io/<project>',
environment: 'production',
release: '1.0.0',
},
},
],
};
import { SentryModule, SentryService, ServiceContainer } from '@zumito-team/sentry';
new SentryModule({
dsn: 'https://<key>@sentry.io/<project>',
environment: 'production',
});
const sentry = ServiceContainer.getService(SentryService);

Tras la inicialización, puedes usar la API estándar de Sentry en cualquier lugar:

import * as Sentry from '@sentry/node';
Sentry.captureException(new Error('Error personalizado'));
Sentry.captureMessage('Algo ocurrió', 'warning');

Cada error reportado a Sentry se enriquece con:

ContextoTags
Tipo de errorerrorType (CommandRun, Api, ModuleLoad, etc.)
Comandocommand, name, type, categories
Origensource (slash-command / prefix-command)
Servidor y canalguildId, channelId
UsuarioID y nombre de usuario de Discord (establecido como usuario Sentry)
Errores de APIendpoint, method
Errores de módulomodule nombre
Errores de rutaroutePath
OpciónTipoRequeridoPor defectoDescripción
dsnstringDSN del proyecto en Sentry.
environmentstringnoNODE_ENV o developmentNombre del entorno en Sentry.
releasestringnoIdentificador de versión del release.
sampleRatenumberno1.0Tasa de muestreo de errores (0–1).
tracesSampleRatenumbernoTasa de muestreo de trazas (0–1).
debugbooleannofalseActivar modo debug de Sentry.

El módulo escucha framework.eventEmitter.on('error', ...) — un evento que el framework emite cada vez que ErrorHandler.handleError() procesa un error. Esto cubre todos los tipos de error:

  • Errores de ejecución de comandos slash y prefix
  • Errores de endpoints de API
  • Fallos de carga de módulos / rutas
  • Cualquier error personalizado pasado por ErrorHandler
  • @sentry/node — Sentry Node.js SDK.
  • zumito-framework (peer dependency — provisto por el bot host).