View a markdown version of this page

监控解决方案 - AWS 实例计划程序

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

监控解决方案

日志记录和通知

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

日志按两个日志组写入 Amazon CloudWatch 日志:

{stackName}-{namespace}-administrative-logs

资源注册和注销、自定义资源操作、CLI 请求和其他管理活动的日志。

{stackName}-{namespace}-scheduling-logs

用于调度操作的日志,包括编排和请求处理程序执行。

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

信息标签

启用信息标记(默认)后,Instance Scheduler 会将标签直接写入托管资源,以提供对解决方案调度活动的 at-a-glance可见性。这些标签是使用 AWS Resource Groups Tagging API 应用的,并且在计划程序每次处理资源时都会更新。

您可以使用中心堆栈上的 “启用信息标记” 参数启用或禁用此功能。有关更多信息,请参阅更新全局配置设置

信息标签密钥

以下标签写入托管资源:

标签键 说明

IS-ManagedBy

管理此资源的实例调度器中心堆栈的 ARN。在首次注册资源以进行计划时以及随后的每个计划操作时应用。

IS-LastAction

上次对资源执行的调度操作以及 UTC 时间戳。例如:Started 2025-06-15 09:00:00 UTCStopped 2025-06-15 17:00:00 UTC。只有在调度器主动启动或停止资源时才会更新此标记(而不是当它评估资源并确定无需执行任何操作时)。

IS-Error

如果调度程序在处理资源时遇到错误,则此标签包含错误代码和 UTC 时间戳。例如:StartFailed 2025-06-15 09:00:05 UTC。下次成功执行计划操作时,此标签会自动清除。

IS-ErrorMessage

人类可读的错误描述。此标签仅在同时存在时IS-Error才会出现,并在其旁边被清除。

错误代码

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

错误代码 说明

UnknownSchedule

在资源的计划标签中指定的计划名称与配置表中定义的任何计划都不匹配。

UnsupportedResource

该资源类型不支持调度(例如,另一个 RDS 实例的只读副本)。

IncompatibleSchedule

分配给资源的计划与资源类型不兼容(例如,使用不支持的 cron 表达式的 ASG 计划)。

StartFailed

调度器尝试启动资源,但操作失败。

StopFailed

调度器试图停止资源,但操作失败。

ConfigurationFailed

调度程序尝试在 Auto Scaling 组上配置定时扩展规则,但操作失败。

UnknownError

处理资源时发生意外错误。

标签行为

  • 首次注册资源进行调度时,IS-ManagedBy标签会立即应用。

  • 取消注册资源(移除计划标签)后,所有信息标签(、IS-ManagedByIS-LastActionIS-ErrorIS-ErrorMessage)都将从该资源中删除。

  • 如果相同的错误仍然存在并且资源上仍然存在现有标签,则不会在每个计划间隔内重写错误标签。它们只有在错误代码更改时才会更新。

  • 为了符合 AWS 的标签限制,所有标签值都被截断为 256 个字符。

标签治理注意事项

重要

作为正常操作的一部分,Instance Scheduler 会在托管资源上创建和更新上面列出的标签。如果您的组织通过 AWS Config 规则、标签策略、服务控制策略或自动修复来强制执行标签管理,请确保将变更管理控制配置为允许使用以下标签密钥:

  • IS-ManagedBy

  • IS-LastAction

  • IS-Error

  • IS-ErrorMessage

  • IS-PreferredInstanceTypes(如果使用备用实例类型)

  • IS-MinDesiredMax(如果安排了 Auto Scaling 群组)

如果您无法在监管策略中容纳这些标签,请在中心堆栈No上将 “启用信息性标记” 参数设置为,从而禁用信息标记。请注意,这也将禁用用于确认资源注册的IS-ManagedBy标签。

控制标签

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

标签键 说明

IS-PreferredInstanceTypes

由于容量不足,启动实例时要尝试的备用 EC2 实例类型的逗号分隔列表失败。有关更多信息,请参阅处理 EC2 容量不足错误

IS-MinDesiredMax

