

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

# 故障排除和诊断
<a name="dotnet-migrating-applications-troubleshooting"></a>

**尝试使用 Amazon Q 开发者版 CLI 进行人工智能辅助故障排除**  
 Amazon Q 开发者版 CLI 可以帮助您针对环境问题快速进行故障排除。Q CLI 可通过检查环境状态、审核事件、分析日志和询问澄清问题来提供解决方案。有关更多信息和详细演练，请参阅博客中的使用 [Amazon Q Developer CLI 对 Elastic Beanstalk 环境进行故障排除](https://www.amazonaws.cn/blogs/devops/troubleshooting-elastic-beanstalk-environments-with-amazon-q-developer-cli/)。 Amazon 

本节提供有关对 IIS 应用程序迁移到 Elastic Beanstalk 期间可能出现的常见问题进行故障排除的指导。

## 将 EC2 密钥对与您的环境相关联
<a name="dotnet-migrating-applications-troubleshooting-keypair"></a>

您可以使用亚马逊密钥对安全地登录为您的 Elastic Beanstalk 应用程序预配置的亚马逊弹性计算云 (Amazon EC2) 实例。 EC2 有关创建密钥对的说明，请参阅亚马逊* EC2 用户指南 EC2*中的[使用亚马逊创建密钥对](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/ec2-key-pairs.html#having-ec2-create-your-key-pair)。

将 keyname 指定为 **eb migrate** 的效果是，将 Elastic Beanstalk 环境与密钥对相关联。出于安全考虑，这不会在您的 EC2 实例安全组上打开端口 3389。您可以关联其他 EC2 安全组，允许端口 3389 上的流量在初始迁**eb config**移后通过。

```
PS C:\migrations_workspace> eb migrate  `
    --keyname "my-keypair"  `
    --verbose
```

当您创建密钥对时，Amazon 会 EC2 存储您的公钥副本。如果您不再需要使用它来连接任何环境实例，可以将其从 Amazon 中删除 EC2。有关详情，请参阅《*Amazon EC2 用户指南》*中的[删除您的密钥对](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/ec2-key-pairs.html#delete-key-pair)。

有关连接到 Windows 亚马逊 EC2 实例的更多信息，请参阅[连接到 Windows 实例](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/connecting_to_windows_instance.html)。

## 访问日志
<a name="dotnet-migrating-applications-troubleshooting-logs"></a>

EB CLI 提供了一种**eb logs**工具，您无需登录其实例即可使用该工具从 Elastic Beanstalk 环境中检索日志。 EC2 执行 **eb migrate** 后，您可以发出 **eb logs --zip** 命令，该命令会下载日志并将其保存到 `.elasticbeanstalk\logs` 目录中。

或者，您可以通过 E Amazon lastic Beanstalk 控制台查看日志。有关更多信息，请参阅 [查看您的 Elastic Beanstalk 环境中的 Amazon EC2 实例的日志](using-features.logging.md)。

## 访问客户端构件
<a name="dotnet-migrating-applications-troubleshooting-artifacts"></a>

**eb migrate** 命令存储由迁移构件目录内 **msdeploy** 生成的应用程序和错误日志。

```
./migrations/
├── latest -> migration_20240308_123456/
└── migration_20240308_123456/
    ├── application.log
    ├── error.log
    └── upload_target\
```

## 监控环境运行状况
<a name="dotnet-migrating-applications-troubleshooting-health"></a>

Elastic Beanstalk 通过增强型运行状况监控功能，帮助您监控运行状况。这是一个自动的运行状况监控系统，利用诸如 CPU 利用率、延迟、请求计数和响应代码之类的内置指标，持续跟踪应用程序实例的运行状态。

运行状况监控系统利用基于代理的方法来收集实例级数据，并与实时日志和警报集成。弹性负载均衡（ELB）和自动扩缩会动态响应运行状况变化，从而确保高可用性和容错能力。高级监控模式（包括增强型运行状况报告）可针对应用程序行为提供精细可见性，从而实现主动故障排除和自动恢复机制。

运行 EB CLI **eb health** 命令显示环境运行状况。将显示以下信息：
+ 实例运行状况
+ 应用程序响应指标
+ 系统资源利用率
+ 近期部署事件

## EC2 性能优化
<a name="dotnet-migrating-applications-troubleshooting-performance"></a>

默认情况下，**eb migrate** 会选择 [c5.2xlarge](https://www.amazonaws.cn/ec2/instance-types/c5/) 实例类型以提供最佳的 Elastic Beanstalk 首次使用体验。您可以用 **--instance-type** 参数覆盖此行为：

```
PS C:\migrations_workspace> eb migrate `
    --instance-type "t3.large"
```

对于生产环境，请在选择实例类型时考虑以下因素：
+ 应用程序的内存要求
+ 针对处理工作负载的 CPU 要求
+ 网络性能需求
+ 成本优化目标

## EBS 卷配置
<a name="dotnet-migrating-applications-troubleshooting-ebs"></a>

默认情况下，Elastic Beanstalk 将仅为环境创建根块设备卷 (`C:\`)。您可以通过 **--ebs-snapshots** 选项传递其他 Amazon Elastic Block Store 快照卷：

```
PS C:\migrations_workspace> eb migrate `
    --ebs-snapshots "snap-123456789abc"
```

有关如何使用 Elastic Beanstalk 配置块设备映射的示例，请参阅博客文章 [Customize Ephemeral and EBS Volumes in Elastic Beanstalk Environments](https://www.amazonaws.cn/blogs/devops/customize-ephemeral-and-ebs-volumes-in-elastic-beanstalk-environments/)。

如果是对存储要求较高的应用程序，请考虑以下选项：
+ 使用 EBS 卷存储持久性数据
+ 为静态内容实施 Amazon S3
+ 将 Amazon f FSx or Windows 文件服务器用于共享文件系统

## 常见问题和解决方案
<a name="dotnet-migrating-applications-troubleshooting-common"></a>

**事件：***Missing Web Deploy installation*

如果出现关于找不到 Web 部署的错误，请从 [Microsoft Web 平台安装程序](https://www.iis.net/downloads/microsoft/web-deploy)中安装 Web 部署 3.6 或更高版本。以下示例显示了可能出现的错误消息。

```
Couldn't find msdeploy.exe. Follow instructions here: https://learn.microsoft.com/en-us/iis/install/installing-publishing-technologies/installing-and-configuring-web-deploy
```

**事件：***Permission issues during migration*

如果出现关于权限的错误，请确保以管理权限运行 EB CLI。以下示例显示了可能出现的错误消息。

```
[ERROR] Access to the path 'C:\inetpub\wwwroot\web.config' is denied.
```

**事件：***Application pool identity issues*

如果应用程序由于应用程序池标识问题而无法启动，请创建自定义脚本来配置应用程序池身份，如[自定义应用程序池设置](dotnet-migrating-applications-advanced-scenarios.md#dotnet-migrating-applications-advanced-scenarios-apppool)中所示。

**事件：***SSL certificate configuration errors*

如果 HTTPS 绑定无法正常工作，请确保已使用 **eb mibrate** 选项 `--ssl-certificates` 参数指定有效的 ACM 证书 ARN。

**事件：***Environment creation timeout*

如果环境创建超时，请在 Amazon 管理控制台中检查 Amazon CloudFormation 事件以了解特定的资源创建失败。常见原因包括 VPC 配置问题或服务限制。

## 获取支持
<a name="dotnet-migrating-applications-troubleshooting-support"></a>

如果您遇到无法解决的问题，请在联系之前 Amazon Web Services 支持 收集以下信息：
+ 环境 ID (`eb status`)
+ 应用程序日志 (`eb logs --zip`)
+ `.\migrations\latest\` 中的迁移构件
+ 源 IIS 配置（`eb migrate explore --verbose` 输出）
+ 详细错误消息

有关 Elastic Beanstalk 故障排除的更多信息，请参阅[排查 Elastic Beanstalk 环境的问题](troubleshooting.md)。