AWS CloudWatch GetMetricsData: «Сумма» пропускает баллы по периодам без значений - PullRequest
0 голосов
/ 15 ноября 2018

Я запрашиваю GetMetricsData из AWS CloudWatch:

                 {
                    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',
                            },
                        },
                    ],
                }

Вот что я получаю:

enter image description here

Вместона получение данных за 7 дней (т.е. за неделю) я получаю 5 дней.У меня 2 пропущенных дня (как вы можете видеть на графике).

В эти пропущенные дни не было никаких данных.

CloudWatch не возвращает точки, в которых нет данных .Как сделать так, чтобы операция Sum возвращала фактический счет (0)?

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете использовать метрику и функцию FILL, чтобы по умолчанию отсутствующие значения были равны 0.

Идентификатор вашей метрики 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 метрики, с нулями и без.Затем вы можете скрыть исходную метрику, установив ReturnData: false в этом MetricDataQuery.

Подробнее см. Здесь:

...