跳至主要內容

SentryExporter

按照 OpenTelemetry 語義慣例將 Tracing 資料傳送至 Sentry,供 AI 追蹤及監察之用。

Constructor
Constructor 的直接連結

new SentryExporter(config: SentryExporterConfig)

SentryExporterConfig
sentryexporterconfig 的直接連結

interface SentryExporterConfig extends BaseExporterConfig {
dsn?: string
environment?: string
tracesSampleRate?: number
release?: string
options?: Partial<Sentry.NodeOptions>
}

擴充 BaseExporterConfig,當中包括:

  • logger?: IMastraLogger - Logger instance
  • logLevel?: LogLevel | 'debug' | 'info' | 'warn' | 'error' - 日誌級別(預設:INFO)

方法
方法 的直接連結

exportTracingEvent
exporttracingevent 的直接連結

async exportTracingEvent(event: TracingEvent): Promise<void>

將 Tracing 事件匯出至 Sentry。處理 SPAN_STARTED、SPAN_UPDATED 及 SPAN_ENDED 事件。

flush
flush 的直接連結

async flush(): Promise<void>

強制將所有待處理的 span 傳送至 Sentry,而不會關閉 exporter。最多等候 2 秒,讓待處理資料完成傳送。這適用於 serverless 環境,讓你可確保 span 在 runtime 終止前完成匯出。

shutdown
shutdown 的直接連結

async shutdown(): Promise<void>

結束所有使用中的 span、清除內部狀態,並關閉 Sentry 連線。最多等候 2 秒,以傳送待處理資料。

用法
用法 的直接連結

零設定(使用環境變數)
零設定(使用環境變數) 的直接連結

import { SentryExporter } from '@mastra/sentry'

// Reads from SENTRY_DSN, SENTRY_ENVIRONMENT, SENTRY_RELEASE
const exporter = new SentryExporter()

明確設定
明確設定 的直接連結

import { SentryExporter } from '@mastra/sentry'

const exporter = new SentryExporter({
dsn: process.env.SENTRY_DSN,
environment: 'production',
tracesSampleRate: 1.0,
release: '1.0.0',
})

使用取樣
使用取樣 的直接連結

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 選項
使用自訂 Sentry 選項 的直接連結

const exporter = new SentryExporter({
dsn: process.env.SENTRY_DSN,
environment: 'production',
options: {
integrations: [
// Custom Sentry integrations
],
beforeSend: event => {
// Custom event processing
return event
},
},
})

Span 對應
Span 對應 的直接連結

Mastra span 類型會對應至 Sentry operation:

Mastra SpanTypeSentry operation
AGENT_RUNgen_ai.invoke_agent
MODEL_GENERATIONgen_ai.chat
MODEL_STEP(略過)
MODEL_CHUNK(略過)
TOOL_CALLgen_ai.execute_tool
MCP_TOOL_CALLgen_ai.execute_tool
PROVIDER_TOOL_CALLgen_ai.execute_tool
WORKFLOW_RUNworkflow.run
WORKFLOW_STEPworkflow.step
WORKFLOW_CONDITIONALworkflow.conditional
WORKFLOW_CONDITIONAL_EVALworkflow.conditional
WORKFLOW_PARALLELworkflow.parallel
WORKFLOW_LOOPworkflow.loop
WORKFLOW_SLEEPworkflow.sleep
WORKFLOW_WAIT_EVENTworkflow.wait
PROCESSOR_RUNai.processor
GENERICai.span

系統會略過 MODEL_STEP 及 MODEL_CHUNK span,以簡化 Trace 階層。其資料會彙集至 MODEL_GENERATION span。

環境變數
環境變數 的直接連結

exporter 會從以下環境變數讀取設定:

變數說明
SENTRY_DSN資料來源名稱(Data Source Name),告知 SDK 要將事件傳送至何處
SENTRY_ENVIRONMENT部署環境名稱
SENTRY_RELEASE已部署程式碼的版本

OpenTelemetry 屬性
opentelemetry-attributes 的直接連結

exporter 會設定以下標準 OpenTelemetry 屬性:

共用屬性(所有 span):

  • sentry.originauto.ai.mastra(識別來自 Mastra 的 span)
  • ai.span.type:Mastra span 類型
  • gen_ai.conversation.id:對話 thread 識別符,取自 metadata.threadId,用於在 Sentry 的 Conversations 檢視中將 span 分組

MODEL_GENERATION span:

  • gen_ai.operation.namechat
  • gen_ai.system:Model provider
  • gen_ai.request.model:Model 識別符
  • gen_ai.request.messages:輸入訊息/prompt(JSON)
  • gen_ai.response.model:回應 Model
  • gen_ai.response.text:輸出文字
  • gen_ai.response.tool_calls:生成期間進行的 Tool 呼叫(JSON 陣列)
  • gen_ai.usage.input_tokens:輸入 token 數量
  • gen_ai.usage.output_tokens:輸出 token 數量
  • gen_ai.usage.total_tokens:token 總數
  • gen_ai.request.stream:串流旗標
  • gen_ai.request.temperature:temperature 參數
  • gen_ai.completion_start_time:首個 token 的時間

TOOL_CALL span:

  • gen_ai.operation.nameexecute_tool
  • gen_ai.tool.name:Tool 識別符
  • gen_ai.tool.typefunction
  • gen_ai.tool.call.id:Tool 呼叫 ID
  • gen_ai.tool.input:Tool 輸入
  • gen_ai.tool.output:Tool 輸出
  • tool.success:成功旗標

AGENT_RUN span:

  • gen_ai.operation.nameinvoke_agent
  • gen_ai.agent.name:Agent 識別符
  • gen_ai.pipeline.name:Agent 名稱
  • gen_ai.agent.instructions:Agent 指示
  • gen_ai.response.model:來自子生成程序的 Model
  • gen_ai.response.text:來自子生成程序的輸出
  • gen_ai.usage.*:子生成程序的 token 用量