Come posso utilizzare EstimatedCharges per monitorare i costi stimati giornalieri e attivare un allarme CloudWatch in base alla mia soglia di utilizzo?

4 minuti di lettura
0

Come posso utilizzare EstimatedCharges per monitorare i costi stimati giornalieri e attivare un allarme Amazon CloudWatch in base alla mia soglia di utilizzo?

Breve descrizione

La metrica EstimatedCharges viene pubblicata a intervalli di circa sei ore. I risultati vengono azzerati ogni mese. L'espressione MetricMath RATE viene calcolata dividendo la differenza tra il valore del punto dati più recente e il valore del punto dati precedente per la differenza di tempo in secondi tra i due valori. È possibile utilizzare questa espressione per calcolare il valore giornaliero di EstimatedCharges.

Risoluzione

Nota: se si verificano errori durante l'esecuzione dei comandi dell’interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

Test dell'espressione RATE e verifica dell'output

Prima di creare un allarme CloudWatch, richiama l'API GetMetricData per testare l'espressione 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": []
}

Tabella di output:

Timestamp2020-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

Nella tabella di output, verifica che DailyEstimatedCharges sia calcolato correttamente come differenza tra il punto dati più recente e il punto dati precedente. Usa questa espressione per creare l’allarme CloudWatch.

Creazione di un allarme CloudWatch utilizzando la Console di gestione AWS

1.    Segui la procedura descritta in Creating a CloudWatch alarm based on a metric math expression.

2.    Incolla il codice seguente nella scheda Origine della pagina Parametri CloudWatch. Questo codice crea un'espressione MetricMath [IF(RATE(m1)>0,RATE(m1)*86400,0)] utilizzando EstimatedCharges come metrica di base con l'etichetta "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.    Crea un allarme CloudWatch per l'espressione MetricMath. Per eseguire questa operazione, seleziona Parametri definiti. Nella colonna Operazioni della metrica DailyEstimatedCharges, scegli l'icona Allarme.

4.    Nella procedura guidata per la creazione di allarmi CloudWatch: conferma i dettagli di configurazione della metrica. Aggiungi un valore di soglia appropriato per ricevere notifiche quando la soglia viene superata (ad esempio, 50 USD). Configura le operazioni di allarme. Aggiungi un nome e una descrizione dell'allarme.

Creazione di un allarme CloudWatch utilizzando l'interfaccia della linea di comando AWS

1.    Crea una configurazione di allarme come file 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: assicurati di aggiornare REGION, ACCOUNT_ID, e SNS_TOPIC_NAME con i valori corrispondenti.

2.    Richiama l'API PutMetricAlarm:

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

(Facoltativo) Trova i dieci principali fattori che hanno contribuito il giorno precedente a determinare il valore Maximum DailyEstimatedCharges

Utilizza la seguente query:

$ 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: il formato DateTime supportato per StartTime e EndTime è '2020-01-01T00:00:00Z'.

Importante: il comando precedente prevede addebiti in base al numero di metriche recuperate da ogni chiamata API GetMetricData. Per ulteriori informazioni, consulta Prezzi di Amazon CloudWatch.


AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa