本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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
说明
按照这些步骤对自动化进行配置:
-
导航到
AWSSupport-TroubleshootWindowsPerformance“系统管理器” 下的 “文档”。 -
选择 Execute automation(执行自动化)。
-
对于输入参数,输入以下内容:
-
AutomationAssumeRole (可选):
(IAM) 角色的亚马逊资源名称 AWS AWS Identity and Access Management (ARN),允许系统管理员自动化代表您执行操作。如果未指定任何角色,系统管理员自动化将使用启动本运行手册的用户的权限。
-
InstanceId (必填):
您要在其中运行自动化的目标亚马逊 EC2 Windows 实例的 ID。该实例必须由系统管理器管理才能执行自动化。
-
CaptureProcessDump (可选):
要捕获的进程转储类型。自动化可以捕获该流程的一个进程转储,这可能会在自动化开始时对性能造成影响。实例根卷需要至少 10 GB 的可用空间(如果根卷大小大于 100 GB,则大于磁盘大小的 10%,进程消耗超过 10 GB 内存时进程消耗的总内存大小加上进程消耗的总内存大小)。
-
LogCaptureDuration (可选):
该自动化在问题存在时捕获日志的分钟数(介于
1和15之间)。默认值为5。 -
LogUploadBucketName (可选):
您账户中您要上传日志的 Amazon S3 存储桶。存储桶必须使用服务器端加密 (SSE) 进行配置,并且存储桶策略不得向不需要访问捕获日志的各方授予不必要的 read/write 权限。亚马逊 EC2 Windows 实例必须有权访问亚马逊 S3 存储桶。
-
InstallEC2RescueTool (可选):
设置为
Yes,允许运行手册安装最新版本的EC2Rescue工具以捕获 Windows 事件和系统日志。默认值为No。 -
致谢(必填):
阅读本自动化运行手册执行的操作的完整详细信息,如果您同意,请键入
Yes, I understand and acknowledge。
-
-
选择执行。
-
自动化启动。
-
文档将执行以下步骤:
-
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步骤可能会失败或超时。
-
-
完成后,请查看 “输出” 部分,了解详细的执行结果:
在目标实例具有所有必需先决条件的情况下执行。
目标实例在 Linux 平台上执行且执行失败时执行。您可以选择步骤 ID 来查看失败的详细信息。
步骤的失败详情
AssertInstanceIsWindows。
参考
Systems Manager Automation