如何将地图传递给AWS cloudwatch

时间:2017-01-03 23:16:32

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

我有来自不同应用程序的指标图,我想将它们写入AWSCloud watch。

我该怎么做?

PS:我在解析整个地图后尝试使用指标名称和指标值,但这对我来说并不是一个好方法。

谢谢!

1 个答案:

答案 0 :(得分:0)

Cloudwatch应该能够轻松跟上您的指标量,因此我只需对来自源应用程序的每个批次使用1 PutMetricDataRequest,让Cloudwatch进行聚合。

如果您查看PutMetricDataRequest,则需要Collection<MetricDatum>,这非常适合接收您在单个请求中从源应用程序接收的任意数量的密钥。

====

使用Java8流API将HashMap转换为List非常简单:

假设您的地图是一个键=&gt;价值图:

Map<String, Object> metricMap = new HashMap<>();
metricMap.put("metricKey", 99);

您可以将Java8流API与map和collect:

一起使用
List<MetricDatum> metrics = metricMap.entrySet().parallelStream()
        .map(map -> new MetricDatum()
                .withMetricName(map.getKey())
                .withUnit(StandardUnit.Count)
                .withValue(Double.valueOf(map.getValue().toString()))
        ).collect(Collectors.toList());