Beispiel für Java/JMX-Workload für Amazon-ECS-Cluster - Amazon CloudWatch

Beispiel für Java/JMX-Workload für Amazon-ECS-Cluster

JMX Exporter ist ein offizieller Prometheus-Exporter, der JMX mBeans als Prometheus-Metriken erfassen und verfügbar machen kann. Weitere Informationen finden Sie unter prometheus/jmx_exporter.

Der CloudWatch-Agent mit Prometheus-Unterstützung erfasst die Java/JMX-Prometheus-Metriken basierend auf der Serviceerkennungskonfiguration im Amazon-ECS-Cluster. Sie können den JMX Exporter so konfigurieren, dass die Metriken auf einem anderen Port oder metrics_path verfügbar gemacht werden. Wenn Sie den Port oder den Pfad ändern, aktualisieren Sie den standardmäßigen ecs_service_discovery-Abschnitt in der CloudWatch-Agentenkonfiguration.

Um Metriken aus einem Prometheus-Beispiel-Workload für Amazon ECS zu erfassen, müssen Sie Container Insights im Cluster ausführen. Informationen zur Installation von Container Insights finden Sie unter Einrichten von Container Insights für Amazon ECS.

So installieren Sie die Java/JMX-Beispiel-Workload für Amazon-ECS-Cluster
  1. Führen Sie die Schritte in diesen Abschnitten aus, um Ihre Docker-Images zu erstellen.

  2. Geben Sie die folgenden zwei Docker-Bezeichnungen in der Amazon-ECS-Aufgabendefinitionsdatei an. Anschließend können Sie die Aufgabendefinition als Amazon-ECS-Service oder Amazon-ECS-Aufgabe im Cluster ausführen.

    • Legen Sie ECS_PROMETHEUS_EXPORTER_PORT so fest, dass es auf den ContainerPort zeigt, in dem die Prometheus-Metriken verfügbar gemacht werden.

    • Setzen Sie Java_EMF_Metrics auf true. Der CloudWatch-Agent verwendet dieses Flag, um das eingebettete Metrikformat im Protokollereignis zu generieren.

    Im Folgenden wird ein Beispiel gezeigt:

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

Die Standardeinstellung des CloudWatch-Agenten in der CloudFormation-Vorlage aktiviert sowohl die Docker-Label-basierte Service-Discovery als auch die Aufgaben-Definition-ARN-basierte Service-Discovery. Informationen zum Anzeigen dieser Standardeinstellungen finden Sie in Zeile 65 der YAML-Konfigurationsdatei des CloudWatch-Agenten. Die Container mit der ECS_PROMETHEUS_EXPORTER_PORT-Bezeichnung werden basierend auf dem angegebenen Container-Port für das Prometheus-Scraping automatisch erkannt.

Die Standardeinstellung des CloudWatch-Agenten enthält auch die metric_declaration-Einstellung für Java/JMX in Zeile 112 derselben Datei. Alle Docker-Bezeichnungen der Zielcontainer werden als zusätzliche Bezeichnungen in den Prometheus-Metriken hinzugefügt und an CloudWatch Logs gesendet. Für die Java/JMX-Container mit Docker-Bezeichnung Java_EMF_Metrics=“true” wird das eingebettete Metrikformat generiert.