¿Cómo puedo supervisar la métrica EstimatedCharges a diario y activar una alarma de CloudWatch en función de mi umbral de uso?

4 minutos de lectura
0

¿Cómo puedo supervisar la métrica EstimatedCharges a diario y activar una alarma de Amazon CloudWatch en función de mi umbral de uso?

Breve descripción

La métrica EstimatedCharges se publica a intervalos de aproximadamente seis horas. Los resultados se restablecen cada mes. La expresión RATE de MetricMath se calcula dividiendo la diferencia entre el último valor del punto de datos y el valor del punto de datos anterior por la diferencia de tiempo en segundos entre los dos valores. Puede utilizar esta expresión para calcular el valor de EstimatedCharges para cada día.

Resolución

Nota: Si recibe errores al ejecutar los comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente de AWS CLI.

Probar la expresión RATE y verificar el resultado

Antes de crear una alarma de CloudWatch, llame a la API GetMetricData para probar la expresión RATE:

$ cat metric_data_queries.json
{
    "MetricDataQueries": [
        {
            "Id": "m1",
            "MetricStat": {
                "Metric": {
                    "Namespace": "AWS/Billing",
                    "MetricName": "EstimatedCharges",
                    "Dimensions": [
                        {
                            "Name": "Currency",
                            "Value": "USD"
                        }
                    ]
                },
                "Period": 86400,
                "Stat": "Maximum"
            }
        },
    {
            "Id": "e1",
            "Expression": "IF(RATE(m1)>0,RATE(m1)*86400,0)",
            "Label": "DailyEstimatedCharges",
        "Period": 86400
        }
    ],
    "StartTime": "2020-06-01T00:00:00Z",
    "EndTime": "2020-06-05T00:00:00Z",
    "ScanBy": "TimestampAscending"
}


$ aws cloudwatch get-metric-data --cli-input-json file://metric_data_queries.json
{
    "MetricDataResults": [
        {
            "Id": "m1",
            "Label": "EstimatedCharges",
            "Timestamps": [
                "2020-06-01T00:00:00Z",
                "2020-06-02T00:00:00Z",
                "2020-06-03T00:00:00Z",
                "2020-06-04T00:00:00Z"
            ],
            "Values": [
                0.0,
                22.65,
                34.74,
                46.91
            ],
            "StatusCode": "Complete"
        },
        {
            "Id": "e1",
            "Label": "DailyEstimatedCharges",
            "Timestamps": [
                "2020-06-02T00:00:00Z",
                "2020-06-03T00:00:00Z",
                "2020-06-04T00:00:00Z"
            ],
            "Values": [
                22.65,
                12.090000000000003,
                12.169999999999995
            ],
            "StatusCode": "Complete"
        }
    ],
    "Messages": []
}

Tabla de resultados:

Marcas de tiempo2020-06-01T00:00:00Z2020-06-02T00:00:00Z2020-06-03T00:00:00Z2020-06-04T00:00:00Z
EstimatedCharges0,022,6534,7446,91
DailyEstimatedCharges---22,6512,0912,17

En la tabla de resultados, confirme que DailyEstimatedCharges se haya calculado correctamente como la diferencia entre el último punto de datos y el punto de datos anterior. Esta expresión se utiliza para crear la alarma de CloudWatch.

Crear una alarma de CloudWatch desde la Consola de administración de AWS

1.    Siga los pasos que se indican en Crear una alarma de CloudWatch basada en una expresión matemática de métrica.

2.    Pegue el siguiente código en la pestaña Origen de la página Métricas de CloudWatch. Este código crea una expresión matemática de métrica [IF(RATE(m1)>0,RATE(m1)*86400,0)] utilizando EstimatedCharges como métrica base con la etiqueta "m1".

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

3.    Cree una alarma de CloudWatch para la expresión MetricMath. Para ello, seleccione Métricas diagramadas. En la columna Acciones de la métrica DailyEstimatedCharges, seleccione el icono Alarma.

4.    En el asistente de creación de alarmas de CloudWatch: confirme los detalles de la configuración de la métrica. Añada un valor de umbral adecuado para recibir notificaciones cuando se supere el umbral (por ejemplo, 50 USD). Configure las acciones de la alarma. Añada un nombre y una descripción a la alarma.

Crear una alarma de CloudWatch mediante AWS CLI

1.    Cree una configuración de alarma como archivo 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
    }]
}

Nota: Asegúrese de actualizar REGION, ACCOUNT_ID y SNS_TOPIC_NAME con los valores correspondientes.

2.    Llame a la API PutMetricAlarm:

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

(Opcional) Busque los diez principales contribuyentes del día anterior al valor máximo de DailyEstimatedCharges.

Utilice la siguiente consulta:

$ 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

Nota: El formato de fecha y hora admitido para StartTime y EndTime es 2020-01-01T00:00:00Z.

Importante: El comando anterior incurre en cargos en función de la cantidad de métricas recuperadas por cada llamada a la API GetMetricData. Para obtener más información, consulte Precios de Amazon CloudWatch.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años