我正在将Lambda的指标吸收到我们的集中式日志记录系统中。我们的第一个想法过于昂贵,因此我试图找出是否有降低成本的方法(而不是每60秒从200个lambda中提取3个指标)。
我一直在搞乱MetricMath,几乎已经弄清楚了我想做什么。我会将其作为k8s cron作业来运行,以使开始和结束时间可变。
如何收费?是用于执行数学运算的指标数量还是我输出的值数量?
即m1和m2正在从200 lambda中提取错误和调用。单独拉取每个指标将是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": []
}
计费是基于请求的指标:https://aws.amazon.com/cloudwatch/pricing/
在第一个示例中,您仅请求2个指标。这些度量标准是每个lambda函数度量标准的汇总,但是就您而言,这仅是2个度量标准,您将需要为2付费。
在第二个示例中,搜索返回的指标数量是您要付费的数量,在这种情况下为200。