amazon-web-services - AWS CloudWatch GetMetricsData:“Sum”在没有值的期间错过了点
问题描述
我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',
},
},
],
}
这就是我得到的:
我没有得到 7 天(即一周)的数据,而是得到 5 天。我有 2 天失踪(如图所示)。
那些失踪的日子没有任何数据。
CloudWatch 不会返回没有数据的点。如何使Sum
操作返回实际计数(0
)?
解决方案
您可以使用度量数学和 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 个指标,带零和不带零。ReturnData: false
然后,您可以通过在该 MetricDataQuery 中进行设置来隐藏原始指标。
有关更多详细信息,请参见此处:
推荐阅读
- keras - 如何在谷歌 colab 中找到 keras.json 文件?
- node.js - 将 Strapi API 部署到 Plesk
- java - X509TrustManager 的 checkServerTrusted 方法中验证了哪些所有参数?
- python - 在 python 的子目录中对具有字母数字字符的列表作为文件名进行排序
- objective-c - VSCode 显示 Objective-C 头文件的“无法识别的令牌”
- sql-server - 将 SQL Server 2016 兼容级别更改为 2012
- angular - ngI18nClosureMode 未定义
- java - 随机线程的多线程
- javascript - d3.each() 一次存储一个值,而不是一次存储所有值
- r - 开发R包,用`foreach`测试,同时用不同的包版本运行模拟