Exemple d'application Java/JMX pour les clusters Amazon ECS - Amazon CloudWatch

Exemple d'application Java/JMX pour les clusters Amazon ECS

JMX Exporter est un exportateur Prometheus officiel qui peut récupérer et exposer des mBeans JMX en tant que métriques Prometheus. Pour plus d'informations, consultez prometheus/jmx_exporter.

L'agent CloudWatch avec prise en charge de Prometheus récupère les métriques Java/JMX Prometheus en fonction de la configuration de découverte de service dans le cluster Amazon ECS. Vous pouvez configurer JMX Exporter pour qu'il expose les métriques sur un autre port ou chemin d'accès. Si vous modifiez le port ou le chemin d'accès, mettez à jour la section ecs_service_discovery par défaut dans la configuration de l'agent CloudWatch.

Pour collecter des métriques à partir d'un exemple d'application Prometheus pour Amazon ECS, vous devez exécuter Container Insights dans le cluster. Pour plus d'informations sur l'installation de Container Insights, consultez Configuration de Container Insights sur Amazon ECS.

Pour installer l'exemple d'application Java/JMX pour les clusters Amazon ECS
  1. Suivez les étapes décrites dans ces sections pour créer vos images Docker.

  2. Spécifiez les deux étiquettes docker suivantes dans le fichier de définition de tâche Amazon ECS. Vous pouvez ensuite exécuter la définition de tâche en tant que Amazon ECS service ou tâche Amazon ECS dans le cluster.

    • Définissez ECS_PROMETHEUS_EXPORTER_PORT pour pointer vers le ContainerPort où les métriques Prometheus sont exposées.

    • Définissez Java_EMF_Metrics sur true. L'agent CloudWatch utilise cet indicateur pour générer le format de métrique intégré dans l'évènement du journal.

    Voici un exemple :

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

Le paramètre par défaut de l'agent CloudWatch dans le modèle CloudFormation permet à la fois la découverte de service basée sur les étiquettes de docker et la découverte de service basée sur l'ARN de définition de tâche. Pour afficher ces paramètres par défaut, consultez la ligne 65 du fichier de configuration YAML de l'agent CloudWatch. Les conteneurs avec l'étiquette ECS_PROMETHEUS_EXPORTER_PORT seront automatiquement découverts en fonction du port de conteneur spécifié pour la récupération Prometheus.

Le paramètre par défaut de l'agent CloudWatch a également le paramètre metric_declaration pour Java/JMX à la ligne 112 du même fichier. Toutes les étiquettes docker des conteneurs cibles seront ajoutées en tant qu'étiquettes supplémentaires dans les métriques Prometheus et envoyées à CloudWatch Logs. Pour les conteneurs Java/JMX avec étiquette docker Java_EMF_Metrics=“true”, le format de métrique intégrée sera généré.