def aggregatePoints()

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)
      }
    }
  }