in app/story_packages/metrics/CloudWatch.scala [47:71]
def putMetricsWithStage(metrics: List[FrontendMetric], applicationDimension: Dimension, stageDimension: Dimension): Unit =
putMetrics("Application", metrics, List(stageDimension, applicationDimension))
def putMetrics(metricNamespace: String, metrics: List[FrontendMetric], dimensions: List[Dimension]): Unit = {
for {
metricGroup <- metrics.filterNot(_.isEmpty).grouped(20)
} {
val metricsAsStatistics: List[FrontendStatisticSet] =
metricGroup.map( metric => FrontendStatisticSet(metric, metric.getAndResetDataPoints))
val request = new PutMetricDataRequest()
.withNamespace(metricNamespace)
.withMetricData {
val metricData = for(metricStatistic <- metricsAsStatistics) yield {
new MetricDatum()
.withStatisticValues(frontendMetricToStatisticSet(metricStatistic))
.withUnit(metricStatistic.metric.metricUnit)
.withMetricName(metricStatistic.metric.name)
.withDimensions(dimensions.asJava)
}
metricData.asJava
}
cloudwatch.foreach(_.putMetricDataAsync(request, AsyncHandlerForMetric(metricsAsStatistics)))
}
}