SentryExporter
使用 OpenTelemetry 语义规范将追踪数据发送到 Sentry,以进行 AI 追踪和监控。
🌐 Sends Tracing data to Sentry for AI tracing and monitoring using OpenTelemetry semantic conventions.
构造函数Direct link to 构造函数
🌐 Constructor
new SentryExporter(config: SentryExporterConfig)
SentryExporterConfigDirect link to SentryExporterConfig
interface SentryExporterConfig extends BaseExporterConfig {
dsn?: string;
environment?: string;
tracesSampleRate?: number;
release?: string;
options?: Partial<Sentry.NodeOptions>;
}
扩展自 BaseExporterConfig,包括:
🌐 Extends BaseExporterConfig, which includes:
logger?: IMastraLogger- 记录器实例logLevel?: LogLevel | 'debug' | 'info' | 'warn' | 'error'- 日志级别(默认:INFO)
方法Direct link to 方法
🌐 Methods
exportTracingEventDirect link to exportTracingEvent
async exportTracingEvent(event: TracingEvent): Promise<void>
将跟踪事件导出到 Sentry。处理 SPAN_STARTED、SPAN_UPDATED 和 SPAN_ENDED 事件。
🌐 Exports a tracing event to Sentry. Handles SPAN_STARTED, SPAN_UPDATED, and SPAN_ENDED events.
flushDirect link to flush
async flush(): Promise<void>
强制将任何未发送的跨度刷新到 Sentry,而不关闭导出器。最多等待 2 秒以发送待处理的数据。在无服务器环境中非常有用,确保在运行时终止之前导出跨度。
🌐 Force flushes any pending spans to Sentry without shutting down the exporter. Waits up to 2 seconds for pending data to be sent. Useful in serverless environments where you need to ensure spans are exported before the runtime terminates.
shutdownDirect link to shutdown
async shutdown(): Promise<void>
结束所有活动的跨度,清除内部状态,并关闭 Sentry 连接。等待最多 2 秒以发送未完成的数据。
🌐 Ends all active spans, clears internal state, and closes the Sentry connection. Waits up to 2 seconds for pending data to be sent.
用法Direct link to 用法
🌐 Usage
零配置(使用环境变量)Direct link to 零配置(使用环境变量)
🌐 Zero-Config (using environment variables)
import { SentryExporter } from "@mastra/sentry";
// Reads from SENTRY_DSN, SENTRY_ENVIRONMENT, SENTRY_RELEASE
const exporter = new SentryExporter();
显式配置Direct link to 显式配置
🌐 Explicit Configuration
import { SentryExporter } from "@mastra/sentry";
const exporter = new SentryExporter({
dsn: process.env.SENTRY_DSN,
environment: "production",
tracesSampleRate: 1.0,
release: "1.0.0",
});
带采样Direct link to 带采样
🌐 With Sampling
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)
});
使用自定义 Sentry 选项Direct link to 使用自定义 Sentry 选项
🌐 With Custom Sentry Options
const exporter = new SentryExporter({
dsn: process.env.SENTRY_DSN,
environment: "production",
options: {
integrations: [
// Custom Sentry integrations
],
beforeSend: (event) => {
// Custom event processing
return event;
},
},
});
跨度映射Direct link to 跨度映射
🌐 Span Mapping
Mastra 跨度类型映射到 Sentry 操作:
🌐 Mastra span types are mapped to Sentry operations:
| Mastra 跨度类型 | Sentry 操作 |
|---|---|
AGENT_RUN | gen_ai.invoke_agent |
MODEL_GENERATION | gen_ai.chat |
MODEL_STEP | (跳过) |
MODEL_CHUNK | (跳过) |
TOOL_CALL | gen_ai.execute_tool |
MCP_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 |
为了简化追踪层次,MODEL_STEP 和 MODEL_CHUNK 的跨度被跳过。它们的数据被汇总到 MODEL_GENERATION 的跨度中。
🌐 MODEL_STEP and MODEL_CHUNK spans are skipped to simplify trace hierarchy. Their data is aggregated into MODEL_GENERATION spans.
环境变量Direct link to 环境变量
🌐 Environment Variables
导出器从这些环境变量中读取配置:
🌐 The exporter reads configuration from these environment variables:
| 变量 | 描述 |
|---|---|
SENTRY_DSN | 数据源名称 - 告诉 SDK 将事件发送到哪里 |
SENTRY_ENVIRONMENT | 部署环境名称 |
SENTRY_RELEASE | 已部署代码的版本 |
OpenTelemetry 属性Direct link to OpenTelemetry 属性
🌐 OpenTelemetry Attributes
导出器设置了这些标准的 OpenTelemetry 属性:
🌐 The exporter sets these standard OpenTelemetry attributes:
常见属性(所有跨度):
sentry.origin:auto.ai.mastra(标识来自Mastra的跨度)ai.span.type:Mastra 跨度类型
模型生成 范围:
gen_ai.operation.name:chatgen_ai.system:模型提供商gen_ai.request.model:型号标识gen_ai.request.messages:输入消息/提示(JSON)gen_ai.response.model:响应模型gen_ai.response.text:输出文本gen_ai.response.tool_calls:生成过程中发出的工具调用(JSON 数组)gen_ai.usage.input_tokens:输入令牌数gen_ai.usage.output_tokens:输出令牌数gen_ai.usage.total_tokens:总令牌gen_ai.request.stream:流式传输标志gen_ai.request.temperature:温度参数gen_ai.completion_start_time:首次令牌时间
TOOL_CALL 跨度:
gen_ai.operation.name:execute_toolgen_ai.tool.name:工具标识符gen_ai.tool.type:functiongen_ai.tool.call.id:工具调用IDgen_ai.tool.input:工具输入gen_ai.tool.output:工具输出tool.success:成功标志
AGENT_RUN 跨度:
gen_ai.operation.name:invoke_agentgen_ai.agent.name:代理标识gen_ai.pipeline.name:代理名称gen_ai.agent.instructions:代理指令gen_ai.response.model:来自儿童世代的模型gen_ai.response.text:子代生成的输出gen_ai.usage.*:子代生成的令牌使用