首页 > 解决方案 > 使用度量数学时 GetMetricData Api 调用的成本?

问题描述

我正在将 Lambda 中的指标提取到我们的集中式日志系统中。我们的第一个想法成本太高,所以我想弄清楚是否有办法降低成本(而不是每 60 秒从 200 个 lambda 中提取 3 个指标)。

我一直在搞乱 MetricMath 并且几乎弄清楚了我想要做什么。我会将它作为 k8s cron 作业来运行,并改变开始和结束时间。

这个怎么收费?是用于执行数学运算的指标数量还是我输出的值的数量?

即 m1 和 m2 从 200 个 lambdas 中提取错误和调用。单独提取每个指标将是 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": []
}

标签: amazon-web-servicesaws-lambdaaws-cliamazon-cloudwatchmetrics

解决方案


根据请求的指标计费:https ://aws.amazon.com/cloudwatch/pricing/

在第一个示例中,您只请求 2 个指标。这些指标是每个 lambda 函数指标的聚合,但就您而言,这只是 2 个指标,您需要为 2 个指标付费。您不需要为指标数学付费,只为您请求的指标付费。

在第二个示例中,搜索返回的指标数量是您将支付的金额,在您的情况下为 200。


推荐阅读