in src/main/java/com/amazonaws/services/kinesis/scaling/auto/StreamMetricManager.java [66:95]
public StreamMetricManager(String streamName, int cloudWatchPeriod, List<KinesisOperationType> types,
CloudWatchClient cloudWatchClient, KinesisClient kinesisClient) {
this.streamName = streamName;
this.trackedOperations.addAll(types);
this.cloudWatchClient = cloudWatchClient;
this.kinesisClient = kinesisClient;
this.cloudWatchPeriod = cloudWatchPeriod;
for (KinesisOperationType op : this.trackedOperations) {
// create CloudWatch request templates for the information we have
// at this point
for (String metricName : op.getMetricsToFetch()) {
GetMetricStatisticsRequest.Builder cwRequestBuilder = GetMetricStatisticsRequest.builder();
cwRequestBuilder.namespace(CW_NAMESPACE)
.dimensions(Dimension.builder().name("StreamName").value(this.streamName).build())
.period(cloudWatchPeriod).statistics(Statistic.SUM).metricName(metricName);
if (!this.cloudwatchRequestTemplates.containsKey(op)) {
this.cloudwatchRequestTemplates.put(op, new ArrayList<GetMetricStatisticsRequest.Builder>() {
{
add(cwRequestBuilder);
}
});
} else {
this.cloudwatchRequestTemplates.get(op).add(cwRequestBuilder);
}
}
}
}