

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 监控解决方案
<a name="monitor-the-solution"></a>

## 日志记录和通知
<a name="logging-and-notifications"></a>

实例调度器使用针对日志见解查询进行了优化的结构化 CloudWatch 日志记录。此解决方案将记录每个已标记实例的处理信息、实例的时段评估结果、时段内的实例所需状态、已应用的操作和调试消息。

日志以两个日志组写入 Amazon Log CloudWatch s：

 `{stackName}-{namespace}-administrative-logs`   
资源注册和注销、自定义资源操作、CLI 请求和其他管理活动的日志。

 `{stackName}-{namespace}-scheduling-logs`   
用于调度操作的日志，包括编排和请求处理程序的执行。

警告和错误日志还会转发到解决方案创建的 Amazon SNS 主题，该主题可以配置为向订阅的电子邮件地址发送消息。您可以在解决方案堆栈的**输出**选项卡中找到该 Amazon SNS 主题的名称。

## 信息标签
<a name="informational-tags"></a>

启用信息标记（默认）后，Instance Scheduler 将标签直接写入托管资源，让解决方案的调度活动一目了然。这些标签使用 AWS 资源组标记 API 进行应用，并且每次调度程序处理资源时都会更新。

您可以使用集线器堆栈上的 “**启用信息标记” ** 参数启用或禁用此功能。有关更多信息，请参阅[更新全局配置设置](update-global-configuration-settings.md)。

### 信息标签密钥
<a name="informational-tag-keys"></a>

以下标签写入托管资源：


| 标签键 | 说明 | 
| --- | --- | 
|  `IS-ManagedBy`  | 管理此资源的实例调度器中心堆栈的 ARN。在首次注册资源进行调度时以及在随后的每个调度操作中应用。 | 
|  `IS-LastAction`  | 对资源执行的最后一次调度操作以及 UTC 时间戳。例如：`Started 2025-06-15 09:00:00 UTC` 或 `Stopped 2025-06-15 17:00:00 UTC`。此标签仅在调度器主动启动或停止资源时更新（而不是当它评估资源并确定无需执行任何操作时）。 | 
|  `IS-Error`  | 如果调度程序在处理资源时遇到错误，则此标签包含错误代码和 UTC 时间戳。例如：`StartFailed 2025-06-15 09:00:05 UTC`。下次成功执行调度操作时会自动清除此标记。 | 
|  `IS-ErrorMessage`  | 人类可读的错误描述。此标签仅在同时存在时`IS-Error`才会出现，并与之一起被清除。 | 

### 错误代码
<a name="informational-tag-error-codes"></a>

`IS-Error`标签中可能会出现以下错误代码：


| 错误代码 | 说明 | 
| --- | --- | 
|  `UnknownSchedule`  | 在资源的计划标签中指定的计划名称与配置表中定义的任何计划都不匹配。 | 
|  `UnsupportedResource`  | 不支持资源类型进行调度（例如，另一个 RDS 实例的只读副本）。 | 
|  `IncompatibleSchedule`  | 分配给资源的时间表与资源类型不兼容（例如，使用不支持的 cron 表达式的 ASG 计划）。 | 
|  `StartFailed`  | 调度程序尝试启动资源，但操作失败。 | 
|  `StopFailed`  | 调度程序尝试停止资源，但操作失败。 | 
|  `ConfigurationFailed`  | 调度器尝试在 Auto Scaling 组上配置计划扩展规则，但操作失败。 | 
|  `UnknownError`  | 处理资源时出现意外错误。 | 

### 标签行为
<a name="informational-tag-behavior"></a>
+ 当资源首次注册进行调度时，会立即应用`IS-ManagedBy`标签。
+ 当资源被取消注册（删除计划标签）时，所有信息标签（、、`IS-ManagedBy``IS-LastAction``IS-Error`、`IS-ErrorMessage`）都将从该资源中移除。
+ 如果相同的错误仍然存在且资源上仍然存在现有标签，则不会在每个调度间隔上重写错误标签。它们仅在错误代码更改时更新。
+ 所有标签值都被截断为 256 个字符，以符合 AWS 标签限制。

### 标签：治理注意事项
<a name="informational-tag-conflict-with-tag-policies"></a>

