【问题标题】:AWS CloudWatch GetMetricsData: "Sum" misses points on periods without valuesAWS CloudWatch GetMetricData:在没有值的期间“总和”错过的点
【发布时间】:2018-11-16 04:46:11
【问题描述】:

我正在从 AWS CloudWatch 查询 GetMetricsData

                 {
                    StartTime: lastWeek ,
                    EndTime: today,
                    MetricDataQueries: [
                        {
                            Id: 'invocations',
                            Label: 'Invocations',
                            MetricStat: {
                                Metric: {
                                    Dimensions: [
                                        {
                                            Name: 'FunctionName',
                                            Value: /* FunctionName */,
                                        },
                                    ],
                                    MetricName: 'Invocations',
                                    Namespace: 'AWS/Lambda'
                                },
                                Period: 60*60*24, // day
                                Stat: 'Sum',
                                Unit: 'Count',
                            },
                        },
                    ],
                }

这是我得到的:

我得到 5 天的数据,而不是 7 天(即一周)的数据。我有 2 天失踪(如图所示)。

那些缺失的日子没有任何数据。

CloudWatch 不会返回没有数据的点。如何让Sum 操作返回实际计数 (0)?

【问题讨论】:

    标签: amazon-web-services aws-sdk amazon-cloudwatch aws-sdk-js amazon-cloudwatch-metrics


    【解决方案1】:

    您可以使用度量数学和 FILL 函数将缺失值默认为 0。

    您的指标 ID 为 invocations,因此表达式为:

    FILL(invocations, 0) 
    

    完整的查询类似于:

                 {
                    StartTime: lastWeek ,
                    EndTime: today,
                    MetricDataQueries: [
                        {
                            Id: 'result',
                            Label: 'Sums with zeros',
                            Expression: 'FILL(invocations, 0)'
                        },
                        {
                            Id: 'invocations',
                            Label: 'Invocations',
                            MetricStat: {
                                Metric: {
                                    Dimensions: [
                                        {
                                            Name: 'FunctionName',
                                            Value: /* FunctionName */,
                                        },
                                    ],
                                    MetricName: 'Invocations',
                                    Namespace: 'AWS/Lambda'
                                },
                                Period: 60*60*24, // day
                                Stat: 'Sum',
                                Unit: 'Count',
                            },
                        },
                    ],
                }
    

    这将返回 2 个指标,带零和不带零。然后,您可以通过在该 MetricDataQuery 中设置 ReturnData: false 来隐藏原始指标。

    更多详情请看这里:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 2021-11-04
      • 2021-12-11
      • 1970-01-01
      • 2018-08-24
      相关资源
      最近更新 更多