Amazon ECS クラスター用の Java/JMX ワークロードのサンプル
JMX Exporter は、Prometheus メトリクスとして JMX mBeans をスクレイプおよび公開できる公式の Prometheus エクスポーターです。詳細については、prometheus/jmx_exporter
Prometheus をサポートする CloudWatch エージェントは、Amazon ECS クラスターのサービス検出設定に基づいて Java/JMX Prometheus メトリクスをスクレイプします。別のポートまたは metrics_path でメトリクスを公開するように JMX Exporter を設定できます。ポートまたはパスを変更する場合は、CloudWatch エージェント設定のデフォルトの ecs_service_discovery
セクションを更新します。
Amazon ECS のサンプル Prometheus ワークロードからメトリクスを収集するには、クラスターで Container Insights を実行している必要があります。Container Insights のインストールの詳細については、「Amazon ECS での Container Insights のセットアップ」を参照してください。
Amazon ECS クラスターの Java/JMX サンプルワークロードをインストールするには
-
これらのセクションのステップに従って、Docker イメージを作成します。
-
Amazon ECS タスク定義ファイルに次の 2 つの docker ラベルを指定します。その後、クラスター内で Amazon ECS サービスまたは Amazon ECS タスクとしてタスク定義を実行できます。
-
Prometheus メトリクスが公開されている ContainerPort を指定するように
ECS_PROMETHEUS_EXPORTER_PORT
を設定します 。 -
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" }
-
AWS CloudFormation テンプレートの CloudWatch エージェントのデフォルト設定では、docker のラベルベースのサービス検出とタスク定義の ARN ベースのサービス検出の両方が有効になります。これらのデフォルト設定を表示するには、「CloudWatch エージェント YAML 設定ファイルECS_PROMETHEUS_EXPORTER_PORT
ラベル付きのコンテナは、Prometheus スクレイピング用に指定されたコンテナポートに基づいて自動検出されます。
CloudWatch エージェントのデフォルト設定には、同じファイルの 112 行目に Java/JMX の metric_declaration
設定もあります。ターゲットコンテナのすべての docker ラベルは、Prometheus メトリクスに追加ラベルとして追加され、CloudWatch Logs に送信されます。docker ラベル Java_EMF_Metrics=“true”
付きの Java/JMX コンテナの場合、埋め込みメトリクス形式が生成されます。