CloudWatch: Posted custom metric data successfully, but can't find the data

0

Using this code: https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javav2/example_code/cloudwatch/src/main/java/com/example/cloudwatch/PutMetricAlarm.java

I was able to put a custom metric data successfully:

Successfully put data point 123.000000

However, I'm unable to find the data, cloudwatch metric screenshot: https://www.screencast.com/t/RI3pq8KWmww

I've double checked the region

My scala code:

object TestClass extends App {
  PutMetricData.main(123)
}

object PutMetricData {
  def main(args: Integer): Unit = {
    val dataPoint = args.toDouble
    val region = Region.US_WEST_2
    val cw = CloudWatchClient.builder.region(region).credentialsProvider(ProfileCredentialsProvider.create).build
    putMetData(cw, dataPoint)
    cw.close()
  }

  def putMetData(cw: CloudWatchClient, dataPoint: Double): Unit = {
    try {
      val time = ZonedDateTime.now(ZoneOffset.UTC).format(DateTimeFormatter.ISO_INSTANT)
      val instant = Instant.parse(time)
      val datum = MetricDatum.builder.metricName("PAGES_VISITED1").unit(StandardUnit.NONE).value(dataPoint).timestamp(instant).build
      val request = PutMetricDataRequest.builder.namespace("SITE/TRAFFIC1").metricData(datum).build
      cw.putMetricData(request)
    } catch {
      case e: CloudWatchException =>
      System.err.println(e.awsErrorDetails.errorMessage)
      System.exit(1)
    }
    System.out.printf("Successfully put data point %f", dataPoint)
  }
}

Context: I'm new to AWS, I didn't create any metricNames or nameSpace in AWS, I'm assuming I can change the MetricName & namespace in the code and it'll create it in AWS. Do I have to specify an existing namespace or metricName?

kn
asked 2 years ago393 views
1 Answer
0

I'm not a Scala expert but the code looks good. No need to specify an existing namespace or metric name.

Usually problems like this are caused by timestamp being incorrect, e.g. being in seconds instead of milliseconds - those would get silently dropped and not generate an error. Your code seems to follow the Java SDK exactly though. 🤔

AWS
answered 2 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions