Wie kann ich die täglichen geschätzten Gebühren überwachen und basierend auf meinem Nutzungsschwellenwert einen CloudWatch-Alarm auslösen?

Lesedauer: 4 Minute
0

Wie kann ich die täglichen geschätzten Gebühren überwachen und basierend auf meinem Nutzungsschwellenwert einen Amazon CloudWatch-Alarm auslösen?

Kurzbeschreibung

Die EstimatedCharges-Metrik wird in Abständen von etwa sechs Stunden veröffentlicht. Die Ergebnisse werden jeden Monat zurückgesetzt. Der MetricMath RATE-Ausdruck wird berechnet, indem die Differenz zwischen dem neuesten Datenpunktwert und dem vorherigen Datenpunktwert durch die Zeitdifferenz in Sekunden zwischen den beiden Werten geteilt wird. Sie können diesen Ausdruck verwenden, um den EstimatedCharges-Wert für jeden Tag zu berechnen.

Behebung

Hinweis: Wenn Sie beim Ausführen von Befehlen der AWS Command Line Interface (AWS CLI) Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS CLI verwenden.

Testen Sie den RATE-Ausdruck und überprüfen Sie die Ausgabe

Bevor Sie einen CloudWatch-Alarm erstellen, rufen Sie die GetMetricData-API auf, um den RATE-Ausdruck zu testen:

$ 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": []
}

Ausgabetabelle:

Zeitstempel2020-06-01T 00:00:00 Z2020-06-02T 00:00:00 Z2020-06-03T 00:00:00 Z2020-06-04T 00:00:00 Z
EstimatedCharges0,022,6534.7446.91
DailyEstimatedCharges---22,6512.0912.17

Vergewissern Sie sich in der Ausgabetabelle, dass DailyEstimatedCharges korrekt als Differenz zwischen dem neuesten Datenpunkt und dem vorherigen Datenpunkt berechnet wurde. Sie verwenden diesen Ausdruck, um Ihren CloudWatch-Alarm zu erstellen.

Erstellen Sie einen CloudWatch-Alarm mithilfe der AWS-Managementkonsole

1.    Folgen Sie den Schritten unter Erstellen eines CloudWatch-Alarms auf der Grundlage eines metrischen mathematischen Ausdrucks.

2.    Fügen Sie den folgenden Code in die Registerkarte Quelle der CloudWatch-Metriken ein. Dieser Code erstellt einen metrischen mathematischen Ausdruck [IF(RATE(m1)>0,RATE(m1)*86400,0)] , wobei EstimatedCharges als Basismetrik mit der Bezeichnung "m1" verwendet wird.

{
    "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.    Erstellen Sie einen CloudWatch-Alarm für den MetricMath-Ausdruck. Wählen Sie dazu grafische Metriken. Wählen Sie in der Spalte Aktionen für die Metrik DailyEstimatedCharges das Alarmsymbol.

4.    Gehen Sie im Assistenten zur Erstellung von CloudWatch-Alarmen wie folgt vor: Bestätigen Sie die Details der metrischen Konfiguration. Fügen Sie einen entsprechenden Schwellenwert hinzu, um Benachrichtigungen zu erhalten, wenn der Schwellenwert überschritten wird (z. B. 50 USD). Konfigurieren Sie Ihre Alarmaktionen. Fügen Sie einen Alarmnamen und eine Beschreibung hinzu.

Erstellen Sie einen CloudWatch-Alarm mit der AWS-CLI

1.    Erstellen Sie eine Alarmkonfiguration als JSON-Datei:

$ 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
    }]
}

Hinweis: Achten Sie darauf, die REGION, ACCOUNT_ID und SNS_TOPIC_NAME mit Ihren entsprechenden Werten zu aktualisieren.

2.    Rufen Sie die PutMetricAlarm API auf:

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

(Optional) Ermitteln Sie die zehn Personen, die am Vortag am meisten zum Wert von Maximum DailyEstimatedCharges beigetragen haben

Verwenden Sie die folgende Abfrage:

$ 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

Hinweis: Das unterstützte DateTime-Format für StartTime und EndTime ist '2020-01-01T 00:00:00 Z'.

Wichtig: Für den vorherigen Befehl fallen Gebühren an, die auf der Anzahl der von jedem getMetricData-API-Aufruf abgerufenen Metriken basieren. Weitere Informationen finden Sie unter Amazon CloudWatch-Preise.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren