

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 適用於 Amazon ECS 叢集的範例 Java/JMX 工作負載
<a name="ContainerInsights-Prometheus-Sample-Workloads-ECS-javajmx"></a>

JMX Exporter 是官方的 Prometheus 匯出工具，可以湊集 JMX mBeans 並將其公開為 Prometheus 指標。如需詳細資訊，請參閱 [prometheus/jmx\$1exporter](https://github.com/prometheus/jmx_exporter)。

具有 Prometheus 支援的 CloudWatch 代理程式會根據 Amazon ECS 叢集中的服務探索組態來湊集 Java/JMX Prometheus 指標。您可以設定 JMX Exporter 在不同的連接埠或 metrics\$1path 上公開指標。如果您確實變更連接埠或路徑，請更新 CloudWatch 代理程式組態中的預設 `ecs_service_discovery` 區段。

若要從 Amazon ECS 的範例 Prometheus 工作負載收集指標，您必須在叢集中執行 Container Insights。如需安裝 Container Insights 的相關資訊，請參閱 [在 Amazon ECS 上設定 Container Insights](deploy-container-insights-ECS.md)。

**若要安裝適用於 Amazon ECS 叢集的 Java/JMX 範例工作負載**

1. 請依照這些章節中的步驟建立 Docker 影像。
   + [範例：具有 Prometheus 指標的 Java Jar 應用程式 Docker 影像](ContainerInsights-Prometheus-Sample-Workloads-javajmx.md#ContainerInsights-Prometheus-Sample-Workloads-javajmx-jar)
   + [範例：具有 Prometheus 指標的 Apache Tomcat Docker 影像](ContainerInsights-Prometheus-Sample-Workloads-javajmx.md#ContainerInsights-Prometheus-Sample-Workloads-javajmx-tomcat)

1. 在 Amazon ECS 任務定義檔案中指定以下兩個 Docker 標籤。然後，您可以在叢集中以 Amazon ECS 服務或 Amazon ECS 任務的形式執行任務定義。
   + 將 `ECS_PROMETHEUS_EXPORTER_PORT` 設定為指向公開 Prometheus 指標的 containerPort。
   + 將 `Java_EMF_Metrics` 設定為 `true`。CloudWatch 代理程式會使用此旗標在日誌事件中產生內嵌指標格式。

   以下是範例：

   ```
   {
     "family": "workload-java-ec2-bridge",
     "taskRoleArn": "{{task-role-arn}}",
     "executionRoleArn": "{{execution-role-arn}}",
     "networkMode": "bridge",
     "containerDefinitions": [
       {
         "name": "tomcat-prometheus-workload-java-ec2-bridge-dynamic-port",
         "image": "your_docker_image_tag_for_tomcat_with_prometheus_metrics",
         "portMappings": [
           {
             "hostPort": 0,
             "protocol": "tcp",
             "containerPort": 9404
           }
         ],
         "dockerLabels": {
           "ECS_PROMETHEUS_EXPORTER_PORT": "9404",
           "Java_EMF_Metrics": "true"
         }
       }
     ],
     "requiresCompatibilities": [
       "EC2"  ],
     "cpu": "256",
     "memory": "512"
     }
   ```

 CloudFormation 範本中 CloudWatch 代理程式的預設設定可同時啟用 Docker 標籤型服務探索和任務定義 ARN 型服務探索。若要檢視這些預設設定，請參閱[ CloudWatch 代理程式 YAML 組態檔案](https://github.com/aws-samples/amazon-cloudwatch-container-insights/blob/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-bridge-host.yaml#L65)的第 65 行。將根據 Prometheus 湊集的指定容器連接埠自動探索具有 `ECS_PROMETHEUS_EXPORTER_PORT` 標籤的容器。

CloudWatch 代理程式的預設設定在同一個檔案的第 112 行也具有針對 Java/JMX 的 `metric_declaration` 設定。目標容器的所有 Docker 標籤將會新增為 Prometheus 指標中的其他標籤，並傳送至 CloudWatch Logs。對於帶有 Docker 標籤的 Java/JMX 容器 `Java_EMF_Metrics=“true”`，會產生內嵌指標格式。