> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # SentryExporter Envoie les données de Tracing à Sentry pour le traçage et la surveillance de l'IA au moyen des conventions sémantiques OpenTelemetry. ## Constructeur ```typescript new SentryExporter(config: SentryExporterConfig) ``` ## `SentryExporterConfig` ```typescript interface SentryExporterConfig extends BaseExporterConfig { dsn?: string environment?: string tracesSampleRate?: number release?: string options?: Partial } ``` Étend `BaseExporterConfig`, qui comprend : - `logger?: IMastraLogger` - Instance du Logger - `logLevel?: LogLevel | 'debug' | 'info' | 'warn' | 'error'` - Niveau de journalisation (par défaut : INFO) ## Méthodes ### `exportTracingEvent` ```typescript async exportTracingEvent(event: TracingEvent): Promise ``` Exporte un événement de Tracing vers Sentry. Gère les événements SPAN\_STARTED, SPAN\_UPDATED et SPAN\_ENDED. ### flush ```typescript async flush(): Promise ``` Force l'envoi à Sentry de tous les spans en attente sans arrêter l'Exporter. Attend jusqu'à 2 secondes l'envoi des données en attente. Cette méthode est utile dans les environnements sans serveur où vous devez vous assurer que les spans sont exportés avant la fin de l'environnement d'exécution. ### shutdown ```typescript async shutdown(): Promise ``` Termine tous les spans actifs, efface l'état interne et ferme la connexion Sentry. Attend jusqu'à 2 secondes l'envoi des données en attente. ## Utilisation ### Sans configuration (au moyen de variables d'environnement) ```typescript import { SentryExporter } from '@mastra/sentry' // Reads from SENTRY_DSN, SENTRY_ENVIRONMENT, SENTRY_RELEASE const exporter = new SentryExporter() ``` ### Configuration explicite ```typescript import { SentryExporter } from '@mastra/sentry' const exporter = new SentryExporter({ dsn: process.env.SENTRY_DSN, environment: 'production', tracesSampleRate: 1.0, release: '1.0.0', }) ``` ### Avec échantillonnage ```typescript const exporter = new SentryExporter({ dsn: process.env.SENTRY_DSN, environment: 'production', tracesSampleRate: 0.1, // Send 10% of transactions to Sentry (recommended for high-load backends) }) ``` ### Avec des options Sentry personnalisées ```typescript const exporter = new SentryExporter({ dsn: process.env.SENTRY_DSN, environment: 'production', options: { integrations: [ // Custom Sentry integrations ], beforeSend: event => { // Custom event processing return event }, }, }) ``` ## Mappage des spans Les types de spans Mastra sont associés aux opérations Sentry : | SpanType Mastra | Opération Sentry | | --------------------------- | ---------------------- | | `AGENT_RUN` | `gen_ai.invoke_agent` | | `MODEL_GENERATION` | `gen_ai.chat` | | `MODEL_STEP` | _(ignoré)_ | | `MODEL_CHUNK` | _(ignoré)_ | | `TOOL_CALL` | `gen_ai.execute_tool` | | `MCP_TOOL_CALL` | `gen_ai.execute_tool` | | `PROVIDER_TOOL_CALL` | `gen_ai.execute_tool` | | `WORKFLOW_RUN` | `workflow.run` | | `WORKFLOW_STEP` | `workflow.step` | | `WORKFLOW_CONDITIONAL` | `workflow.conditional` | | `WORKFLOW_CONDITIONAL_EVAL` | `workflow.conditional` | | `WORKFLOW_PARALLEL` | `workflow.parallel` | | `WORKFLOW_LOOP` | `workflow.loop` | | `WORKFLOW_SLEEP` | `workflow.sleep` | | `WORKFLOW_WAIT_EVENT` | `workflow.wait` | | `PROCESSOR_RUN` | `ai.processor` | | `GENERIC` | `ai.span` | Les spans MODEL\_STEP et MODEL\_CHUNK sont ignorés afin de simplifier la hiérarchie de la Trace. Leurs données sont agrégées dans les spans MODEL\_GENERATION. ## Variables d'environnement L'Exporter lit sa configuration dans les variables d'environnement suivantes : | Variable | Description | | -------------------- | ----------------------------------------------------------- | | `SENTRY_DSN` | Data Source Name : indique au SDK où envoyer les événements | | `SENTRY_ENVIRONMENT` | Nom de l'environnement de déploiement | | `SENTRY_RELEASE` | Version du code déployé | ## `OpenTelemetry` attributes L'Exporter définit les attributs OpenTelemetry standard suivants : **Attributs communs (tous les spans) :** - `sentry.origin` : `auto.ai.mastra` (identifie les spans provenant de Mastra) - `ai.span.type` : type de span Mastra - `gen_ai.conversation.id` : identifiant du thread de conversation, défini à partir de `metadata.threadId` pour regrouper les spans dans la vue Conversations de Sentry **Spans MODEL\_GENERATION :** - `gen_ai.operation.name` : `chat` - `gen_ai.system` : Provider du modèle - `gen_ai.request.model` : identifiant du modèle - `gen_ai.request.messages` : messages ou prompts d'entrée (JSON) - `gen_ai.response.model` : modèle de la réponse - `gen_ai.response.text` : texte de sortie - `gen_ai.response.tool_calls` : appels de Tool effectués pendant la génération (tableau JSON) - `gen_ai.usage.input_tokens` : nombre de tokens d'entrée - `gen_ai.usage.output_tokens` : nombre de tokens de sortie - `gen_ai.usage.total_tokens` : nombre total de tokens - `gen_ai.request.stream` : indicateur de streaming - `gen_ai.request.temperature` : paramètre de température - `gen_ai.completion_start_time` : heure du premier token **Spans TOOL\_CALL :** - `gen_ai.operation.name` : `execute_tool` - `gen_ai.tool.name` : identifiant du Tool - `gen_ai.tool.type` : `function` - `gen_ai.tool.call.id` : identifiant de l'appel de Tool - `gen_ai.tool.input` : entrée du Tool - `gen_ai.tool.output` : sortie du Tool - `tool.success` : indicateur de réussite **Spans AGENT\_RUN :** - `gen_ai.operation.name` : `invoke_agent` - `gen_ai.agent.name` : identifiant de l'Agent - `gen_ai.pipeline.name` : nom de l'Agent - `gen_ai.agent.instructions` : instructions de l'Agent - `gen_ai.response.model` : modèle de la génération enfant - `gen_ai.response.text` : sortie de la génération enfant - `gen_ai.usage.*` : utilisation des tokens de la génération enfant