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?