Amazon ECS 클러스터의 Java/JMX 워크로드 샘플
JMX Exporter는 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 태스크 정의 파일에서 다음과 같은 두 Docker 레이블을 지정합니다. 그러면 클러스터에서 태스크 정의를 Amazon ECS 서비스 또는 Amazon ECS 태스크로 실행할 수 있습니다.
-
ECS_PROMETHEUS_EXPORTER_PORT
를 Prometheus 지표가 노출되는 containerPort를 가리키도록 설정합니다. -
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에 전송됩니다. Java_EMF_Metrics=“true”
의 Docker 레이블이 있는 Java/JMX 컨테이너의 경우 임베디드 지표 형식이 생성됩니다.