<dependencies>
<dependency>
<groupId>software.amazon.cloudwatch</groupId>
<artifactId>aws-java-sdk-cloudwatch</artifactId>
<version>1.12.0</version>
</dependency>
</dependencies>
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.PutMetricDataRequest;
CloudWatchClient cloudWatchClient = CloudWatchClient.builder().build();
public class MyApplication {
private static final String APPLICATION_NAME = "MyApplication";
private static final String PROCESSING_TIME_METRIC_NAME = "ProcessingTime";
private static final String PROCESSING_TIME_METRIC_UNIT = "Milliseconds";
public void processRequest() {
long startTime = System.currentTimeMillis();
long endTime = System.currentTimeMillis();
long processingTime = endTime - startTime;
sendMetricToCloudWatch(processingTime);
}
private void sendMetricToCloudWatch(long processingTime) {
Dimension dimension = Dimension.builder()
.name(APPLICATION_NAME)
.value(PROCESSING_TIME_METRIC_NAME)
.build();
MetricDatum metricDatum = MetricDatum.builder()
.metricName(PROCESSING_TIME_METRIC_NAME)
.unit(PROCESSING_TIME_METRIC_UNIT)
.value((double) processingTime)
.dimensions(Collections.singleton(dimension))
.build();
PutMetricDataRequest metricDataRequest = PutMetricDataRequest.builder()
.namespace("MyNamespace")
.metricData(Collections.singleton(metricDatum))
.build();
cloudWatchClient.putMetricData(metricDataRequest);
}
}