Я работаю над внедрением метрик из 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": []
}