in common/src/main/scala/metrics/MetricActor.scala [60:87]
def aggregatePoints(points: List[MetricDataPoint]): Unit = {
if (points.isEmpty) {
logger.debug(s"No metric sent to cloudwatch.")
} else {
val metricsPerNamespaceBatches = aggregatePointsPerNamespaceBatches(points)
val metricsCount = metricsPerNamespaceBatches.foldLeft(0) { case (sum, (_, batch)) => sum + batch.size }
val batchesCount = metricsPerNamespaceBatches.size
val namespacesCount = metricsPerNamespaceBatches.map(_._1).toSet.size
try {
metricsPerNamespaceBatches.foreach { case (namespace, awsMetricBatch) =>
val metricRequest = new PutMetricDataRequest()
metricRequest.setNamespace(s"$namespace/$stage/$appName")
metricRequest.setMetricData(awsMetricBatch.asJava)
cloudWatchClient.putMetricData(metricRequest)
}
logger.info("Sent metrics to cloudwatch. " +
s"Data points: ${points.size}, " +
s"Metrics: $metricsCount, " +
s"Namespaces: $namespacesCount, " +
s"Batches: $batchesCount")
} catch {
case e: Exception => logger.error(s"Unable to send metrics to cloudwatch", e)
}
}
}