

# CloudWatch ソリューション: Amazon EC2 での Tomcat ワークロード
<a name="Solution-Tomcat-On-EC2"></a>

このソリューションは、EC2 インスタンスで実行されている Tomcat サーバー用の CloudWatch エージェントを使用して、すぐに使用できるメトリクス収集を設定するのに役立ちます。さらに、事前設定された 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)

## 要件
<a name="Solution-Tomcat-On-EC2-Requirements"></a>

このソリューションは、以下の条件に適しています。
+ サポートされているバージョン: Tomcat バージョン 9、10.1、および 11 (ベータ)
+ コンピューティング: Amazon EC2
+ 特定の AWS リージョン内の Tomcat ワークロード全体で最大 500 個の EC2 インスタンスをサポート
+ CloudWatch エージェントの最新バージョン
+ EC2 インスタンスにインストールされた SSM エージェント
**注記**  
AWS Systems Manager (SSM エージェント) は、AWS および信頼できるサードパーティーが提供している一部の [Amazon マシンイメージ (AMI)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) にプリインストールされています。エージェントがインストールされていない場合は、使用しているオペレーティングシステムタイプの手順を使用して、手動でインストールできます。  
[Linux 用 EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html)
[macOS 用の EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-macos.html)
[Windows Server 用の EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-windows.html)

## 利点
<a name="Solution-Tomcat-On-EC2-Benefits"></a>

このソリューションでは Tomcat サーバーをモニタリングしているため、以下のユースケースに役立つインサイトが得られます。
+ Tomcat サーバーのエラーとパフォーマンスの問題を検出します。
+ データ転送の問題がないかネットワークトラフィックをモニタリングします。
+ スレッドの使用状況とアクティブなユーザーセッションを追跡します。
+ Tomcat サーバーの基盤となる JVM のパフォーマンスを分析します。

ソリューションの主な利点を以下に示します。
+ CloudWatch エージェント設定を使用して Apache Tomcat と基盤となる JVM のメトリクス収集を自動化し、手動計測をなくします。
+ Apache Tomcat メトリクスと JVM メトリクス用の事前設定済みの統合 CloudWatch ダッシュボードが用意されています。ダッシュボードは、ダッシュボードを初めて作成するときにメトリクスが存在しない場合でも、ソリューションを使用して設定された新しい Tomcat EC2 インスタンスからのメトリクスを自動的に処理します。また、メトリクスを論理アプリケーションにグループ化して、重点の絞り込みと管理を容易にすることもできます。

以下の画像は、このソリューションのダッシュボードの例です。

