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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

适用于 Amazon ECS 集群的 Java/JMX 工作负载示例

JMX Exporter 是正式的 Prometheus 导出程序,可以抓取 JMX mBeans 作为 Prometheus 指标公开。有关详细信息,请参阅 prometheus/jmx_exporter.

具有 Prometheus 支持的 CloudWatch 代理根据Amazon ECS集群中的服务发现配置抓取 Java/JMX Prometheus 指标。您可以将 JMX Exporter 配置为在不同端口或 metrics_path 上公开指标。如果您更改了端口或路径,请更新ecs_service_discovery代理配置中的默认CloudWatch部分。

要从 的示例 Prometheus 工作负载收集指标Amazon ECS,您必须在集群中运行 Container Insights。有关安装 Container Insights 的信息,请参阅在 上设置 Container InsightsAmazon ECS

安装 Amazon ECS 集群的 Java/JMX 示例工作负载

  1. 按照这些部分中的步骤创建 Docker 映像。

  2. 在Amazon ECS任务定义文件中指定以下两个 Docker 标签。然后,您可以将任务定义作为集群中的 Amazon ECS 服务或Amazon ECS任务运行。

    • 设置 ECS_PROMETHEUS_EXPORTER_PORT 以指向 Prometheus 指标公开的 containerPort 。

    • Java_EMF_Metric 设置为 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" }

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

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