**重要**  
作为正常操作的一部分，实例调度器会在托管资源上创建和更新上面列出的标签。如果您的组织通过 AWS Config 规则、标签策略、服务控制策略或自动补救措施实施标签治理，请确保将您的变更管理控制配置为允许以下标签密钥：  
 `IS-ManagedBy` 
 `IS-LastAction` 
 `IS-Error` 
 `IS-ErrorMessage` 
 `IS-PreferredInstanceTypes`（如果使用备用实例类型）
 `IS-MinDesiredMax`（如果安排 Auto Scaling 群组）
如果您的监管策略中无法容纳这些标签，请通过在中心堆栈`No`上将 “**启用信息标记” ** 参数设置为，来禁用信息标记。请注意，这还将禁用用于确认资源注册的`IS-ManagedBy`标签。

### 控制标签
<a name="informational-tag-control-tags"></a>

除信息标签外，实例调度器还使用以下控制标签来实现特定功能：


| 标签键 | 说明 | 
| --- | --- | 
|  `IS-PreferredInstanceTypes`  | 启动实例时要尝试的以逗号分隔的备用 EC2 实例类型列表因容量不足而失败。有关更多信息，请参阅[处理 EC2 容量不足错误](specifying-alternate-instance-types-for-ec2.md)。 | 
|  `IS-MinDesiredMax`  | 格式为 Auto Scaling 组的最小、所需和最大容量值`min-desired-max`。有关更多信息，请参阅 [ EC2 自动扩展组计划](ec2-auto-scaling-group-scheduling.md)。 | 

### 标签容量
<a name="informational-tag-capacity"></a>

**重要**  
AWS 资源通常限制为每个资源 50 个标签。实例调度器可以在资源上使用最多 6 个标签（4 个信息标签加上最多 2 个控制标签）。确保您的资源有足够的标签容量，以容纳实例调度器标签以及现有的标记策略。  
如果资源达到或接近 50 个标签的限制，则信息标签写入可能会失败。调度器会记录这些故障，但会继续调度操作。如果您怀疑存在标记问题，请检查 CloudWatch 日志。

## CloudWatch 日志见解查询
<a name="cloudwatch-logs-insights-queries"></a>

实例调度器的结构化日志格式支持使用 CloudWatch 日志见解进行高效查询。您可以使用 Logs Insights 来搜索、分析和可视化日志数据，以解决运营问题并监控日程安排活动。

实例调度器提供预格式化的日志查询，您可以从 CloudWatch 日志控制台的 “已保存的查询” 部分访问这些查询：

 `SchedulingHistory`   
对资源执行的查询调度操作，包括启动和停止操作。

 `RegistrationEvents`   
查询资源注册和注销事件。

 `Errors`   
查询错误日志以解决解决方案的问题。

有关 CloudWatch 日志见解的更多信息，请参阅《*亚马逊日志用户指南》[中的使用 CloudWatch 日志见解](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html)分析 CloudWatch 日志数据*。

## 运营洞察控制面板
<a name="operational-insights-dashboard"></a>

Operational Insights 仪表板可让您了解计划实例管理带来的解决方案性能和成本节约。

要访问控制面板，请确保在集线器堆栈参数中将**运行监控**设置为 “启用”。导航到 CloudWatch 并从导航菜单中选择 “仪表板”。仪表板名称是 * \* {堆栈名称}-\*。Operational-Insights-Dashboard *

控制面板显示托管实例数量、节省的运行时间和 Lambda 函数性能指标。

 **运营洞察仪表板概述 ** 