![\[Apache Tomcat ソリューションのダッシュボードの例。\]](http://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/images/TomcatDashboard.png)


## コスト
<a name="Solution-Tomcat-On-EC2-Costs"></a>

このソリューションは、アカウントでリソースを作成して使用します。標準使用には料金がかかります。これには以下を含みます。
+ CloudWatch エージェントによって収集されたすべてのメトリクスは、カスタムメトリクスとして課金されます。このソリューションで使用されるメトリクスの数は、EC2 ホストの数によって異なります。
  + ソリューション用に設定された各 Tomcat ホストは、合計 27 個のメトリクスと、そのホストのディスクパスの数によってメトリクス数が異なる 1 つのメトリクス (`disk_used_percent`) を公開します。
+ 1 つのカスタムダッシュボード。
+ CloudWatch エージェントによってメトリクスの公開がリクエストされた API オペレーション。このソリューションのデフォルト設定では、CloudWatch エージェントは毎分 1 回 **PutMetricData** を呼び出します。つまり、**PutMetricData** API は EC2 ホストごとに 30 日の月には `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 ホストごとに毎分 1 回 **PutMetricData** オペレーションを実行します。

1. **[ダッシュボードとアラーム]** セクションの **[ダッシュボードの数]** に「**1**」と入力します。

1. 毎月の見積コストは、料金計算ツールの下部に表示されます。

## このソリューションの CloudWatch エージェント設定
<a name="Solution-Tomcat-CloudWatch-Agent"></a>

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` を実行します。結果は、JMX ポートが JVM プロセスで設定されたことを示すはずです。

### Tomcat ソリューションのエージェント設定
<a name="Solution-Agent-Configuration-Tomcat-Solution"></a>

エージェントによって収集されるメトリクスは、エージェント設定で定義されます。このソリューションには、ソリューションのダッシュボードに適したディメンションで推奨メトリクスを収集するためのエージェント設定が用意されています。

ソリューションをデプロイする手順については、「[ソリューションにエージェントをデプロイする](#Solution-Tomcat-Agent-Deploy)」で後述します。以下の情報は、環境に合わせてエージェント設定をカスタマイズする方法を理解するのに役立ちます。

環境に合わせて、次のエージェント設定の一部をカスタマイズする必要があります。
+ JMX ポート番号は、このドキュメントの前のセクションで設定したポート番号です。ポート番号は設定の `endpoint` 行にあります。
+ `AppName` – これは、収集された Tomcat アプリケーションメトリクスのディメンションとして使用されます。Tomcat アプリケーションを実行するインスタンスのグループを表す意味のある名前を指定します。
+ `ProcessGroupName` – これは、Tomcat ホスト用に収集された JVM メトリクスのディメンションとして使用されます。上記の `AppName` と同じ値を指定します。これは、ソリューションダッシュボードのサーバーメトリクスとして、同じ Tomcat アプリケーショングループの JVM メトリクスを表示できるようにするためです。

例えば、同じ AWS アカウント で実行されている Tomcat アプリケーションが 2 つあり、1 つは `billing-system` アプリケーション用、もう 1 つは `order-system` アプリケーション用である場合、それに応じて各インスタンスのエージェント設定で `AppName` と `ProcessGroupName` ディメンションを設定できます。
+ `billing-system` アプリケーションインスタンスには、`AppName=billing-system` と `ProcessGroupName=billing-system` を設定します。
+ `order-system` アプリケーションインスタンスには、`AppName=order-system` と `ProcessGroupName=order-system` を設定します。

これらのガイドラインに従うと、ソリューションによって `AppName` ディメンションと `ProcessGroupName` ディメンションに基づいてメトリクスが自動的にグループ化されます。ダッシュボードには、特定の Tomcat アプリケーションのメトリクスを選択および表示するドロップダウンオプションが含まれており、個々のアプリケーションのパフォーマンスを個別にモニタリングできます。

### Tomcat ホストのエージェント設定
<a name="Solution-Agent-Configuration-Tomcat-Host"></a>

Tomcat アプリケーションがデプロイされている EC2 インスタンスでは、次の CloudWatch エージェント設定を使用します。設定は、「[ステップ 2: 推奨 CloudWatch エージェント設定ファイルを Systems Manager パラメータストアに保存する](#Solution-Tomcat-Agent-Step2)」で後述するように、SSM のパラメータストアにパラメータとして保存されます。

*AppName* を、インスタンスが属する Tomcat アプリケーションを表す意味のある名前に置き換えます。*port-number* を Tomcat サーバーの JMX ポートに置き換えます。JMX がリモートアクセス用のパスワード認証または SSL で有効になっている場合は、必要に応じて、エージェント設定で TLS または認証を設定する方法について「[Java Management Extensions (JMX) メトリクスの収集](CloudWatch-Agent-JMX-metrics.md)」を参照してください。

この設定 (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"
        ]
      }
    }
  }
}
```

## ソリューションにエージェントをデプロイする
<a name="Solution-Tomcat-Agent-Deploy"></a>

ユースケースに応じて、CloudWatch エージェントをインストールするためのいくつかのアプローチがあります。このソリューションには Systems Manager を使用することをお勧めします。これにより、コンソール操作機能が提供され、1 つの AWS アカウント内のマネージドサーバーのフリートの管理が簡単になります。このセクションの手順では Systems Manager を使用し、CloudWatch エージェントを既存の設定で実行していない場合を想定しています。CloudWatch エージェントが実行されているかどうかは、「[CloudWatch エージェントが実行されていることを確認する](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running)」の手順に従って確認できます。

JVM アプリケーションがデプロイされている EC2 ホストで CloudWatch エージェントを既に実行していて、エージェント設定を管理している場合は、このセクションの手順をスキップし、既存のデプロイメカニズムに従って設定を更新できます。JVM のエージェント設定を既存のエージェント設定とマージしてから、マージされた設定をデプロイするようにしてください。Systems Manager を使用して CloudWatch エージェントの設定を保存および管理している場合は、設定を既存のパラメータ値にマージできます。詳細については、「[CloudWatch エージェント設定ファイルの管理](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 パラメータストアに保存します。
+ ステップ 3: CloudFormation スタックを使用して 1 つまたは複数の EC2 インスタンスに CloudWatch エージェントをインストールします。
+ ステップ 4: エージェントのセットアップが正しく設定されていることを確認します。

### ステップ 1: ターゲット EC2 インスタンスに必要な IAM アクセス許可があることを確認する
<a name="Solution-Tomcat-Agent-Step1"></a>

CloudWatch エージェントをインストールして設定するためのアクセス許可を Systems Manager に付与する必要があります。また、EC2 インスタンスから CloudWatch にテレメトリを発行するアクセス許可を 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: 推奨 CloudWatch エージェント設定ファイルを Systems Manager パラメータストアに保存する
<a name="Solution-Tomcat-Agent-Step2"></a>

パラメータストアでは、設定パラメータを安全に保存および管理することで EC2 インスタンスへの CloudWatch エージェントのインストールが簡素化され、ハードコーディングされた値が不要になります。これにより、デプロイプロセスがより安全で柔軟になり、集中管理が可能になり、複数のインスタンスで設定を簡単に更新できるようになります。

以下の手順を使用して、パラメータストアに推奨 CloudWatch エージェント設定ファイルをパラメータとして保存します。

**CloudWatch エージェント設定ファイルをパラメータとして作成するには**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで **[アプリケーション管理]**、**[パラメータストア]** を選択します。

1. 以下の手順に従って、設定の新しいパラメータを作成します。

   1. **[パラメータの作成]** を選択します。

   1. **[名前]** ボックスに、後のステップで CloudWatch エージェント設定ファイルを参照するために使用する名前を入力します。例えば、**AmazonCloudWatch-Tomcat-Configuration**。

   1. (オプション) **[説明]** ボックスにパラメータの説明を入力します。

   1. **[パラメータ階層]** で、**[標準]** を選択します。

   1. **[型]** で、**[文字列]** を選択します。

   1. **[データ型]** で、**[テキスト]** を選択します。

   1. **[値]** ボックスに、[Tomcat ホストのエージェント設定](#Solution-Agent-Configuration-Tomcat-Host) にリストされた対応する JSON ブロックを貼り付けます。説明に従って、グループ化ディメンション値とポート番号を必ずカスタマイズしてください。

   1. **[パラメータの作成]** を選択します。

### ステップ 3: CloudWatch エージェントをインストールし、CloudFormation テンプレートを使用して設定を適用する
<a name="Solution-Tomcat-Agent-Step3"></a>

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]** に、**AmazonCloudWatch-Tomcat-Configuration** など、前に作成したエージェント設定の Systems Manager パラメータの名前を入力します。

   1. ターゲットインスタンスを選択するには、2 つのオプションがあります。

      1. **[InstanceIds]** に、この設定で CloudWatch エージェントをインストールするインスタンス ID のカンマ区切りリストを指定します。1 つのインスタンスまたは複数のインスタンスを一覧表示できます。

      1. 大規模にデプロイする場合は、**[TagKey]** とそれに対応する **[TagValue]** を指定して、このタグと値を持つすべての EC2 インスタンスをターゲットにできます。**[TagKey]** を指定する場合は、対応する **[TagValue]** を指定する必要があります。(Auto Scaling グループの場合、Auto Scaling グループ内のすべてのインスタンスにデプロイするには、**[TagKey]** に **aws:autoscaling:groupName** を指定し、**[TagValue]** に Auto Scaling グループ名を指定します。)

         **[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: エージェントのセットアップが正しく設定されていることを確認する
<a name="Solution-Tomcat-Agent-Step4"></a>

CloudWatch エージェントがインストールされているかどうかは、「[CloudWatch エージェントが実行されていることを確認する](troubleshooting-CloudWatch-Agent.md#CloudWatch-Agent-troubleshooting-verify-running)」の手順に従って確認できます。CloudWatch エージェントがインストールされておらず、実行されていない場合は、すべてが正しく設定されていることを確認してください。
+ 「[ステップ 1: ターゲット EC2 インスタンスに必要な IAM アクセス許可があることを確認する](#Solution-Tomcat-Agent-Step1)」の説明に従って、EC2 インスタンスに正しいアクセス許可を持つロールがアタッチされていることを確認してください。
+ Systems Manager パラメータの JSON が正しく設定されていることを確認してください。「[CloudFormation での CloudWatch エージェントのインストールのトラブルシューティング](Install-CloudWatch-Agent-New-Instances-CloudFormation.md#CloudWatch-Agent-CloudFormation-troubleshooting)」のステップを実行してください。

すべてが正しく設定されている場合は、Tomcat メトリクスが CloudWatch に公開されているはずです。CloudWatch コンソールをチェックして、公開されていることを確認します。

**Tomcat メトリクスが CloudWatch に公開されていることを確認するには**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. **[メトリクス]**、**[すべてのメトリクス]** を選択します。

1. ソリューションをデプロイしたリージョンを選択したことを確認し、**[カスタム名前空間]**、**[CWAgent]** を選択します。

1. `tomcat.errors` など、このドキュメントのエージェント設定セクションに記載されているメトリクスを検索します。これらのメトリクスの結果が表示された場合、メトリクスは CloudWatch に公開されています。

## Tomcat ソリューションダッシュボードを作成する
<a name="Solution-Tomcat-Dashboard"></a>

このダッシュボードには、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 コンソールを使用してダッシュボードを作成するには**
**注記**  
現在、ソリューションダッシュボードには、最新の Java バージョンのデフォルトコレクターである G1 ガベージコレクターのガベージコレクション関連のメトリクスのみが表示されます。別のガベージコレクションアルゴリズムを使用している場合、ガベージコレクションに関連するウィジェットは空です。ただし、ダッシュボードの 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\$1COMPLETE** になったら、作成したスタックの **[リソース]** タブを選択し、**[物理 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)。

**注記**  
現在、ソリューションダッシュボードには、最新の Java バージョンのデフォルトコレクターである G1 ガベージコレクターのガベージコレクション関連のメトリクスのみが表示されます。別のガベージコレクションアルゴリズムを使用している場合、ガベージコレクションに関連するウィジェットは空です。ただし、ダッシュボードの CloudFormation テンプレートを変更し、適切なガベージコレクションタイプをガベージコレクション関連のメトリクスの名前ディメンションに適用することで、これらのウィジェットをカスタマイズできます。例えば、並列ガベージコレクションを使用している場合は、ガベージコレクション数メトリクス `jvm.gc.collections.count` の **name=\$1"G1 Young Generation\$1"** を **name=\$1"Parallel GC\$1"** に変更します。

### Tomcat モニタリングダッシュボードの使用を開始する
<a name="Solution-Tomcat-GetStarted"></a>

新しい Tomcat ダッシュボードで試すことができるタスクをいくつか示します。これらのタスクにより、ダッシュボードが正しく機能していることの検証が可能になり、Tomcat アプリケーションをモニタリングするためにダッシュボードを実際に使用する経験ができます。これらを試すと、ダッシュボードの操作に慣れ、可視化されたメトリクスを解釈できるようになっていきます。

**ドロップダウンリストの使用**

ダッシュボードの上部には、モニタリングする特定の Tomcat アプリケーションのフィルタリングと選択に使用できるドロップダウンリストが表示されます。特定の Tomcat アプリケーションのメトリクスを表示するには、**[Tomcat アプリケーション]** ドロップダウンリストでそのアプリケーション名を選択します。

**アプリケーションのヘルスを確認する**

**[アプリケーションの概要]** セクションから、**[リクエスト]**、**[エラー]**、および **[エラー率]** の各ウィジェットを見つけます。これらは、アプリケーションのリクエスト処理パフォーマンスの概要を示します。異常に多いエラー数やエラー率がないか調べます。これは、調査が必要な問題を示している可能性があります。

**リクエスト処理をモニタリングする**

**[リクエスト処理時間]** セクションで、**[最大時間]** ウィジェットと **[すべてのリクエストを処理する合計時間]** ウィジェットを見つけます。これらのメトリクスは、リクエスト処理における潜在的なパフォーマンスのボトルネックを特定するのに役立ちます。最大処理時間が他のサーバーよりも大幅に長いサーバーがないか探します。

**ネットワークトラフィックを分析する**

**[ネットワークトラフィック]** セクションで、**[送信されたトラフィック]** ウィジェットと **[受信したトラフィック]** ウィジェットを見つけます。これらは、アプリケーションがネットワーク経由で送受信するデータの量を示します。想定外にトラフィックレベルが高い場合は、ネットワーク飽和や非効率なデータ転送の問題が発生する可能性があります。

**スレッドの使用状況を調査する**

**[セッションとスレッド]** セクションで、**[ビジースレッド数]**、**[スレッド数] **、および **[セッション]** の各ウィジェットを見つけます。これらのメトリクスからは、アプリケーションのスレッド管理とアクティブなユーザーセッションに関するインサイトが得られます。ビジースレッド数またはセッション数が異常に多いサーバーを探します。これは、リソースが制約されている可能性を示します。