

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

# Amazon EC2 实例的运行时覆盖率和故障排除
<a name="gdu-assess-coverage-ec2"></a>

对于 Amazon EC2 资源，运行时间覆盖率是在实例级别评估的。Amazon EC2 实例可能会在您的 AWS 环境中运行多种类型的应用程序和工作负载等等。此功能还支持由 Amazon ECS 托管的 Amazon EC2 实例，并且如果您在 Amazon EC2 实例上运行 Amazon ECS 集群，则实例级别的覆盖率问题将在 Amazon EC2 运行时覆盖率下显示。

**Topics**
+ [查看覆盖率统计数据](#review-coverage-statistics-ec2-runtime-monitoring)
+ [通过 EventBridge 通知更改保险状态](#ec2-runtime-monitoring-coverage-status-change)
+ [对 Amazon EC2 运行时覆盖率问题进行故障排除](#ec2-runtime-monitoring-coverage-issues-troubleshoot)

## 查看覆盖率统计数据
<a name="review-coverage-statistics-ec2-runtime-monitoring"></a>

对于与您自己的账户或成员账户有关的 Amazon EC2 实例，覆盖率统计数据是选定 AWS 区域中正常 EC2 实例占所有 EC2 实例的百分比。下式将其表示为：

*（ instances/All 运行状况良好的实例）\*100 *

如果您还为您的 Amazon ECS 集群部署了 GuardDuty 安全代理，则与在 Amazon EC2 实例上运行的 Amazon ECS 集群相关的任何实例级别覆盖问题都将显示为 Amazon EC2 实例运行时覆盖范围问题。

选择一种访问方法来查看您账户的覆盖率统计数据。

------
#### [ Console ]
+ 登录 AWS 管理控制台 并打开 GuardDuty 控制台，地址为[https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/)。
+ 在导航窗格中，选择**运行时监控**。
+ 选择**运行时覆盖率**选项卡。
+ 您可以在 **EC2 实例运行时覆盖率**选项卡下查看覆盖率统计数据，按**实例列表**中可用的每个 Amazon EC2 实例的覆盖率状态汇总。
  + 您可以按以下列筛选**实例列表**：
    + **账户 ID**
    + **代理管理类型**
    + **代理版本**
    + **覆盖状态**
    + **实例 ID**
    + **集群 ARN**
+ 如果任何 EC2 实例的**覆盖率状态**为**不正常**，则**问题**列可能包含有关**不正常**状态原因的其他信息。

------
#### [ API/CLI ]
+ 使用您自己的有效检测器 ID、当前区域和服务终端节点运行 [ ListCoverage ](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_ListCoverage.html) API。您可以使用此 API 对实例列表进行筛选和排序。
  + 您可以使用以下 `CriterionKey` 选项之一更改示例 `filter-criteria`：
    + `ACCOUNT_ID`
    + `RESOURCE_TYPE`
    + `COVERAGE_STATUS`
    + `AGENT_VERSION`
    + `MANAGEMENT_TYPE`
    + `INSTANCE_ID`
    + `CLUSTER_ARN`
  + 当 `filter-criteria` 包含 `RESOURCE_TYPE` 为 **EC2** 的条件时，运行时监控将不支持将 **ISSUE** 作为 `AttributeName`。如果您使用该属性，API 响应将导致 `InvalidInputException`。

    您可以使用以下选项更改 `sort-criteria` 中的示例 `AttributeName`：
    + `ACCOUNT_ID`
    + `COVERAGE_STATUS`
    + `INSTANCE_ID`
    + `UPDATED_AT`
  + 您可以更改{{max-results}}（最多 50 个）。
  + 要查找您的账户和当前区域的，请参阅[https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/)控制台中的**设置**页面，或运行 [ListDetectors](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_ListDetectors.html) API。`detectorId`

  ```
  aws guardduty --region {{us-east-1}} list-coverage --detector-id {{12abc34d567e8fa901bc2d34e56789f0}} --sort-criteria '{"AttributeName": "{{EKS_CLUSTER_NAME}}", "OrderBy": "{{DESC}}"}' --filter-criteria '{"FilterCriterion":[{"CriterionKey":"{{ACCOUNT_ID}}", "FilterCondition":{"EqualsValue":"111122223333"}}] }'  --max-results {{5}}
  ```
+ 运行 [ GetCoverageStatistics ](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_GetCoverageStatistics.html) API 来检索基于的覆盖率汇总统计数据`statisticsType`。
  + 您可以使用以下选项之一更改示例 `statisticsType`：
    + `COUNT_BY_COVERAGE_STATUS`：表示按覆盖状态汇总的 EKS 集群的覆盖率统计数据。
    + `COUNT_BY_RESOURCE_TYPE`— 根据列表中的 AWS 资源类型汇总的覆盖率统计信息。
    + 您可以在命令中更改示例 `filter-criteria`。您可以对 `CriterionKey` 使用以下选项：
      + `ACCOUNT_ID`
      + `RESOURCE_TYPE`
      + `COVERAGE_STATUS`
      + `AGENT_VERSION`
      + `MANAGEMENT_TYPE`
      + `INSTANCE_ID`
      + `CLUSTER_ARN`
  + 要查找您的账户和当前区域的，请参阅[https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/)控制台中的**设置**页面，或运行 [ListDetectors](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_ListDetectors.html) API。`detectorId`

  ```
  aws guardduty --region {{us-east-1}} get-coverage-statistics --detector-id {{12abc34d567e8fa901bc2d34e56789f0}} --statistics-type {{COUNT_BY_COVERAGE_STATUS}} --filter-criteria '{"FilterCriterion":[{"CriterionKey":"{{ACCOUNT_ID}}", "FilterCondition":{"EqualsValue":"123456789012"}}] }'
  ```

------

如果 EC2 实例的覆盖率状态为**不正常**，请参阅[对 Amazon EC2 运行时覆盖率问题进行故障排除](#ec2-runtime-monitoring-coverage-issues-troubleshoot)。

## 通过 EventBridge 通知更改保险状态
<a name="ec2-runtime-monitoring-coverage-status-change"></a>

Amazon EC2 实例的覆盖率状态可能显示为**不正常**。要检测覆盖率状态何时变为不正常，我们建议您定期监控覆盖率状态，并在状态变为**不正常**时进行故障排除。或者，您可以创建亚马逊 EventBridge 规则，以便在保险状态从 “**不健康” 变为 “健康**” ** 或其他条件时收到通知。**默认情况下，将其 GuardDuty 发布到您的账户[的](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html)EventBridge 公交车中。

### 示例通知架构
<a name="ec2-gdu-coverage-status-eventbridge-schema"></a>

在 EventBridge 规则中，您可以使用预定义的示例事件和事件模式来接收保险状态通知。有关创建 EventBridge 规则的更多信息，请参阅*亚马逊 EventBridge 用户指南[中的](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html#eb-gs-create-rule)创建规则*。

此外，您还可以使用以下示例通知架构来创建自定义事件模式。确保替换账户的值。要在您的 Amazon EC2 实例的覆盖范围状态从变`Healthy`为时收到通知`Unhealthy`，`detail-type`应为{{GuardDuty Runtime Protection Unhealthy}}。要在承保范围状态从更改为时收到通知`Healthy`，`Unhealthy`请将的`detail-type`值替换为{{GuardDuty Runtime Protection Healthy}}。

```
{
  "version": "0",
  "id": "event ID",
  "detail-type": "GuardDuty Runtime Protection Unhealthy",
  "source": "aws.guardduty",
  "account": "AWS 账户 ID",
  "time": "event timestamp (string)",
  "region": "AWS 区域",
  "resources": [
       ],
  "detail": {
    "schemaVersion": "1.0",
    "resourceAccountId": "string",
    "currentStatus": "string",
    "previousStatus": "string",
    "resourceDetails": {
        "resourceType": "EC2",
        "ec2InstanceDetails": {
          "instanceId":"",
          "instanceType":"",
          "clusterArn": "",
          "agentDetails": {
            "version":""
          },
          "managementType":""
        }
    },
    "issue": "string",
    "lastUpdatedAt": "timestamp"
  }
}
```

## 对 Amazon EC2 运行时覆盖率问题进行故障排除
<a name="ec2-runtime-monitoring-coverage-issues-troubleshoot"></a>

如果 Amazon EC2 实例的覆盖率状态为**不正常**，则可以在**问题**列下查看原因。

如果 EC2 实例与某个 EKS 集群关联，并且手动或通过自动代理配置安装了 EKS 安全代理，则要对覆盖率问题进行故障排除，请参阅[Amazon EKS 集群的运行时覆盖率和故障排除](eks-runtime-monitoring-coverage.md)。

下表列举了问题类型和相应的故障排除步骤。



- ** 无代理报告 **
  - **问题消息:** 正在等待 SSM 通知 / **故障排除步骤:** 接收 SSM 通知可能需要几分钟时间。<br />确保 Amazon EC2 实例是由 SSM 托管的。有关更多信息，请参阅中的*方法 1-使用 AWS 系统管理器*下的步骤[手动安装安全代理](installing-gdu-security-agent-ec2-manually.md)。
  - **问题消息:** （特意留空） / **故障排除步骤:** 如果您手动管理 GuardDuty 安全代理，请确保按照以下步骤操作[手动管理 Amazon EC2 资源的安全代理](managing-gdu-agent-ec2-manually.md)。
  - **故障排除步骤:** 如果您启用了自动代理配置：+  您的 EC2 实例由 SSM 托管。 <br />+  定期查看安全代理的状态。有关更多信息，请参阅 [验证 GuardDuty 安全代理安装状态](installing-gdu-security-agent-ec2-manually.md#validate-ec2-gdu-agent-installation-healthy)。 
  - **故障排除步骤:** 验证 Amazon EC2 实例的 VPC 端点配置是否正确。有关更多信息，请参阅 [验证 VPC 端点配置](validate-vpc-endpoint-config-runtime-monitoring.md)。
  - **故障排除步骤:** 如果您的组织设置了服务控制策略（SCP），请验证权限边界未限制 `guardduty:SendSecurityTelemetry` 权限。有关更多信息，请参阅 [在多账户环境中验证组织服务控制策略](prereq-runtime-monitoring-ec2-support.md#validate-organization-scp-ec2)。
  - **问题消息:** 代理已断开连接 / **故障排除步骤:**  +  查看安全代理的状态。有关更多信息，请参阅 [验证 GuardDuty 安全代理安装状态](installing-gdu-security-agent-ec2-manually.md#validate-ec2-gdu-agent-installation-healthy)。 <br />+  查看安全代理日志以确定可能的根本原因。日志提供了详细的错误信息，您可以使用这些信息来自行排查问题。这些文件位于 `/var/log/amzn-guardduty-agent/` 下。 <br />完成 `sudo journalctl -u amazon-guardduty-agent`。  

- ** 未预置代理 **
  - **问题消息:** 带有排除标签的实例将排除在运行时监控之外。 / **故障排除步骤:** GuardDuty 不接收来自使用排除标签`GuardDutyManaged`:启动的 Amazon EC2 实例的运行时事件`false`。<br />要接收来自此 Amazon EC2 实例的运行时事件，请移除排除标签。
  - **问题消息:** 内核版本低于支持的版本。 / **故障排除步骤:** 有关各操作系统分发支持的内核版本的信息，请参阅[验证架构要求](prereq-runtime-monitoring-ec2-support.md#validating-architecture-req-ec2)，了解 Amazon EC2 实例。
  - **问题消息:** 内核版本高于支持的版本。 / **故障排除步骤:** 有关各操作系统分发支持的内核版本的信息，请参阅[验证架构要求](prereq-runtime-monitoring-ec2-support.md#validating-architecture-req-ec2)，了解 Amazon EC2 实例。
  - **问题消息:** 无法检索实例身份文档。 / **故障排除步骤:** 按照以下步骤进行操作：1.  确认您的资源是 Amazon EC2 实例，而不是混合的非 EC2 实例。 <br />2.  确认实例元数据服务（IMDS）已启用。为此，请参阅《Amazon EC2 用户指南》**中的[配置实例元数据服务选项](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html)。 <br />3.  验证实例身份文档是否存在。为此，请参阅《Amazon EC2 用户指南》**中的[检索实例身份文档](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/retrieve-iid.html)。 <br />4.  如果实例身份文档仍然不存在，则重启实例。实例身份文档在实例停止并启动、重新启动或启动时生成。 

- ** 创建 SSM 关联失败 **
  - **问题消息:** GuardDuty 您的账户中已存在 SSM 关联 / **故障排除步骤:**  1.  手动删除现有的关联。有关更多信息，请参阅《AWS Systems Manager 用户指南》中的[删除关联](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-state-manager-delete-association.html)**。 <br />2.  删除关联后，禁用并重新启用 Amazon EC2 的 GuardDuty 自动代理配置。  
  - **问题消息:** 您的账户有太多的 SSM 关联 / **故障排除步骤:** 请选择以下两个选项**之一**：+  删除任何未使用的 SSM 关联。有关更多信息，请参阅《AWS Systems Manager 用户指南》中的[删除关联](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-state-manager-delete-association.html)**。 <br />+  检查您的账户是否有资格申请增加配额。有关信息，请参阅《AWS 一般参考》中的 [Systems Manager Service quotas](https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm)**。 

- ** 更新 SSM 关联失败 **
  - **问题消息:** GuardDuty 您的账户中不存在 SSM 关联
  - **故障排除步骤:** GuardDuty 您的账户中没有 SSM 关联。禁用运行时监控，然后重新启用。

- ** 删除 SSM 关联失败 **
  - **问题消息:** GuardDuty 您的账户中不存在 SSM 关联
  - **故障排除步骤:** 您的账户中不存在该 SSM 关联。如果 SSM 关联已被有意删除，则无需执行任何操作。

- ** SSM 实例关联执行失败 **
  - **问题消息:** 不满足架构要求或其他先决条件。
  - **故障排除步骤:** 有关经验证的操作系统发行版的信息，请参阅 [Amazon EC2 实例支持的先决条件](prereq-runtime-monitoring-ec2-support.md)。<br />如果您仍然遇到此问题，以下步骤将有助您识别和潜在解决问题：1.  在处打开 AWS Systems Manager 控制台[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)。 <br />2.  在导航窗格中的**节点管理**下，选择**状态管理器**。 <br />3.  按**文档名称**属性筛选并输入 **AmazonGuardDuty-ConfigureRuntimeMonitoringSsmPlugin**。 <br />4.  选择相应的关联 ID 并查看其**执行历史记录**。 <br />5.  使用执行历史记录，查看失败的记录，确定可能的根本原因，然后尝试解决问题。 

- ** VPC 端点创建失败 **
  - **问题消息:** 共享 VPC 不支持创建 VPC 终端节点 {{vpcId}} / **故障排除步骤:** 运行时监控支持在组织内使用共享 VPC。有关更多信息，请参阅 [使用带运行时监控功能的共享 VPC](runtime-monitoring-shared-vpc.md)。
  - **问题消息:** **仅在将自动代理配置与共享 VPC 结合使用时**<br />共享 VPC 的所有者账户 ID {{111122223333}} {{vpcId}} 未启用运行时监控、自动代理配置，或两者都启用 / **故障排除步骤:** 共享 VPC 所有者账户必须至少为一种资源类型 [Amazon EKS 或 Amazon ECS（AWS Fargate）] 启用运行时监控和自动代理配置。有关更多信息，请参阅 [GuardDuty 运行时监控特定的先决条件](runtime-monitoring-shared-vpc.md#shared-vpc-runtime-monitoring-prereq-gd-setup)。
  - **问题消息:** 启用私有 DNS 需要同时`enableDnsSupport`将 `enableDnsHostnames` VPC 属性设置`true`为{{vpcId}}（服务：Ec2 Code:400，状态，请求 ID：{{a1b2c3d4-5678-90ab-cdef-EXAMPLE11111}}）。 / **故障排除步骤:** 确保以下 VPC 属性设置为 `true` – `enableDnsSupport` 和 `enableDnsHostnames`。有关更多信息，请参阅 [VPC 中的 DNS 属性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support)。<br />如果您使用亚马逊 VPC 控制台创建亚马逊 VPC，请同时选择 “**启用 DNS 主机名” ** 和 “启**用 DNS 解析**”。[ https://console.aws.amazon.com/vpc/ ](https://console.aws.amazon.com/vpc/)有关更多信息，请参阅 [VPC 配置选项](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html#create-vpc-options)。<br />更新 VPC 属性后，必须通过进行以下更改之一来加快 VPC 端点创建的重试速度：+  您可以为 Amazon EC2 实例添加或修改 `GuardDutyManaged` 标签（推荐）。例如，您可以添加 `GuardDutyManaged`:`true`，进而包含运行时监控的实例。 <br />+  您可以更改 Amazon EC2 实例的状态（停止或重启）。 

- **VPC 端点删除失败**
  - **问题消息:** 不允许删除账户 ID、共享 VPC {{111122223333}} {{vpcId}}、所有者账户 ID 的共享 VPC 终端节点{{555555555555}}。
  - **故障排除步骤:** +  禁用共享 VPC 参与者账户的运行时监控状态不会影响共享 VPC 端点策略和所有者账户中存在的安全组。 <br />要删除共享 VPC 端点和安全组，您必须在共享 VPC 所有者账户中禁用运行时监控或自动代理配置状态。 <br />+  共享 VPC 参与者账户无法删除共享 VPC 端点和共享 VPC 所有者账户中托管的安全组。 

- ** 代理未报告 **
  - **问题消息:** （特意留空）
  - **故障排除步骤:** 对该问题类型的支持已经终止。如果您仍然遇到此问题但尚未这样做，请为 Amazon EC2 启用 GuardDuty 自动代理。<br />如果问题仍然存在，可考虑禁用运行时监控几分钟，然后重新启用。

