Amazon ECS 集群的示例 Java/JMX 工作负载 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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" }

Amazon CloudFormation 模板中 CloudWatch 代理的默认设置同时启用基于 docker 标签的服务发现和基于任务定义 ARN 的服务发现。要查看这些默认设置,请参阅 CloudWatch 代理 YAML 配置文件的第 65 行。带有 ECS_PROMETHEUS_EXPORTER_PORT 标签的容器将根据 Prometheus 抓取的指定容器端口自动发现。

CloudWatch 代理的默认设置在同一文件的第 112 行也有 Java/JMX metric_declaration 设置。目标容器的所有 docker 标签将作为附加标签添加到 Prometheus 指标中并发送到 CloudWatch Logs。对于带有 docker 标签 Java_EMF_Metrics=“true” 的 Java/JMX 容器,将生成嵌入式指标格式。