適用於 Amazon ECS 叢集的範例 Java/JMX 工作負載 - Amazon CloudWatch

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

適用於 Amazon ECS 叢集的範例 Java/JMX 工作負載

JMX Exporter 是官方的 Prometheus 匯出工具,可以湊集 JMX mBeans 並將其公開為 Prometheus 指標。如需詳細資訊,請參閱 prometheus/jmx_exporter

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

若要從 Amazon ECS 的範例 Prometheus 工作負載收集指標,您必須在叢集中執行 Container Insights。如需安裝 Container Insights 的相關資訊,請參閱 在 Amazon ECS 上設定 Container Insights

若要安裝適用於 Amazon ECS 叢集的 Java/JMX 範例工作負載
  1. 請依照這些章節中的步驟建立 Docker 影像。

  2. 在 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" }

AWS CloudFormation 範本中 CloudWatch 代理程式的預設設定可啟用 Docker 標籤型服務探索和任務定義 ARN 型服務探索。若要檢視這些預設設定,請參閱 CloudWatch 代理程式 YAML 組態檔案的第 65 行。將根據 Prometheus 湊集的指定容器連接埠自動探索具有 ECS_PROMETHEUS_EXPORTER_PORT 標籤的容器。

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