View a markdown version of this page

AWSSupport-TroubleshootWindowsPerformance - AWS Systems Manager 自动化运行手册参考

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

AWSSupport-TroubleshootWindowsPerformance

描述

该运行手册AWSSupport-TroubleshootWindowsPerformance有助于解决亚马逊弹性计算云 (亚马逊 EC2) Windows 实例上持续存在的性能问题。该运行手册捕获来自目标实例的日志,并分析 CPU、内存、磁盘和网络性能指标。或者,自动化可以捕获流程转储以帮助您确定性能下降的潜在原因。如果您允许本运行手册进行安装,则自动化还会使用最新的EC2Rescue工具捕获事件和系统日志。

如何工作?

该运行手册执行以下步骤:

  • 检查 Amazon EC2 实例的先决条件。

  • 在 Amazon EC2 Windows 实例的根磁盘中生成性能日志

  • 将捕获的日志存储在文件夹中 C:\ProgramData\Amazon\SSM\TroubleshootWindowsPerformance

  • 如果提供了亚马逊简单存储服务 (Amazon S3) 存储桶,并且自动化代入角色具有所需的权限,则捕获的日志将上传到 Amazon S3 存储桶。

  • 如果您选择安装,将最新的EC2Rescue工具安装到 Amazon EC2 Windows 实例上以捕获事件和系统日志,但它不会分析进程转储和捕获的日志EC2Rescue

重要
  • 要执行本运行手册,必须由 AWS Systems Manager管理 Amazon EC2 Windows 实例。有关更多信息,请参阅为什么我的 Amazon EC2 实例未显示为托管节点

  • 要执行本运行手册,亚马逊 EC2 Windows 实例必须在 Windows 8.1/Windows Server 2012 R2 (6.3) 或更高版本上运行 PowerShell 4.0 或更高版本。有关更多信息,请参阅 Windows 操作系统版本

  • 要生成性能日志,根设备上至少需要 10 GB 的可用空间。如果根磁盘大于 100 GB,则可用空间必须大于磁盘大小的 10%。如果在执行期间转储进程,则可用空间必须大于 10 GB 加上该进程消耗超过 10 GB 内存时该进程消耗的总内存大小。

  • 根设备上生成的日志不会自动删除。

  • 运行手册不会卸载该EC2Rescue工具。有关更多信息,请参见EC2Rescue于 Windows 服务器

  • 最佳做法是在性能影响期间运行这种自动化。您也可以使用 AWS Systems Manager 状态管理器关联或通过计划 AWS Systems Manager 维护窗口来定期运行它。

运行此自动化(控制台)

文档类型

自动化

所有者

Amazon

平台

Windows

参数

所需的 IAM 权限

AutomationAssumeRole 参数需要执行以下操作才能成功使用运行手册。

  • ec2:DescribeInstances

  • ssm:DescribeAutomationExecutions

  • ssm:DescribeInstanceInformation

  • ssm:GetAutomationExecution

  • ssm:ListCommands

  • ssm:ListCommandInvocations

  • ssm:SendCommand

  • s3:ListBucket

  • s3:GetEncryptionConfiguration

  • s3:GetBucketPublicAccessBlock

  • s3:GetBucketPolicyStatus

  • s3:PutObject

  • s3:GetBucketAcl

  • s3:GetAccountPublicAccessBlock

(可选)在实例配置文件上附加的 IAM 角色或在实例上配置的 IAM 用户需要执行以下操作才能将日志上传到为参数指定的 Amazon S3 存储桶LogUploadBucketName

  • s3:PutObject

  • s3:GetObject

  • s3:ListBucket

说明

