View a markdown version of this page

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

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

AWSSupport-TroubleshootELBHealthChecks

描述

AWSSupport-TroubleshootELBHealthChecks运行手册通过分析 AWS 弹性负载平衡(Elastic Load Balancing)的相关指标、验证网络连接以及在目标实例上执行诊断命令,帮助解决弹性负载平衡 CloudWatch (Elastic Load BalancingCloudWatch)运行状况检查问题。

本运行手册解决了以下用例:

  • 负载均衡器或目标组的目标实例中存在运行状况不佳的实例。

  • 虽然没有运行状况不佳的实例,但 CloudWatch 指标表示的数据点 UnHealthyHostCounts

重要

重要注意事项:

  • 自动化的重点是对实例类型目标进行故障排除。

  • 允许进行故障排除的最大实例数为 50。

  • 目标实例必须由 Systems Manager 管理,才能在实例级别执行诊断命令。

  • S3BucketName参数是可选的,但某些诊断结果会直接上传到指定的 Amazon S3 存储桶,并且不会显示在自动化输出中。

  • IPv6 不支持网络连接故障排除。

运行此自动化(控制台)

文档类型

自动化

所有者

Amazon

平台

/

所需的 IAM 权限

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

  • elasticloadbalancing:DescribeLoadBalancers

  • elasticloadbalancing:DescribeTargetGroups

  • elasticloadbalancing:DescribeTargetHealth

  • elasticloadbalancing:DescribeInstanceHealth

  • ec2:DescribeInstances

  • ec2:DescribeNetworkInterfaces

  • ec2:DescribeSecurityGroups

  • ec2:DescribeSubnets

  • cloudwatch:GetMetricStatistics

  • ssm:SendCommand

  • ssm:GetCommandInvocation

  • ssm:DescribeInstanceInformation

  • s3:GetBucketLocation

  • s3:GetBucketAcl

  • s3:PutObject

策略示例:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeTargetHealth", "elasticloadbalancing:DescribeInstanceHealth", "ec2:DescribeInstances", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "cloudwatch:GetMetricStatistics", "ssm:SendCommand", "ssm:GetCommandInvocation", "ssm:DescribeInstanceInformation", "s3:GetBucketLocation", "s3:GetBucketAcl", "s3:PutObject" ], "Resource": "*" } ] }

说明

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

  1. AWSSupport-TroubleshootELBHealthChecks在 Systems Manager 的 “文档” 下导航至。

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

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

    • AutomationAssumeRole (可选):

      • 描述:(可选)允许 SSM Automation 代表您执行操作的 AWS Identity and Access Management (IAM) 角色的亚马逊资源名称 (ARN)。如果未指定角色,SSM Automation 将使用启动此运行手册的用户的权限。

      • 类型:AWS::IAM::Role::Arn

    • LoadBalancerOrTargetGroupName (必填):

      • 描述:(必填)Classic Load Balancer 的名称,或者与应用程序负载均衡器或网络负载均衡器关联的目标组的名称。

      • 类型:String

      • 允许的模式:^[a-zA-Z0-9-]+$

    • ExecutionMode (必填):

      • 描述:(必填)控制自动化执行模式。 Complete在 Amazon EC2 实例上运行所有步骤,包括 runCommands。 SkipRunCommands执行除在实例上运行命令之外的所有步骤。

      • 类型:String

      • 允许的值:[Complete, SkipRunCommands]

    • S3BucketName (可选):

      • 描述:(可选)您账户中要上传疑难解答日志的 Amazon S3 存储桶的名称。

      • 类型:String

      • 默认值:""

  4. 选择执行

  5. 自动化启动。

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

    • getBucketPublic状态

      检查目标 Amazon S3 存储桶是否有可能授予对其对象的读取或写入公共访问权限。

    • getLoadBalancer详细信息:

      标识负载均衡器类型并返回统一负载均衡器详细信息对象。

    • checkLoadBalancer类型

      检查负载均衡器是否存在。

    • 获取目标:

      根据不同类型的负载均衡器,查询描述了 APIs 如何返回健康和不健康目标详细信息的地图。

    • checkCloudWatch指标

      检查 CloudWatch 指标HealthyHostCountsUnHealthyHostCounts并生成 CloudWatch 链接。

    • checkUnhealthyReasons:

      检查是否存在不健康的原因并筛选目标。

    • 检查连接

      检查负载均衡器与其实例之间的连接。

    • 运行命令

      在实例上运行故障排除命令并上传输出(如果提供了存储桶名称)。

    • 生成报告

      根据前面步骤的输出生成最终报告,并将报告上传到 Amazon S3 存储桶(如果已指定)。

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

诊断命令

运行手册对实例执行以下诊断命令:

  • Linux Shell:top、free、ss、curl、iptables、tcpdump

  • Windows PowerShell:Get-CimInstance、Get-、Get-NetFirewallProfile、Invoke-NetFirewallRule、netstat WebRequest、netsh、pktmon

参考

Systems Manager Automation