我有一些从cloudwatch api重试的数据。具体来说,我使用了listMetrics
。我从这个电话中得到的数据是:
{Metrics: [{Namespace: Testing, MetricName: hello123, Dimensions: [{Name: name, Value: 1425, }], }, {Namespace: Metric from grails, MetricName: hello123, Dimensions: [{Name: name, Value: 1068, }], },
正如我所料,这是正确的数据。我需要一种方法只返回value
字段。不是别的东西。在java中有没有办法做到这一点?
我用于创建指标的代码是:
MetricDatum metricDatum = new MetricDatum().withMetricName("hello123").withValue(80.0)
Dimension tableDimension = new Dimension()
tableDimension.withName("hello123")
tableDimension.withValue("somvalues")
Collection<Dimension> values = new ArrayList<Dimension>();
values << tableDimension
metricDatum.withDimensions(values)
cloudWatch.putMetricData(new PutMetricDataRequest().withNamespace("Metric from grails").withMetricData(metricDatum))
为了列出尺寸值,我使用:
DimensionFilter tableDimension2 = new DimensionFilter()
tableDimension2.withName("hello123")
Collection<DimensionFilter> values2 = new ArrayList<DimensionFilter>();
values2 << tableDimension2
query = new ListMetricsRequest().withNamespace("Testing").withDimensions(values2)
def result = amazonWebService.cloudWatch.listMetrics(query)
我犯了错误?
提前致谢。
答案 0 :(得分:0)
CloudWatch中的ListMetrics API调用仅返回度量标准定义。您在ListMetrics调用的响应中看到的值不是数据点值,而是维度(名称,值)对,它是度量标准定义的一部分以及度量标准名称和命名空间。
要获取您提交的数据点值,请使用 GetMetricStatistics API调用。您无法针对一组指标调用它。它仅适用于单个度量标准,并返回请求的时间间隔的数据点值。将其视为获取数据点以构建单个图表的调用。
您的整体逻辑可能如下所示:1)为ListMetrics中返回的每个结果调用ListMetrics 2),调用GetMetricStatistics。