일일 예상 요금을 모니터링하고 사용량 임계값을 기반으로 CloudWatch 경보를 활성화하려면 어떻게 해야 합니까?

3분 분량
0

일일 예상 요금을 모니터링하고 사용량 임계값을 기반으로 Amazon CloudWatch 경보를 활성화하려고 합니다.

간략한 설명

EstimatedCharges 지표는 약 6시간 간격으로 게시됩니다. 결과는 매월 초기화됩니다. MetricMath RATE 표현식을 사용하여 매일의 EstimatedCharges 값을 계산합니다. MetricMath RATE를 계산하려면 최신 데이터 포인트 값과 이전 데이터 포인트 값의 차이를 나눕니다. 그런 다음 두 값 사이의 시간 차이(초)로 나눕니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령 실행 시 오류가 발생하는 경우, AWS CLI 오류 문제 해결을 참고하세요. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하세요.

AWS 관리 콘솔을 사용하여 CloudWatch 알람 생성

다음 단계를 완료합니다.

  1. 지표 수학 식을 기반으로 CloudWatch 알람을 생성합니다.
  2. 탐색 창의 지표에서 모든 지표를 선택합니다.
  3. 지표 페이지의 소스 탭에 다음 코드를 입력합니다:
    {    
        "metrics": [
            [ { "expression": "IF(RATE(m1)>0,RATE(m1)*86400,0)", "label": "Expression1", "id": "e1", "period": 86400, "stat": "Maximum" } ],
            [ "AWS/Billing", "EstimatedCharges", "Currency", "USD", { "id": "m1" } ]
        ],    
        "view": "timeSeries",
        "stacked": false,
        "region": "us-east-1",
        "stat": "Maximum",
        "period": 86400
    }
    참고: 앞의 코드는 “m1” 레이블이 있는 EstimatedCharges를 기본 지표로 사용하는 지표 수학 표현식 **[ IF(RATE(m1)>0,RATE(m1)*86400,0) ]**을 만듭니다.
  4. 지표 수학 표현식에 대한 CloudWatch 알람을 만들려면 그래프된 지표 탭을 선택합니다.
  5. 동작 열에서 DailyEstimatedCharges 지표의 알람 아이콘을 선택합니다.
  6. CloudWatch 알람 만들기 마법사에서 다음 단계를 완료합니다.
    지표 구성의 세부 정보를 확인합니다.
    임계값 초과 시 알림을 수신할 적절한 임계값(예: 50.00 USD)을 추가합니다.
    알람 동작을 구성합니다.
    알람 이름과 설명을 추가합니다.

AWS CLI를 사용하여 CloudWatch 알람 생성

다음 단계를 완료합니다.

  1. 알람 구성을 JSON 파일로 생성
    예제 JSON 파일:

    $ cat alarm_config.json
    {
        "AlarmName": "DailyEstimatedCharges",
        "AlarmDescription": "This alarm would be triggered if the daily estimated charges exceeds 50$",
        "ActionsEnabled": true,
        "AlarmActions": [
            "arn:aws:sns:<REGION>:<ACCOUNT_ID>:<SNS_TOPIC_NAME>"
        ],
        "EvaluationPeriods": 1,
        "DatapointsToAlarm": 1,
        "Threshold": 50,
        "ComparisonOperator": "GreaterThanOrEqualToThreshold",
        "TreatMissingData": "breaching",
        "Metrics": [{
            "Id": "m1",
            "MetricStat": {
                "Metric": {
                    "Namespace": "AWS/Billing",
                    "MetricName": "EstimatedCharges",
                    "Dimensions": [{
                        "Name": "Currency",
                        "Value": "USD"
                    }]
                },
                "Period": 86400,
                "Stat": "Maximum"
            },
            "ReturnData": false
        },
        {
            "Id": "e1",
            "Expression": "IF(RATE(m1)>0,RATE(m1)*86400,0)",
            "Label": "DailyEstimatedCharges",
            "ReturnData": true
        }]
    }

    참고: REGION, ACCOUNT_IDSNS_TOPIC_NAME을 사용자 값으로 바꿉니다.

  2. PutMetricAlarm API를 호출합니다.
    API 호출 예시:

    aws cloudwatch put-metric-alarm --cli-input-json file://alarm_config.json

    (선택 사항) Maximum DailyEstimatedCharges 값에 대한 전날의 상위 10개 기여자를 찾으려면 다음 쿼리를 실행합니다.

    $ cat top_contributors_query.json
    {
        "MetricDataQueries": [{
            "Id": "e1",
            "Expression": "SORT(RATE(SEARCH('{AWS/Billing,Currency,ServiceName} AWS/Billing ServiceName', 'Maximum', 86400))*86400, MAX, DESC, 10)",
            "Label": "DailyEstimatedCharges",
            "Period": 86400
        }],
        "ScanBy": "TimestampAscending"
    }
    
    
    $ aws cloudwatch get-metric-data --cli-input-json file://top_contributors_query.json --start-time `date -v -2d '+%Y-%m-%dT%H:%M:%SZ'` --end-time `date '+%Y-%m-%dT%H:%M:%SZ'` --region us-east-1

    StartTimeEndTime에 대해 지원되는 DateTime 형식은 2020-01-01T00:00:00Z입니다.

    중요: 앞의 명령은 각 GetMetricData API 호출이 검색하는 지표 수에 따라 요금이 부과됩니다. 자세한 내용은 Amazon CloudWatch 요금을 참조하세요.