

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

# 为您的自动扩缩组设置自定义运行状况检查
<a name="set-up-a-custom-health-check"></a>

您可以使用自定义运行状况检查来补充 Amazon EC2 Auto Scaling 提供的现有运行状况检查选项。通过将自定义运行状况检查与其他运行状况检查类型相结合，您可以创建针对应用程序需求量身定制的全面运行状况监控系统。

首先，创建自定义测试，以验证自动扩缩组中的实例是否正常运行并且可以处理传入流量。如果您配置的运行状况检查检测到某个实例没有响应，则请将该特定实例标记为 `Unhealthy`，这会导致 Amazon EC2 Auto Scaling 立即将其替换。

您可以使用 AWS CLI 或 SDK 将实例的运行状况直接发送到 Amazon EC2 Auto Scaling。以下示例向您展示了如何使用 AWS CLI 来配置实例的运行状况，然后验证实例的运行状况。

使用以下[set-instance-health](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/set-instance-health.html)命令将指定实例的运行状况设置为`Unhealthy`。

```
aws autoscaling set-instance-health --instance-id i-1234567890abcdef0 --health-status Unhealthy
```

默认情况下，此命令会执行运行状况检查宽限期。不过，您可以通过包括 `--no-should-respect-grace-period` 选项来覆盖此行为，不执行此宽限期。

使用以下[describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html)命令验证实例的运行状况是否为`Unhealthy`。

```
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names my-asg
```

下面是一个示例响应，向您演示实例的运行状况为 `Unhealthy` 并且实例正在终止。

```
{
    "AutoScalingGroups": [
        {
            ....
            "Instances": [
                {
                    "ProtectedFromScaleIn": false,
                    "AvailabilityZone": "us-west-2a",
                    "LaunchTemplate": {
                        "LaunchTemplateName": "my-launch-template",
                        "Version": "1",
                        "LaunchTemplateId": "lt-1234567890abcdef0"
                    },
                    "InstanceId": "i-1234567890abcdef0",
                    "InstanceType": "t2.micro",
                    "HealthStatus": "Unhealthy",
                    "LifecycleState": "Terminating"
                },
                ...
            ]
        }
    ]
}
```