Стоимость вызовов GetMetricData Api при использовании metri c math? - PullRequest
0 голосов
/ 27 февраля 2020

Я работаю над внедрением метрик из Lambda в нашу централизованную систему ведения журналов. Наша первая идея слишком дорогая, поэтому я пытаюсь выяснить, есть ли способ снизить ее стоимость (вместо потребления 3 метрик из 200 лямбд каждые 60 с).

Я возился с MetricMath и в значительной степени понял, что я хочу сделать. Я бы запустил это как работу cron'а типа k8s и менял время начала и окончания.

Как это будет заряжаться? Это число метрик, используемых для выполнения математических операций, или количество значений, которые я вывожу?

т.е. m1 и m2 вытягивают ошибки и вызовы из 200 лямбд. Вытащить каждое из этих значений по отдельности будет 400 метрик.

В этом методе это будет только 1, 3 или 401?

{
        "MetricDataQueries": [
    {
        "Id": "m1",
        "MetricStat": {
                "Metric": {
                        "Namespace": "AWS/Lambda",
                        "MetricName": "Errors"
                },
                "Period": 300,
                "Stat": "Sum",
                "Unit": "Count"
        },
        "ReturnData": false
        },
        {
        "Id": "m2",
        "MetricStat": {
                "Metric": {
                        "Namespace": "AWS/Lambda",
                        "MetricName": "Invocations"
                },
                "Period": 300,
                "Stat": "Sum",
                "Unit": "Count"
        },
        "ReturnData": false
        },
        {
        "Id": "e1",
        "Expression": "m1 / m2",
        "Label": "ErrorRate"
    }
    ],
    "StartTime": "2020-02-25T02:00:0000",
    "EndTime": "2020-02-26T02:05:0000"
}

Вывод:

{
    "Messages": [],
    "MetricDataResults": [
        {
            "Label": "ErrorRate",
            "StatusCode": "Complete",
            "Values": [
                0.0045127626568890146
            ],
            "Id": "e1",
            "Timestamps": [
                "2020-02-26T19:00:00Z"
            ]
        }
    ]
}

Пример 2:

Тот же принцип. Это вызывает вызов каждой функции по FunctionName. Затем он сортирует их и выводит наиболее вызванные. Есть идеи, сколько будет метрик?

{
    "MetricDataQueries": [
    {
        "Id": "e2",
        "Expression": "SEARCH(' {AWS/Lambda,FunctionName} MetricName=`Invocations` ', 'Sum', 60)",
        "ReturnData" : false
    },
    {
        "Id": "e3",
        "Expression": "SORT(e2, SUM, DESC, 1)"
    }
],
"StartTime": "2020-02-26T12:00:0000",
"EndTime": "2020-02-26T12:01:0000"

}

Тот же вопрос. 1 или 201 метрика?

Вывод:

{
    "MetricDataResults": [
        {
            "Id": "e3",
            "Timestamps": [
                "2020-02-26T12:00:00Z"
            ],
            "Label": "1 - FunctionName",
            "Values": [
                91.0
            ],
            "StatusCode": "Complete"
        }
    ],
    "Messages": []
}

1 Ответ

0 голосов
/ 27 февраля 2020

Тарификация на запрошена метрика : https://aws.amazon.com/cloudwatch/pricing/

В первом примере вы запрашиваете только 2 метрики. Эти метрики являются агрегатами метрик для каждой лямбда-функции, но, насколько вам известно, это только 2 метрики, и вам будет выставлен счет за 2. Вы не выставляете счет по метрике c, только по запрашиваемым метрикам.

Во втором примере число метрик, которое возвращает поиск, представляет собой сумму, за которую вам будет выставлен счет, 200 в вашем случае.

...