지표 수학을 사용하여 Application Auto Scaling에서 대상 추적 조정 정책 생성 - Application Auto Scaling

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

지표 수학을 사용하여 Application Auto Scaling에서 대상 추적 조정 정책 생성

메트릭 수학을 사용하면 여러 CloudWatch 메트릭을 쿼리하고 수학 식을 사용하여 이러한 메트릭을 기반으로 새 시계열을 만들 수 있습니다. CloudWatch 콘솔에서 결과 시계열을 시각화하고 대시보드에 추가할 수 있습니다. 지표 수학에 대한 자세한 내용은 Amazon 사용 CloudWatch 설명서의 지표 수학 사용을 참조하십시오.

다음은 지표 수학 표현식에 적용되는 고려 사항입니다.

  • 사용 가능한 모든 CloudWatch 지표를 쿼리할 수 있습니다. 각 지표는 지표 이름, 네임스페이스, 0개 이상의 측정기준으로 이루어진 고유한 조합입니다.

  • 모든 산술 연산자 (+ - */^), 통계 함수 (예: AVG 또는 SUM) 또는 지원하는 기타 함수를 사용할 수 있습니다. CloudWatch

  • 수학 표현식의 공식에서 지표 및 다른 수학 표현식의 결과를 모두 사용할 수 있습니다.

  • 지표 규격에 사용된 표현식은 결국 단일 시계열을 반환해야 합니다.

  • CloudWatch 콘솔 또는 데이터 API를 사용하여 메트릭 수학 표현식이 유효한지 확인할 수 있습니다. CloudWatch GetMetric

예: 태스크당 Amazon SQS 대기열 백로그

태스크당 Amazon SQS 대기열 백로그를 계산하려면 대기열에서 검색 가능한 대략적인 메시지 수를 가져와 서비스에서 실행 중인 Amazon ECS 태스크의 수로 나눕니다. 자세한 내용은 AWS 컴퓨팅 블로그에서 사용자 지정 지표를 사용하는 Amazon Elastic Container Service (ECS) Auto Scaling을 참조하십시오.

표현식의 로직은 다음과 같습니다.

sum of (number of messages in the queue)/(number of tasks that are currently in the RUNNING state)

그러면 CloudWatch 측정치 정보는 다음과 같습니다.

ID CloudWatch 지표 통계 기간
m1 ApproximateNumberOfMessages가시적 Sum 1분
m2 RunningTask개수 평균 1분

지표 수식 ID와 표현식은 다음과 같습니다.

ID 표현식
e1 (m1)/(m2)

다음 다이어그램은 이 지표의 아키텍처를 보여줍니다.

대기열을 사용한 Application Auto Scaling 아키텍처 다이어그램
이 지표 수학을 사용하여 대상 추적 조정 정책 생성(AWS CLI)
  1. 지표 수학 표현식을 맞춤된 지표 규격의 일부로서 config.json이라는 이름의 JSON 파일로 저장합니다.

    다음 표가 시작하는 데 도움이 될 수 있습니다. user input placeholder를 사용자의 정보로 바꿉니다.

    { "CustomizedMetricSpecification": { "Metrics": [ { "Label": "Get the queue size (the number of messages waiting to be processed)", "Id": "m1", "MetricStat": { "Metric": { "MetricName": "ApproximateNumberOfMessagesVisible", "Namespace": "AWS/SQS", "Dimensions": [ { "Name": "QueueName", "Value": "my-queue" } ] }, "Stat": "Sum" }, "ReturnData": false }, { "Label": "Get the ECS running task count (the number of currently running tasks)", "Id": "m2", "MetricStat": { "Metric": { "MetricName": "RunningTaskCount", "Namespace": "ECS/ContainerInsights", "Dimensions": [ { "Name": "ClusterName", "Value": "my-cluster" }, { "Name": "ServiceName", "Value": "my-service" } ] }, "Stat": "Average" }, "ReturnData": false }, { "Label": "Calculate the backlog per instance", "Id": "e1", "Expression": "m1 / m2", "ReturnData": true } ] }, "TargetValue": 100 }

    자세한 내용은 Application Auto Scaling API 참조의 TargetTracking ScalingPolicy 구성을 참조하십시오.

    참고

    다음은 지표의 이름, 네임스페이스, 차원 및 통계를 찾는 CloudWatch 데 도움이 되는 몇 가지 추가 리소스입니다.

  2. 이 정책을 생성하려면 다음 예에 나와 있는 것처럼 JSON 파일을 입력으로 사용하여 put-scaling-policy 명령을 실행합니다.

    aws application-autoscaling put-scaling-policy --policy-name sqs-backlog-target-tracking-scaling-policy \ --service-namespace ecs --scalable-dimension ecs:service:DesiredCount --resource-id service/my-cluster/my-service \ --policy-type TargetTrackingScaling --target-tracking-scaling-policy-configuration file://config.json

    성공하면 이 명령은 정책의 Amazon 리소스 이름 (ARN) 과 사용자를 대신하여 생성된 두 CloudWatch 경보의 ARN을 반환합니다.

    { "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy: 8784a896-b2ba-47a1-b08c-27301cc499a1:resource/ecs/service/my-cluster/my-service:policyName/sqs-backlog-target-tracking-scaling-policy", "Alarms": [ { "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-service/my-cluster/my-service-AlarmHigh-9bc77b56-0571-4276-ba0f-d4178882e0a0", "AlarmName": "TargetTracking-service/my-cluster/my-service-AlarmHigh-9bc77b56-0571-4276-ba0f-d4178882e0a0" }, { "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-service/my-cluster/my-service-AlarmLow-9b6ad934-6d37-438e-9e05-02836ddcbdc4", "AlarmName": "TargetTracking-service/my-cluster/my-service-AlarmLow-9b6ad934-6d37-438e-9e05-02836ddcbdc4" } ] }
    참고

    이 명령에서 오류가 발생하는 경우 AWS CLI 로컬에서 최신 버전으로 업데이트했는지 확인하십시오.

제한 사항

  • 최대 요청 크기는 50KB입니다. PutScaling정책 정의에서 메트릭 수학을 사용할 때 Policy API 요청의 총 페이로드 크기입니다. 이 한도를 초과할 경우 Application Auto Scaling은 요청을 거부합니다.

  • 대상 추적 조정 정책과 함께 지표 수학을 사용할 경우 다음 서비스는 지원되지 않습니다.

    • Amazon Keyspaces(Apache Cassandra용)

    • DynamoDB

    • Amazon EMR

    • Amazon MSK

    • Amazon Neptune