

# 监控持久性函数
<a name="durable-monitoring"></a>

您可以使用 CloudWatch 指标、CloudWatch Logs 和跟踪来监控您的持久性函数。由于持久性函数可以长时间运行并跨越多个函数调用，因此监控它们需要了解它们独特的执行模式，包括检查点、状态转换和重放行为。

## CloudWatch 指标
<a name="durable-monitoring-metrics"></a>

Lambda 自动向 CloudWatch 发布指标，无需额外收费。持久性函数提供标准 Lambda 指标之外的额外指标，以帮助您监控长时间运行的工作流、状态管理和资源利用率。

### 持久执行指标
<a name="durable-monitoring-execution-metrics"></a>

Lambda 为持久执行发出以下指标：


| 指标 | 说明 | 
| --- | --- | 
| ApproximateRunningDurableExecutions | 处于 RUNNING 状态的持久执行次数 | 
| ApproximateRunningDurableExecutionsUtilization | 您的账户当前正在使用的最大运行持久执行数配额百分比。 | 
| DurableExecutionDuration | 持久执行在 RUNNING 状态所经历的总耗时（以毫秒为单位）。 | 
| DurableExecutionStarted | 启动的持久执行数 | 
| DurableExecutionStopped | 使用 StopDurableExecution API 停止的持久执行次数 | 
| DurableExecutionSucceeded | 成功完成的持久执行次数 | 
| DurableExecutionFailed | 以失败状态完成的持久执行次数 | 
| DurableExecutionTimedOut | 超过其配置执行超时时间的持久执行次数 | 
| DurableExecutionOperations | 持久执行内执行的操作累计数量（最大数：3000） | 
| DurableExecutionStorageWrittenBytes | 持久执行所保留的累积数据量（以字节为单位）（最大值：100 MB） | 

### CloudWatch 指标
<a name="durable-monitoring-standard-metrics"></a>

Lambda 发出持久性函数的标准调用、性能和并发指标。由于持久执行在通过检查点和重放的过程中会跨越多个函数调用，因此这些指标的行为与标准函数不同：
+ **调用次数：**统计每次函数调用，包括重放次数。单次持久执行可以生成多个调用数据点。
+ **持续时间：**分别测量每次函数调用。使用 `DurableExecutionDuration` 计算一次持久执行所花费的总时间。
+ **错误：**跟踪函数调用失败次数。将 `DurableExecutionFailed` 用于执行级别的失败。

有关标准 Lambda 指标的完整列表，请参阅 [Lambda 函数的指标类型](https://docs.aws.amazon.com//lambda/latest/dg/monitoring-metrics-types.html)。

### 创建 CloudWatch 告警
<a name="durable-monitoring-alarms"></a>

创建 CloudWatch 警报，以便在指标超过阈值时通知您。常见的警报包括：
+ `ApproximateRunningDurableExecutionsUtilization` 超过配额的 80%
+ `DurableExecutionFailed` 增加到阈值以上
+ `DurableExecutionTimedOut` 表示执行超时
+ `DurableExecutionStorageWrittenBytes` 接近存储限制

有关更多信息，请参阅[使用 CloudWatch 警报](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)。

## EventBridge 事件
<a name="durable-monitoring-eventbridge"></a>

Lambda 将持久执行状态变更事件发布到 EventBridge。您可以使用这些事件来触发工作流、发送通知，或跟踪您所有持久性函数的执行生命周期变更。

### 持久执行状态变更事件
<a name="durable-eventbridge-status-changes"></a>

Lambda 在每次持久执行状态发生变化时，都会向 EventBridge 发送一个事件。这些事件具有以下特征：
+ **源**：`aws.lambda`
+ **详细信息类型：**`Durable Execution Status Change`

状态变更事件会在以下执行状态下发布：
+ `RUNNING`：执行已启动
+ `SUCCEEDED`：执行成功完成
+ `STOPPED`：使用 StopDurableExecution API 停止的执行
+ `FAILED`：执行失败，出现错误
+ `TIMED_OUT`：执行超过了配置的超时时间

以下示例显示了持久执行状态变更事件：

```
{
  "version": "0",
  "id": "d019b03c-a8a3-9d58-85de-241e96206538",
  "detail-type": "Durable Execution Status Change",
  "source": "aws.lambda",
  "account": "123456789012",
  "time": "2025-11-20T13:08:22Z",
  "region": "us-east-1",
  "resources": [],
  "detail": {
    "durableExecutionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function:$LATEST/durable-execution/090c4189-b18b-4296-9d0c-cfd01dc3a122/9f7d84c9-ea3d-3ffc-b3e5-5ec51c34ffc9",
    "durableExecutionName": "order-123",
    "functionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function:2",
    "status": "RUNNING",
    "startTimestamp": "2025-11-20T13:08:22.345Z"
  }
}
```

对于终端状态（`SUCCEEDED`、`STOPPED`、`FAILED`、`TIMED_OUT`），该事件包括一个指示执行何时完成的 `endTimestamp` 字段。

### 创建 EventBridge 规则
<a name="durable-eventbridge-rules"></a>

创建规则，将持久执行状态变更事件路由到 Amazon Simple Notification Service、Amazon Simple Queue Service 或其他 Lambda 函数等目标。

以下示例创建了一条规则，用于匹配所有持久执行状态变更：

```
{
  "source": ["aws.lambda"],
  "detail-type": ["Durable Execution Status Change"]
}
```

以下示例创建了一条规则，以仅匹配失败的执行：

```
{
  "source": ["aws.lambda"],
  "detail-type": ["Durable Execution Status Change"],
  "detail": {
    "status": ["FAILED"]
  }
}
```

以下示例创建了一条规则，用于匹配特定函数的状态变更：

```
{
  "source": ["aws.lambda"],
  "detail-type": ["Durable Execution Status Change"],
  "detail": {
    "functionArn": [{
      "prefix": "arn:aws:lambda:us-east-1:123456789012:function:my-function"
    }]
  }
}
```

有关创建规则的更多信息，请参阅《EventBridge 用户指南》中的 [Amazon EventBridge 教程](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-tutorial.html)。

## AWS X-Ray 跟踪
<a name="durable-monitoring-xray"></a>

您可以在持久性函数上启用 X-Ray 跟踪。Lambda 会将 X-Ray 跟踪标头传递给持久执行，从而允许您跨工作流跟踪请求。

要使用 Lambda 控制台启用 X-Ray; 跟踪，请选择您的函数，然后选择配置、监控和操作工具，并在 X-Ray 下开启主动跟踪。

要使用 AWS CLI 启用 X-Ray 跟踪：

```
aws lambda update-function-configuration \
    --function-name my-durable-function \
    --tracing-config Mode=Active
```

要使用 AWS SAM 启用 AWS X-Ray 跟踪：

```
Resources:
  MyDurableFunction:
    Type: AWS::Serverless::Function
    Properties:
      Tracing: Active
      DurableConfig:
        ExecutionTimeout: 3600
```

有关 X-Ray 的更多信息，[请参阅《AWS X-Ray 开发人员指南》](https://docs.aws.amazon.com//xray/latest/devguide/aws-xray.html)。