

# CloudWatch 解决方案：Amazon EC2 上的 Tomcat 工作负载
EC2 上的 Tomcat 工作负载

此解决方案可帮助您使用 CloudWatch 代理为在 EC2 实例上运行的 Tomcat 服务器配置开箱即用的指标收集。此外，它还可以帮助您设置预配置的 CloudWatch 控制面板。有关所有 CloudWatch 可观测性解决方案的一般信息，请参阅 [CloudWatch 可观测性解决方案](Monitoring-Solutions.md)。

**Topics**
+ [

## 要求
](#Solution-Tomcat-On-EC2-Requirements)
+ [

## 优势
](#Solution-Tomcat-On-EC2-Benefits)
+ [

## 成本
](#Solution-Tomcat-On-EC2-Costs)
+ [

## 此解决方案的 CloudWatch 代理配置
](#Solution-Tomcat-CloudWatch-Agent)
+ [

## 为您的解决方案部署代理
](#Solution-Tomcat-Agent-Deploy)
+ [

## 创建 Tomcat 解决方案控制面板
](#Solution-Tomcat-Dashboard)

## 要求


此解决方案适用于以下情况：
+ 支持的版本：Tomcat 版本 9、10.1 和 11（测试版）
+ 计算：Amazon EC2
+ 在给定的 AWS 区域中跨所有 Tomcat 工作负载支持最多 500 个 EC2 实例
+ 最新版本的 CloudWatch 代理
+ EC2 实例上已安装 SSM 代理
**注意**  
AWS Systems Manager（SSM Agent）预装在由 AWS 和受信任的第三方提供的一些[亚马逊机器映像（AMI）](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html)上。如果未安装代理，您可以根据操作系统类型使用程序手动安装。  
[在适用于 Linux 的 EC2 实例上手动安装和卸载 SSM 代理](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html)
[在适用于 macOS 的 EC2 实例上手动安装和卸载 SSM 代理](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-macos.html)
[在适用于 Windows Server 的 EC2 实例上手动安装和卸载 SSM 代理](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-windows.html)

## 优势


该解决方案提供 Tomcat 服务器监测，为以下用例提供宝贵的见解：
+ 检测 Tomcat 服务器错误和性能问题。
+ 监测网络流量的数据传输问题。
+ 跟踪线程使用情况和活动用户会话。
+ 分析 Tomcat 服务器的底层 JVM 性能。

以下是该解决方案的主要优点：
+ 使用 CloudWatch 代理配置自动收集 Apache Tomcat 和底层 JVM 指标，无需手动检测。
+ 为 Apache Tomcat 和 JVM 指标提供预配置的整合 CloudWatch 控制面板。控制面板将自动处理使用该解决方案配置的新 Tomcat EC2 实例的指标，即使这些指标在您首次创建控制面板时不存在。它还允许您将指标分组为逻辑应用程序，以便于关注和管理。

下图是此解决方案控制面板的示例。

![\[Apache Tomcat 解决方案的示例控制面板。\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/monitoring/images/TomcatDashboard.png)


## 成本


此解决方案在您的账户中创建和使用资源。您需要为标准使用量付费，包括以下各项：
+ CloudWatch 代理收集的所有指标按自定义指标收费。此解决方案使用的指标数量取决于 EC2 主机的数量。
  + 为解决方案配置的每台 Tomcat 主机发布总共 27 个指标，外加一个指标（`disk_used_percent`），指标数量取决于该主机的磁盘路径数量。
+ 一个自定义控制面板。
+ CloudWatch 代理请求用于发布指标的 API 操作。使用此解决方案的默认配置，CloudWatch 代理每分钟调用一次 **PutMetricData**。这意味着每台 EC2 主机将在 30 天（一个月）内调用 **PutMetricData** API `30*24*60=43,200` 次。

有关 CloudWatch 定价的信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)。

定价计算器可帮助您估算使用此解决方案的每月大致费用。

**使用定价计算器估算每月解决方案成本**

1. 打开 [Amazon CloudWatch 定价计算器](https://calculator.aws/#/createCalculator/CloudWatch)。

1. 在**指标**部分中，对于**指标数量**，输入 **(27 \$1 average number of disk paths per EC2 host) \$1 number of EC2 instances configured for this solution**。

1. 在 **API** 部分中，对于 **API 请求的数量**，输入 **43200 \$1 number of EC2 instances configured for this solution**。

   默认情况下，该解决方案每分钟为每台 EC2 主机执行一次 **PutMetricData** 操作。

1. 在**控制面板和警报**部分中，对**控制面板数量**输入 **1**。

1. 您可以在定价计算器底部查看每月估算成本。

## 此解决方案的 CloudWatch 代理配置


CloudWatch 代理是在您的服务器和容器化环境中持续自主运行的软件。它从您的基础设施和应用程序收集指标、日志和跟踪，并将其发送到 CloudWatch 和 X-Ray。

有关 CloudWatch 代理的更多信息，请参阅[使用 CloudWatch 代理采集指标、日志和跟踪数据](Install-CloudWatch-Agent.md)。

此解决方案中的代理配置收集 Tomcat、JVM 和 EC2 的基础指标。可以将 CloudWatch 代理配置为收集比控制面板默认显示更多的 JVM 指标。有关您可以收集的所有 Tomcat 指标的列表，请参阅 [收集 Tomcat 指标](CloudWatch-Agent-JMX-metrics.md#CloudWatch-Agent-Tomcat-metrics)。有关您可以收集的所有 JVM 指标的列表，请参阅 [收集 JVM 指标](CloudWatch-Agent-JMX-metrics.md#CloudWatch-Agent-JVM-metrics)。有关 Amazon EC2 指标的列表，请参阅 [Linux 和 macOS 实例上的 CloudWatch 代理收集的指标](metrics-collected-by-CloudWatch-agent.md#linux-metrics-enabled-by-CloudWatch-agent)。

**公开 Tomcat 服务器的 JMX 端口**

CloudWatch 代理依靠 JMX 来收集与 Tomcat 服务器和 JVM 进程相关的指标。要做到这一点，必须公开服务器的 JMX 端口。要启用 JMX 端口进行监测和管理，您需要设置 Tomcat 服务器的系统属性。您可以使用环境变量 `CATALINA_OPTS ` 设置 Tomcat 所需的系统属性。查看 Tomcat 服务器的启动脚本和配置文件，了解设置环境变量的最佳位置。请务必指定未使用的端口号。更改后，您需要重启服务器。

```
export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=<<port-number>> -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
```

此示例设置未经身份验证的 JMX。如果您的安全策略/要求需要使用密码身份验证启用 JMX 或 SSL 进行远程访问，请参阅 [JMX 文档](https://docs.oracle.com/en/java/javase/17/management/monitoring-and-management-using-jmx-technology.html)以设置所需的属性。

要验证 JMX 端口，请运行 `ps aux | grep jmxremote.port`。结果应显示已在 JVM 进程上设置了 JMX 端口。

### Tomcat 解决方案的代理配置


代理收集的指标在代理配置中定义。该解决方案提供代理配置，以收集建议的指标，并为解决方案的控制面板提供合适的维度。

稍后将在[为您的解决方案部署代理](#Solution-Tomcat-Agent-Deploy)中介绍部署解决方案的步骤。以下信息旨在帮助您了解如何针对环境自定义代理配置。

您必须针对自己的环境自定义以下代理配置的某些部分：
+ JMX 端口号是您在本文档上一节中配置的端口号。端口号位于配置的 `endpoint` 行中。
+ `AppName`：此项用作收集的 Tomcat 应用程序指标的维度。提供一个有意义的名称，代表运行 Tomcat 应用程序的实例的分组。
+ `ProcessGroupName`：此项用作为 Tomcat 主机收集的 JVM 指标的维度。提供与上面的 `AppName` 相同的值。这是为了能够在解决方案控制面板下查看与服务器指标相同的 Tomcat 应用程序组的 JVM 指标。

例如，如果您在同一个 AWS 账户中运行两个 Tomcat 应用程序，一个用于 `billing-system` 应用程序，另一个用于 `order-system` 应用程序，则可以在每个实例的代理配置中相应地设置 `AppName` 和 `ProcessGroupName` 维度。
+ 对于 `billing-system` 应用程序实例，设置 `AppName=billing-system` 和 `ProcessGroupName=billing-system`。
+ 对于 `order-system` 应用程序实例，设置 `AppName=order-system` 和 `ProcessGroupName=order-system`。

当您遵循这些准则时，解决方案将自动根据 `AppName` 和 `ProcessGroupName` 维度对指标进行分组。控制面板将包括下拉选项，用于选择和查看特定 Tomcat 应用程序的指标，从而允许您单独监测各应用程序的性能。

### Tomcat 主机的代理配置


在部署 Tomcat 应用程序的 EC2 实例上使用以下 CloudWatch 代理配置。配置将作为参数存储在 SSM 的 Parameter Store 中，稍后将在[步骤 2：在 Systems Manager Parameter Store 中存储建议的 CloudWatch 代理配置文件](#Solution-Tomcat-Agent-Step2)中详细介绍。

将 *AppName* 替换为一个有意义的名称，该名称代表实例所属的 Tomcat 应用程序。将 *port-number* 替换为 Tomcat 服务器的 JMX 端口。如果 JMX 启用了密码身份验证或 SSL 以进行远程访问，请参阅 [收集 Java 管理扩展（JMX）指标](CloudWatch-Agent-JMX-metrics.md)，了解有关根据需要在代理配置中设置 TLS 或授权的信息。

此配置（在 JMX 区块之外显示的配置）中显示的 EC2 指标仅适用于 Linux 和 macOS 实例。如果您使用的是 Windows 实例，则可以选择在配置中省略这些指标。有关在 Windows 实例上收集的指标的信息，请参阅 [Windows Server 实例上的 CloudWatch 代理收集的指标](metrics-collected-by-CloudWatch-agent.md#windows-metrics-enabled-by-CloudWatch-agent)。

```
{
  "metrics": {
    "namespace": "CWAgent",
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "jmx": [
        {
          "endpoint": "localhost:port-number",
          "tomcat": {
            "measurement": [
              "tomcat.sessions",
              "tomcat.errors",
              "tomcat.processing_time",
              "tomcat.traffic",
              "tomcat.max_time",
              "tomcat.request_count",
              "tomcat.threads"
            ]
          },
          "append_dimensions": {
            "AppName": "AppName"
          }
        },
        {
          "endpoint": "localhost:port-number",
          "jvm": {
            "measurement": [
              "jvm.classes.loaded",
              "jvm.gc.collections.count",
              "jvm.gc.collections.elapsed",
              "jvm.memory.heap.committed",
              "jvm.memory.heap.max",
              "jvm.memory.heap.used",
              "jvm.memory.nonheap.committed",
              "jvm.memory.nonheap.max",
              "jvm.memory.nonheap.used",
              "jvm.threads.count"
            ]
          },
          "append_dimensions": {
            "ProcessGroupName": "AppName"
          }
        }
      ],
      "disk": {
        "measurement": [
          "used_percent"
        ]
      },
      "mem": {
        "measurement": [
          "used_percent"
        ]
      },
      "swap": {
        "measurement": [
          "used_percent"
        ]
      },
      "netstat": {
        "measurement": [
          "tcp_established",
          "tcp_time_wait"
        ]
      }
    }
  }
}
```

## 为您的解决方案部署代理


安装 CloudWatch 代理有几种方法，具体视用例而定。对于此解决方案，我们建议使用 Systems Manager。它提供了控制台体验，使在单个 AWS 账户中管理一组托管服务器变得更加简单。本节中的说明使用 Systems Manager，适用于没有使用现有配置运行 CloudWatch 代理的情况。您可以按照[验证 CloudWatch 代理是否正在运行](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running)中的步骤检查 CloudWatch 代理是否正在运行。

如果您已经在部署 JVM 应用程序的 EC2 主机上运行 CloudWatch 代理并管理代理配置，则可以跳过本节中的说明并按照现有部署机制更新配置。请务必将 JVM 的代理配置与现有的代理配置合并，然后部署合并的配置。如果您使用 Systems Manager 存储和管理 CloudWatch 代理的配置，则可以将配置合并到现有参数值。有关更多信息，请参阅 [Managing CloudWatch agent configuration files](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/create-store-cloudwatch-configurations.html)。

**注意**  
使用 Systems Manager 部署以下 CloudWatch 代理配置，将替换或覆盖 EC2 实例上任何现有的 CloudWatch 代理配置。您可以修改此配置以适应您独有的环境或用例。此解决方案中定义的指标是建议控制面板所需的最低要求。

部署过程包括以下步骤：
+ 步骤 1：确保目标 EC2 实例具有所需的 IAM 权限。
+ 步骤 2：在 Systems Manager Parameter Store 中存储建议的代理配置文件。
+ 步骤 3：使用 CloudFormation 堆栈在一个或多个 EC2 实例上安装 CloudWatch 代理。
+ 步骤 4：验证代理设置是否正确配置。

### 步骤 1：确保目标 EC2 实例具有所需的 IAM 权限


您必须授予 Systems Manager 安装和配置 CloudWatch 代理的权限。您还必须授予 CloudWatch 代理将遥测数据从 EC2 实例发布到 CloudWatch 的权限。确保附加到实例的 IAM 角色已附加 **CloudWatchAgentServerPolicy** 和 **AmazonSSMManagedInstanceCore** IAM 策略。
+ 创建角色后，将该角色附加到 EC2 实例。在启动新的 EC2 实例时，按照[启动带有 IAM 角色的实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#launch-instance-with-role)中的步骤进行操作以附加角色。要将角色附加到现有 EC2 实例，请按照[将 IAM 角色附加到实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role)中的步骤进行操作。

### 步骤 2：在 Systems Manager Parameter Store 中存储建议的 CloudWatch 代理配置文件


Parameter Store 通过安全地存储和管理配置参数，简化了 CloudWatch 代理在 EC2 实例上的安装，而无需硬编码值。这可确保更加安全灵活的部署过程，从而实现集中管理，并且可以更轻松地跨多个实例更新配置。

使用以下步骤将建议的 CloudWatch 代理配置文件作为参数存储在 Parameter Store 中。

**创建 CloudWatch 代理配置文件作为参数**

1. 访问 [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)，打开 AWS Systems Manager 控制台。

1. 从导航窗格中，依次选择**应用程序管理**、**Parameter Store**。

1. 按照以下步骤为配置创建新参数。

   1. 选择**创建参数**。

   1. 在**名称**框中，输入您将在后续步骤中用来引用 CloudWatch 代理配置文件的名称。例如 **AmazonCloudWatch-Tomcat-Configuration**。

   1. (可选）在**描述**框中，键入参数的描述。

   1. 对于**参数层**，选择**标准**。

   1. 对于**类型**，选择**字符串**。

   1. 对于**数据类型**，选择**文本**。

   1. 在**值**框中，粘贴 [Tomcat 主机的代理配置](#Solution-Agent-Configuration-Tomcat-Host)中列出的相应 JSON 块。请务必按照所述自定义分组维度值和端口号。

   1. 选择**创建参数**。

### 步骤 3：安装 CloudWatch 代理并使用 CloudFormation 模板应用配置


您可以使用 AWS CloudFormation 安装代理，并将其配置为使用您在前面步骤中创建的 CloudWatch 代理配置。

**为此解决方案安装和配置 CloudWatch 代理**

1. 使用以下链接打开 CloudFormation **快速创建堆栈**向导：[https://console.aws.amazon.com/cloudformation/home?\$1/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json)。

1. 确认控制台上的所选区域是运行 Tomcat 工作负载的区域。

1. 对于**堆栈名称**，输入用于识别此堆栈的名称，如 **CWAgentInstallationStack**。

1. 在**参数**部分中，指定以下各项：

   1. 对于 **CloudWatchAgentConfigSSM**，请输入您之前创建的代理配置的 Systems Manager 参数名称，例如 **AmazonCloudWatch-Tomcat-Configuration**。

   1. 要选择目标实例，您有两种选择。

      1. 对于 **InstanceIds**，请指定一个以逗号分隔的实例 ID 列表，其中包含希望使用此配置安装 CloudWatch 代理的实例 ID。您可以列出一个或多个实例。

      1. 如果要大规模部署，则可以指定 **TagKey** 和相应的 **TagValue**，以将具有此标签和值的所有 EC2 实例作为目标。如果指定 **TagKey**，则必须指定相应的 **TagValue**。（对于自动扩缩组，为 **TagKey** 指定 **aws:autoscaling:groupName** 并为 **TagValue** 指定自动扩缩组名称，以部署到自动扩缩组内的所有实例。）

         如果同时指定了 **InstanceIds** 和 **TagKeys** 参数，将优先采用 **InstanceIds**，而标签将被忽略。

1. 检查设置，然后选择**创建堆栈**。

如果要先编辑模板文件进行自定义，请选择**创建堆栈向导**下的**上传模板文件**选项，上传编辑后的模板。有关更多信息，请参阅[在 CloudFormation 控制台上创建堆栈](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)。您可以使用以下链接下载模板：[https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json](https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json)。

**注意**  
完成此步骤后，此 Systems Manager 参数将与目标实例中运行的 CloudWatch 代理相关联。这意味着：  
如果删除 Systems Manager 参数，代理将停止。
如果编辑了 Systems Manager 参数，则配置更改将按计划频率（默认为 30 天）自动应用到代理。
如果要立即应用对此 Systems Manager 参数的更改，则必须再次运行此步骤。有关关联的更多信息，请参阅[在 Systems Manager 中使用关联](https://docs.aws.amazon.com/systems-manager/latest/userguide/state-manager-associations.html)。

### 步骤 4：验证代理设置是否正确配置


您可以按照[验证 CloudWatch 代理是否正在运行](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running)中的步骤验证 CloudWatch 代理是否已安装。如果 CloudWatch 代理尚未安装和运行，请确保已正确设置所有内容。
+ 请确保您已为 EC2 实例附加具有正确权限的角色，如[步骤 1：确保目标 EC2 实例具有所需的 IAM 权限](#Solution-Tomcat-Agent-Step1)中所述。
+ 请确保您已正确配置 Systems Manager 参数的 JSON。按照 [对利用 CloudFormation 的 CloudWatch 代理安装进行故障排除](Install-CloudWatch-Agent-New-Instances-CloudFormation.md#CloudWatch-Agent-CloudFormation-troubleshooting) 中的步骤操作。

如果一切设置正确，那么您应该会看到 Tomcat 指标发布到 CloudWatch。您可以查看 CloudWatch 控制台以验证这些指标是否已发布。

**验证 Tomcat 指标是否已发布到 CloudWatch**

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 选择**指标**、**所有指标**。

1. 确保您已选择部署解决方案的区域，然后选择**自定义命名空间**、**CWAgent**。

1. 搜索本文档代理配置部分中提及的指标，例如 `tomcat.errors`。如果您看到这些指标的结果，则表明这些指标已发布到 CloudWatch。

## 创建 Tomcat 解决方案控制面板


此控制面板显示新发出的指标，同时显示 Tomcat 应用服务器和底层 JVM。此控制面板提供了 Tomcat 工作负载运行状况的排名靠前的贡献者视图。排名靠前的贡献者视图显示每个指标的前 10 名小部件。这样就能一眼识别出异常值。该控制面板还通过聚合和显示所有实例的指标来提供集群概览，从而提供集群总体运行状况和运行状态的高级摘要。

解决方案控制面板不显示 EC2 指标。要查看 EC2 指标，您需要使用 EC2 自动控制面板查看 EC2 公开发布的指标，并使用 EC2 控制台控制面板查看 CloudWatch 代理收集的 EC2 指标。有关 AWS 服务自动控制面板的更多信息，请参阅[查看单项 AWS 服务的 CloudWatch 控制面板](CloudWatch_Automatic_Dashboards_Focus_Service.md)。

要创建控制面板的操作，可以使用以下选项：
+ 使用 CloudWatch 控制台创建控制面板。
+ 使用 AWS CloudFormation 控制台部署控制面板。
+ 以 AWS CloudFormation 基础设施即代码，并将其作为持续集成（CI）自动化的一部分进行集成。

通过使用 CloudWatch 控制台创建控制面板，您可以在实际创建和收费之前预览控制面板。

**注意**  
此解决方案中使用 CloudFormation 创建的控制面板显示解决方案部署区域的指标。请务必在发布 Tomcat 指标的区域创建 CloudFormation 堆栈。  
如果您在 CloudWatch 代理配置中指定了 `CWAgent` 以外的自定义命名空间，则必须更改控制面板的 CloudFormation 模板，将 `CWAgent` 替换为您使用的自定义命名空间。

**使用 CloudWatch 控制台创建控制面板**
**注意**  
解决方案控制面板目前仅显示 G1 Garbage Collector 的垃圾回收相关指标，G1 Garbage Collector 是最新 Java 版本的默认收集器。如果您使用的是不同的垃圾回收算法，则与垃圾回收相关的小部件为空。但是，您可以通过更改控制面板 CloudFormation 模板，并将相应的垃圾回收类型应用于垃圾回收相关指标的名称维度来自定义这些小部件。例如，如果您使用的是并行垃圾回收，请将垃圾回收计数指标 `jvm.gc.collections.count` 从 **name=\$1"G1 Young Generation\$1"** 更改为 **name=\$1"Parallel GC\$1"**。

1. 使用以下链接打开 CloudWatch 控制台**创建控制面板**：[https://console.aws.amazon.com/cloudwatch/home?\$1dashboards?dashboardTemplate=ApacheTomcatOnEc2&referrer=os-catalog](https://console.aws.amazon.com/cloudwatch/home?#dashboards?dashboardTemplate=ApacheTomcatOnEc2&referrer=os-catalog)。

1. 确认控制台上的所选区域是运行 Tomcat 工作负载的区域。

1. 输入控制面板的名称，然后选择**创建控制面板**。

   为了便于将此控制面板与其他区域的类似控制面板区分开来，我们建议在控制面板名称中包含区域名称，例如 **TomcatDashboard-us-east-1**。

1. 预览控制面板并选择**保存**以创建控制面板。

**通过 CloudFormation 创建控制面板**

1. 使用以下链接打开 CloudFormation **快速创建堆栈**向导：[https://console.aws.amazon.com/cloudformation/home?\$1/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/Tomcat\$1EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/Tomcat_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json)。

1. 确认控制台上的所选区域是运行 Tomcat 工作负载的区域。

1. 对于**堆栈名称**，输入用于识别此堆栈的名称，如 **TomcatDashboard-us-east-1**。

1. 在**参数**部分，在 **DashboardName** 参数下指定控制面板的名称。

1. 为了便于将此控制面板与其他区域的类似控制面板区分开来，我们建议在控制面板名称中包含区域名称，例如 **TomcatDashboard-us-east-1**。

1. 在**功能和转换**下确认转换的访问功能。请注意，CloudFormation 不会添加任何 IAM 资源。

1. 检查设置，然后选择**创建堆栈**。

1. 堆栈状态为 **CREATE\$1COM PLETE** 后，选择创建的堆栈下的**资源**选项卡，然后选择**物理 ID** 下的链接转至控制面板。您也可以通过在控制台左侧导航窗格中选择**控制面板**，然后在**自定义控制面板**下找到控制面板名称，在 CloudWatch 控制台中访问控制面板。

如果要编辑模板文件以出于任何目的对其进行自定义，则可以使用**创建堆栈向导**下的**上传模板文件**选项来上传编辑后的模板。有关更多信息，请参阅[在 CloudFormation 控制台上创建堆栈](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)。您可以使用以下链接下载模板：[https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/Tomcat\$1EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json](https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/Tomcat_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json)。

**注意**  
解决方案控制面板目前仅显示 G1 Garbage Collector 的垃圾回收相关指标，G1 Garbage Collector 是最新 Java 版本的默认收集器。如果您使用的是不同的垃圾回收算法，则与垃圾回收相关的小部件为空。但是，您可以通过更改控制面板 CloudFormation 模板，并将相应的垃圾回收类型应用于垃圾回收相关指标的名称维度来自定义这些小部件。例如，如果您使用的是并行垃圾回收，请将垃圾回收计数指标 `jvm.gc.collections.count` 从 **name=\$1"G1 Young Generation\$1"** 更改为 **name=\$1"Parallel GC\$1"**。

### 开始使用 Tomcat 监测控制面板


您可以使用新的 Tomcat 控制面板尝试以下几项任务。这些任务允许您验证控制面板是否正常运行，并为您提供使用它来监测 Tomcat 应用程序的一些实践经验。在尝试这些任务的过程中，您将熟悉如何浏览控制面板和解读可视化指标。

**使用下拉列表**

控制面板顶部提供了下拉列表，可以用来筛选和选择要监测的特定 Tomcat 应用程序。要显示特定 Tomcat 应用程序的指标，请在 **Tomcat 应用程序**下拉列表中选择该应用程序的名称。

**验证应用程序运行状况**

从**应用程序概览**部分，找到**请求**、**错误**和**错误率**小部件。这些小部件提供应用程序请求处理性能的高级概要。查找任何异常高的错误计数或错误率，这可能表明存在需要调查的问题。

**监测请求处理情况**

在**请求处理时间**部分，找到**最长时间**和**处理所有请求的总时间**小部件。这些指标可帮助您确定请求处理中潜在的性能瓶颈。查找与其他服务器相比，其最长处理时间要长得多的服务器。

**分析网络流量**

在**网络流量**部分，找到**已发送流量**和**已接收流量**小部件。这些小部件显示应用程序通过网络发送和接收的数据量。意外的高流量水平可能表明网络饱和或数据传输效率低下等潜在问题。

**调查线程使用情况**

在**会话和线程**部分，找到**繁忙线程数**、**线程数**和**会话数**小部件。这些指标可以深入了解应用程序的线程管理和活跃的用户会话。查找任何繁忙线程或会话数量异常多的服务器，这可能表明存在潜在的资源限制。