

# Carga de trabajo Java/JMX de muestra para clústeres de Amazon ECS
<a name="ContainerInsights-Prometheus-Sample-Workloads-ECS-javajmx"></a>

JMX Exporter es un exportador oficial de Prometheus que puede extraer y exponer mBeans de JMX como métricas de Prometheus. Para obtener más información, consulte [prometheus/jmx\$1exporter](https://github.com/prometheus/jmx_exporter).

El agente de CloudWatch compatible con Prometheus raspa las métricas de Java/JMX Prometheus en función de la configuración de detección de servicios en el clúster de Amazon ECS. Puede configurar JMX Exporter para exponer las métricas en un puerto o ruta (metrics\$1path) diferente. Si cambia el puerto o la ruta, actualice la sección `ecs_service_discovery` predeterminada en la configuración del agente de CloudWatch.

Para recopilar métricas de una carga de trabajo de Prometheus de muestra para Amazon ECS, debe ejecutar Información de contenedores en el clúster. Para obtener más información sobre la instalación de Información de contenedores, consulte [Configuración de Información de contenedores en Amazon ECS](deploy-container-insights-ECS.md).

**Para instalar la carga de trabajo de ejemplo de Java/JMX para clústeres de Amazon ECS**

1. Siga los pasos descritos en estas secciones para crear las imágenes de Docker.
   + [Ejemplo: Imagen de Docker de una aplicación Jar de Java con métricas de Prometheus](ContainerInsights-Prometheus-Sample-Workloads-javajmx.md#ContainerInsights-Prometheus-Sample-Workloads-javajmx-jar)
   + [Ejemplo: Imagen de Apache Tomcat Docker con métricas de Prometheus](ContainerInsights-Prometheus-Sample-Workloads-javajmx.md#ContainerInsights-Prometheus-Sample-Workloads-javajmx-tomcat)

1. Especifique las dos etiquetas docker siguientes en el archivo de definición de tareas de Amazon ECS. A continuación, se puede ejecutar la definición de tarea como un Servicio ECS de Amazon o como una tarea de Amazon ECS en el clúster.
   + Establezca `ECS_PROMETHEUS_EXPORTER_PORT` para apuntar al ContainerPort donde están expuestas las métricas de Prometheus.
   + Establece `Java_EMF_Metrics` en `true`. El agente de CloudWatch utiliza este indicador para generar el formato de métrica integrada en el evento de registro.

   A continuación, se muestra un ejemplo:

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

La configuración predeterminada del agente de CloudWatch en la plantilla de CloudFormation permite tanto la detección de servicios basados en etiquetas docker como la detección de servicios basada en ARN de definición de tareas. Para ver estas configuraciones predeterminadas, consulte la línea 65 del [CloudWatch agent YAML configuration file](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) (Archivo de configuración YAML del agente de CloudWatch). Los contenedores con etiquetas `ECS_PROMETHEUS_EXPORTER_PORT` se detectarán automáticamente en función del puerto de contenedor especificado para el raspado de Prometheus. 

La configuración predeterminada del agente de CloudWatch también tiene la configuración `metric_declaration` para Java/JMX en la línea 112 del mismo archivo. Todas las etiquetas docker de los contenedores de destino se agregarán como etiquetas adicionales en las métricas de Prometheus y se enviarán a CloudWatch Logs. Para los contenedores Java/JMX con etiqueta docker `Java_EMF_Metrics=“true”`, se generará el formato de métrica integrada. 