Publish custom metric data to CloudWatch
A number of AWS services publish their own metrics in namespaces beginning with "
AWS
" You can also publish custom metric data using your own namespace (as long as it
doesn’t begin with "
AWS
").
Publish custom metric data
To publish your own metric data, call the CloudWatchClient’s putMetricData
method with a PutMetricDataRequestPutMetricDataRequest
must include the
custom namespace to use for the data, and information about the data point itself in a
MetricDatum
Note
You cannot specify a namespace that begins with "
AWS
". Namespaces that begin with "
AWS
" are
reserved for use by Amazon Web Services products.
Imports
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.cloudwatch.CloudWatchClient; import software.amazon.awssdk.services.cloudwatch.model.Dimension; import software.amazon.awssdk.services.cloudwatch.model.MetricDatum; import software.amazon.awssdk.services.cloudwatch.model.StandardUnit; import software.amazon.awssdk.services.cloudwatch.model.PutMetricDataRequest; import software.amazon.awssdk.services.cloudwatch.model.CloudWatchException; import java.time.Instant; import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter;
Code
public static void putMetData(CloudWatchClient cw, Double dataPoint ) { try { Dimension dimension = Dimension.builder() .name("UNIQUE_PAGES") .value("URLS") .build(); // Set an Instant object String time = ZonedDateTime.now( ZoneOffset.UTC ).format( DateTimeFormatter.ISO_INSTANT ); Instant instant = Instant.parse(time); MetricDatum datum = MetricDatum.builder() .metricName("PAGES_VISITED") .unit(StandardUnit.NONE) .value(dataPoint) .timestamp(instant) .dimensions(dimension).build(); PutMetricDataRequest request = PutMetricDataRequest.builder() .namespace("SITE/TRAFFIC") .metricData(datum).build(); cw.putMetricData(request); } catch (CloudWatchException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } System.out.printf("Successfully put data point %f", dataPoint); }
See the complete example
More information
-
Use Amazon CloudWatch Metrics in the Amazon CloudWatch User Guide.
-
AWS Namespaces in the Amazon CloudWatch User Guide.
-
PutMetricData in the Amazon CloudWatch API Reference.