![OpsDashboardOverview](https://docs.aws.amazon.com/zh_cn/solutions/latest/instance-scheduler-on-aws/images/OpsDashboardOverview.png)


**注意**  
这些图表中的信息取决于解决方案中心堆栈上配置的计划间隔。更新解决方案的计划间隔时，控制面板将仅显示计划间隔最近一次更新之后的计划指标。

监控 Lambda 的执行时间以确保最佳性能（请参阅[配额](solution-quotas.md)）。如果执行时间持续接近超时阈值，请考虑增加 Lambda 大小属性或将实例调度器部署到托管区域延迟较低的区域。

 **显示持续时间和错误数的 Lambda 指标 ** 

![OpsDashboardLambdaMetrics](https://docs.aws.amazon.com/zh_cn/solutions/latest/instance-scheduler-on-aws/images/OpsDashboardLambdaMetrics.png)


### 与此功能相关的额外成本
<a name="additional-costs-associated-with-this-feature"></a>

该运营仪表板由解决方案收集的自定义 CloudWatch 指标提供支持，这将产生额外费用。可通过在解决方案中心堆栈上禁用“运营监控”来关闭此功能。此功能额外收费 3 美元。00/month 再加上基于部署规模的额外扩展成本。具体成本如下：


| 自定义 CloudWatch 控制面板 | 3 美元 | 
| --- | --- | 
| Per-instance-type 指标 | 每实例类型 0.90 美元\* | 
| API 使用 | 每个[活跃目标约0.10美元 \*\* ](cost.md#calculating-scheduling-targets) | 

 ***\*这些费用按服务类别 (EC2/RDS) 进行跟踪，仅适用于实际用于调度的实例类型。***

 ** **\*** 

## 监控 EventBridge 事件
<a name="monitoring-eventbridge-events"></a>

Instance Scheduler 将调度和注册EventBridge 事件发布到事件总线，以提供解决方案操作的可见性并实现与其他 AWS 服务的集成。

### 事件类型
<a name="event-types"></a>

该解决方案发布了两个主要类别的事件：

 **计划事件**：当实例调度器采取措施启动、停止或配置托管资源时发布。这些事件包括有关实例、计划和所采取的操作的详细信息。启动、停止或配置托管资源。这些事件包括有关实例、时间表和所采取的操作的详细信息。

 **注册事件**：根据标记操作注册或取消注册资源以进行调度时发布。

### 活动目的地
<a name="event-destinations"></a>

 **IS-LocalEvents 事件总线**：`IS-LocalEvents`事件总线部署在每个成员账户（包括中心账户）的每个托管区域中。每条总线都会接收用于在该区域内安排操作和资源注册的事件。

 **IS-GlobalEvents 事件总线**：中心账户中的`IS-GlobalEvents`事件总线接收发送到任何`IS-LocalEvents`事件总线的每个事件的副本，从而对所有账户和区域进行集中监控。

### 使用 EventBridge 事件
<a name="using-eventbridge-events"></a>

您可以创建 EventBridge 规则以：
+ 监控整个基础架构中的调度操作
+ 实例启动或停止时触发通知
+ 与其他 AWS 服务集成以实现工作流程自动化
+ 实施合规性监控和警报

### 事件结构
<a name="event-structure"></a>

所有事件均使用标准 EventBridge 格式。以下示例显示了每种事件类型的结构：

 **日程安排活动：**

```
{
  "Source": "instance-scheduler",
  "DetailType": "Scheduling Action",
  "Resources": ["arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"],
  "Detail": {
    "account": "123456789012",
    "region": "us-east-1",
    "service": "ec2",
    "resource_id": "i-1234567890abcdef0",
    "requested_action": "Start",
    "action_taken": "Started",
    "schedule": "office-hours"
  }
}
```

 **注册活动：**

```
{
  "Source": "instance-scheduler",
  "DetailType": "Resource Registered",
  "Resources": ["arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"],
  "Detail": {
    "account": "123456789012",
    "region": "us-east-1",
    "service": "ec2",
    "resource_id": "i-1234567890abcdef0",
    "schedule": "office-hours"
  }
}
```

每个事件都包含以下关键字段：
+  `Source`-将事件源标识为 “实例调度器”
+  `DetailType`-指定事件类别：“计划操作”（用于实例操作）或 “资源注册”（用于标记事件）
+  `Resources`-包含受影响 AWS 资源的 ARN 的数组
+  `Detail`-包含包含账户 ID、区域、服务类型 (ec2/rds)、资源 ID、计划名称的事件负载，以及用于计划事件的事件负载，包括请求的操作和实际结果

调度活动的可能`requested_action`值：
+  `Start`: 计划程序旨在启动实例
+  `Stop`: 计划程序旨在停止实例
+  `Configure`: 计划程序旨在配置实例

调度活动的可能`action_taken`值：
+  `Started`: 实例已启动
+  `Stopped`: 实例已停止
+  `Hibernated`: 实例已休眠
+  `Configured`: 实例配置已修改
+  `Error`: 调度操作期间出错

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

要监控实例调度器事件，请执行以下操作：

1. 导航到您的 AWS 账户中的 EventBridge 控制台

1. 创建针对`IS-GlobalEvents`事件总线（用于集中监视）或`IS-LocalEvents`事件总线（用于本地监视）的新规则

1. 定义事件模式以匹配实例调度器事件

1. 配置 SNS 主题、Lambda 函数或日志等目标 CloudWatch

有关更多信息 EventBridge，请参阅[什么是亚马逊 EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)在*亚马逊 EventBridge 用户指南中*。