格式为 Auto Scaling 组的最小、所需和最大容量值min,desired,max。有关更多信息,请参阅 EC2 Auto Scaling 组计划

标签容量

重要

AWS 资源通常每个资源的标签上限为 50 个。实例调度器最多可以在资源上使用 6 个标签(4 个信息标签加上最多 2 个控制标签)。确保您的资源有足够的标签容量,以便在现有标记策略的同时容纳实例计划程序标签。

如果资源达到或接近 50 个标签的限制,则信息标签写入可能会失败。调度程序会记录这些故障,但会继续安排操作。如果您怀疑存在标记问题,请查看 CloudWatch 日志。

CloudWatch 记录见解查询

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

Instance Scheduler 提供预格式化的日志查询,您可以从 CloudWatch 日志控制台的 “已保存查询” 部分访问这些查询:

SchedulingHistory

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

RegistrationEvents

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

Errors

查询错误日志以解决与解决方案有关的问题。

有关 Lo CloudWatch gs Insights 的更多信息,请参阅 Amazon Logs 用户指南中的使用 CloudWatch CloudWatch 日志见解分析日志数据

运营洞察控制面板

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

要访问控制面板,请确保在中心堆栈参数中将操作监控设置为 “启用”。导航到导航菜单 CloudWatch 并选择 “仪表板”。仪表板名称为 * {stack-name}-Operational-Insights-D ashboard*。

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

运营见解仪表板概述

OpsDashboardOverview
注意

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

监控 Lambda 执行时间以确保最佳性能(参见配额)。如果执行时间一直接近超时阈值,请考虑增加 Lambda 大小属性或将实例调度器部署到托管区域延迟较低的区域。

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

OpsDashboardLambdaMetrics

与此功能相关的额外成本

此操作仪表板由解决方案收集的自定义 CloudWatch 指标提供支持,这将产生额外费用。可通过在解决方案中心堆栈上禁用“运营监控”来关闭此功能。此功能的额外成本为每月 3.00 美元,此外还会根据部署规模产生额外的扩展成本。具体成本如下:

自定义 CloudWatch 控制面板 3 美元

Per-instance-type 指标

每实例类型 0.90 美元*

API 使用

每个活跃目标大约 0.10 美元**

*这些费用按服务类别 (EC2/RDS) 进行跟踪,并且仅针对实际用于调度的实例类型进行跟踪。

*

监控 EventBridge 事件

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

事件类型

该解决方案发布了两类主要的事件:

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

注册事件:在资源注册或取消注册以进行基于标记操作的调度时发布。

活动目的地

IS-LocalEvents 事件总线:IS-LocalEvents事件总线部署在每个成员账户(包括中心账户)的每个托管区域。每条总线都会接收用于在该区域内调度操作和资源注册的事件。

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

使用 EventBridge 事件

您可以为以下目的创建 EventBridge 规则:

  • 监控整个基础架构的调度操作

  • 在实例启动或停止时触发通知

  • 与其他 AWS 服务集成,实现自动化工作流程

  • 实施合规性监控和警报

事件结构

所有活动都使用标准 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-包含受影响的 ARNs AWS 资源的数组

  • Detail-包含带有账户 ID、区域、服务类型 (ec2/rds)、资源 ID、计划名称的事件负载,对于计划事件,包括请求的操作和实际结果

调度事件的可能requested_action值:

  • Start: 用于启动实例的调度程序

  • Stop: 计划程序旨在停止实例

  • Configure: 用于配置实例的调度程序

调度事件的可能action_taken值:

  • Started: 实例已启动

  • Stopped: 实例已停止

  • Hibernated: 实例已休眠

  • Configured: 实例配置已修改

  • Error: 调度操作期间出错

创建 EventBridge 规则

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

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

  2. 创建针对IS-GlobalEvents事件总线(用于集中式监视)或IS-LocalEvents事件总线(用于本地监控)的新规则

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

  4. 配置目标,例如 SNS 主题、Lambda 函数或日志 CloudWatch

有关更多信息 EventBridge,请参阅 Amazon 是什么 EventBridge? 在《亚马逊 EventBridge 用户指南》中。