按照这些步骤对自动化进行配置:

  1. 导航到 AWSSupport-TroubleshootWindowsPerformance “系统管理器” 下的 “文档”。

  2. 选择 Execute automation(执行自动化)。

  3. 对于输入参数,输入以下内容:

    • AutomationAssumeRole (可选):

      (IAM) 角色的亚马逊资源名称 AWS AWS Identity and Access Management (ARN),允许系统管理员自动化代表您执行操作。如果未指定任何角色,系统管理员自动化将使用启动本运行手册的用户的权限。

    • InstanceId (必填):

      您要在其中运行自动化的目标亚马逊 EC2 Windows 实例的 ID。该实例必须由系统管理器管理才能执行自动化。

    • CaptureProcessDump (可选):

      要捕获的进程转储类型。自动化可以捕获该流程的一个进程转储,这可能会在自动化开始时对性能造成影响。实例根卷需要至少 10 GB 的可用空间(如果根卷大小大于 100 GB,则大于磁盘大小的 10%,进程消耗超过 10 GB 内存时进程消耗的总内存大小加上进程消耗的总内存大小)。

    • LogCaptureDuration (可选):

      该自动化在问题存在时捕获日志的分钟数(介于115之间)。默认值为 5

    • LogUploadBucketName (可选):

      您账户中您要上传日志的 Amazon S3 存储桶。存储桶必须使用服务器端加密 (SSE) 进行配置,并且存储桶策略不得向不需要访问捕获日志的各方授予不必要的 read/write 权限。亚马逊 EC2 Windows 实例必须有权访问亚马逊 S3 存储桶。

    • InstallEC2RescueTool (可选):

      设置为Yes,允许运行手册安装最新版本的EC2Rescue工具以捕获 Windows 事件和系统日志。默认值为 No

    • 致谢(必填):

      阅读本自动化运行手册执行的操作的完整详细信息,如果您同意,请键入Yes, I understand and acknowledge

    输入参数表单中包含 InstanceId、 AutomationAssumeRole CaptureProcessDump、和其他配置选项的字段。
  4. 选择执行。

  5. 自动化启动。

  6. 文档将执行以下步骤:

    • CheckConcurrency:

      确保此运行手册仅针对该实例执行一次。如果运行手册发现另一次针对同一实例的执行,它将返回错误并结束。

    • AssertInstanceIsWindows:

      断言亚马逊 EC2 实例在 Windows 操作系统上运行。否则,自动化将结束。

    • AssertInstanceIsManagedInstance:

      断言亚马逊 EC2 实例由管理。 AWS Systems Manager否则,自动化将结束。

    • VerifyPrerequisites:

      验证实例操作系统上的 PowerShell 版本,并确保可以通过 Systems Manager 连接实例来运行 PowerShell 命令。此自动化支持在 Windows 8.1/Server 2012 R2 (6.3) 或更高版本上运行 PowerShell 4.0 及更高版本。如果版本较旧,则自动化将失败。当您选择将日志上传到 Amazon S3 存储桶时,此自动检查 PowerShell 模块 AWS 工具是否可用。否则,自动化将结束。

    • BranchOnProcessDump:

      分支的依据是您是否将其设置为捕获影响性能的进程的转储。

    • CaptureProcessDump:

      检查实例是否有足够的空间来运行此自动化(当您选择 “最高 CPU/内存” 时)。

    • CapturePerformanceLogs:

      再次检查磁盘空间并在实例上运行 PowerShell 脚本以创建性能计数器并启动性能监视器和 Windows 性能记录器日志记录。脚本在满足定义LogCaptureDuration后停止。

    • SummarizePerformanceLogs:

      汇总在上一步中生成的 XML 报告CapturePerformanceLogs,以找出在自动化输出中消耗最多的 WorkingSet 64(内存)和% 处理器时间(CPU)的负责进程。它为网络接口、内存 LogicalDisk、TCPv4、IPv4 和 UDPv4 的使用生成类似信息,并将其保存到analysis_output.log输出文件夹中。

    • BranchOnInstallEC2Rescue:

      如果您将其设置为在 Amazon EC2 实例中安装最新EC2Rescue工具,则可以将其分支。

    • InstallEC2RescueTool:

      在实例操作系统中安装该EC2Rescue工具以使用捕获EC2Rescue日志AWS-ConfigureAWSPackage

    • RunEC2RescueTool:

      在实例操作系统中运行该EC2Rescue工具以捕获所需的所有日志。EC2Rescue仅捕获所需的日志以节省空间。

    • BranchOnIfS3BucketProvided:

      根据用户的输入LogUploadBucketName进行分支,查看是否有存储桶名称可供上传日志。

    • GetS3BucketPublicStatus:

      确定是否提供了 Amazon S3 存储桶,如果是,则确认该 Amazon S3 存储桶不是公共存储桶并配置了 SSE。

    • UploadLogResult:

      将日志上传到提供的 Amazon S3 存储桶。如果 PowerShell 版本为 5.0 或更高版本,它会将日志压缩到 ZIP 存档并上传。它会在上传完成后删除 ZIP 文件。如果 PowerShell 版本低于 5.0,它会将文件直接上传到文件夹。

    • CleanUpLogsOnFailure:

      清理该CapturePerformanceLogs步骤失败时生成的所有日志。如果 SSM 代理无法正常工作或 Windows 系统没有响应,则该CleanUpLogsOnFailure步骤可能会失败或超时。

  7. 完成后,请查看 “输出” 部分,了解详细的执行结果:

    在目标实例具有所有必需先决条件的情况下执行。

    输出部分显示了成功的性能日志捕获和 EC2Rescue 工具的执行结果。

    目标实例在 Linux 平台上执行且执行失败时执行。您可以选择步骤 ID 来查看失败的详细信息。

    执行状态显示 2 个步骤: CheckConcurrency 成功、 AssertInstanceIsWindows 失败。

    步骤的失败详情AssertInstanceIsWindows

    显示返回的 Linux 值而不是预期的 Windows 值的失败消息。

参考

Systems Manager Automation