You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Datadog中查看Lambda代理集成场景下的Lambda执行失败记录

可行解决方案

LAMBDA_PROXY集成场景下Datadog默认将无未捕获异常的Lambda调用标记为正常,是官方默认埋点逻辑的已知特性,不需要替换集成模式,基于你已经接入的serverless-plugin-datadog,有三种落地成本极低的方案可以实现错误标记,按优先级排序如下:


方案1:开启插件内置的状态码检测(零业务代码侵入,优先推荐)

serverless-plugin-datadog v3.30及以上版本已经内置了Lambda Proxy响应格式的自动识别逻辑,不需要修改任何业务代码,只需要在serverless.yml的插件配置块开启对应参数即可:

custom:
  datadog:
    # 开启后插件会自动解析Lambda返回值中的statusCode字段
    # 只要状态码≥400,就会自动给当前调用对应的Trace Span打上错误标记,面板同步显示为红色错误状态
    enableApiGatewayErrorStatusCodeCheck: true
    # 可选:自定义错误状态码匹配规则,默认匹配所有4xx、5xx
    # errorStatusCodeRanges: ["5xx", "401", "403"]

配置完成后重新部署服务即可生效,所有返回错误状态码的调用,会和Lambda原生抛出未捕获异常的展示逻辑完全一致,关联日志、堆栈信息、调用链都能正常挂载。

该方案仅适配标准Lambda Proxy返回结构:即返回值为包含statusCode、body字段的对象,如果你的项目对响应结构做了二次封装,选择方案2。


方案2:全局手动标记错误(适配自定义响应封装)

如果项目里做了统一响应封装,插件无法自动识别返回的状态码,可以在全局错误处理/统一响应出口位置,调用Datadog Lambda层内置的SDK手动标记错误,不需要逐个修改业务接口代码。
先确认插件配置中已经开启addLayers: true(默认开启),然后在你封装的统一错误返回函数中加入标记逻辑即可,以Node.js runtime为例:

const { markSpanAsError, sendDistributionMetric } = require('datadog-lambda-js');

// 项目原有统一错误响应函数
function buildErrorResponse(statusCode, errorDetail) {
  // 识别为错误响应时,手动给当前调用打错误标记
  if (statusCode >= 400) {
    // 标记当前Span为错误,面板状态同步改为错误
    markSpanAsError(new Error(`API请求错误,状态码:${statusCode},信息:${errorDetail.msg}`));
    // 可选:上报自定义错误指标,方便配置错误率告警
    sendDistributionMetric(
      'custom.lambda.api_error',
      1,
      `status_code:${statusCode}`,
      `function:${process.env.AWS_LAMBDA_FUNCTION_NAME}`
    );
  }

  // 原有返回逻辑保持不变,不需要修改前端适配的响应格式
  return {
    statusCode,
    body: JSON.stringify(errorDetail),
    headers: {
      // 原有跨域、响应头配置保持不变
    }
  };
}

其他Runtime(Python/Go/Java等)逻辑完全一致,只需要调用对应语言Datadog Lambda SDK提供的mark_span_as_error等效方法即可。


方案3:Datadog控制台日志管线后置标记(零代码/配置改动)

如果暂时不方便修改服务配置或代码,可以直接在Datadog控制台的日志处理管线中新增规则:

  • 匹配条件:@http.status_code:>=400 AND @lambda.function_name:* AND meta.apigateway.integration:lambda_proxy
  • 处理动作:为匹配到的日志关联的Trace Span添加error:true标签,同时生成错误事件
    该方案完全不需要改动线上服务,但是标记存在1-2分钟的延迟,适合临时快速排查问题使用,长期场景还是建议选择前两种方案。

注意事项

  • 不要为了让Datadog识别错误就直接抛出未捕获的业务异常:LAMBDA_PROXY模式下未捕获异常会直接返回502 Bad Gateway,响应格式不符合自定义规范,会影响前端兼容性。
  • 上述方案标记的错误会自动计入aws.lambda.errors官方指标,你之前配置的Lambda错误告警、错误率大盘不需要做额外调整即可正常统计。

内容的提问来源于stack exchange,提问作者Alejandro Barone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 02:54:25