22
33import it .pagopa .pn .ec .commons .exception .cloudwatch .CloudWatchResourceNotFoundException ;
44import it .pagopa .pn .ec .commons .model .pojo .cloudwatch .CloudWatchMetricsPublisherWrapper ;
5+ import it .pagopa .pn .library .pec .configurationproperties .PnPecMetricNames ;
56import lombok .CustomLog ;
6- import org .slf4j .event .Level ;
77import org .springframework .beans .factory .annotation .Autowired ;
88import org .springframework .beans .factory .annotation .Value ;
99import org .springframework .context .annotation .Configuration ;
1010import software .amazon .awssdk .metrics .*;
11- import software .amazon .awssdk .metrics .publishers .cloudwatch .CloudWatchMetricPublisher ;
12- import software .amazon .awssdk .metrics .publishers .cloudwatch .internal .CloudWatchMetricLogger ;
1311import software .amazon .awssdk .services .cloudwatch .CloudWatchAsyncClient ;
1412
1513import javax .annotation .PostConstruct ;
1614import java .time .Duration ;
1715import java .util .HashMap ;
16+ import java .util .List ;
1817import java .util .Map ;
1918
2019/**
@@ -32,22 +31,21 @@ public class CloudWatchMetricPublisherConfiguration {
3231 private int maximumCallsPerUpload ;
3332 @ Value ("${cloudwatch.upload-frequency-millis:#{null}}" )
3433 private int uploadFrequencyMillis ;
35- @ Value ("${library.pec.cloudwatch.metric.response-time.mark-message-as-read}" )
36- private String markMessageAsReadResponseTimeMetric ;
37- @ Value ("${library.pec.cloudwatch.metric.response-time.delete-message}" )
38- private String deleteMessageResponseTimeMetric ;
3934 private final CloudWatchAsyncClient cloudWatchAsyncClient ;
4035 private final Map <String , CloudWatchMetricsPublisherWrapper > cloudWatchMetricPublishers = new HashMap <>();
4136 private final Map <String , SdkMetric <?>> cloudWatchSdkMetrics = new HashMap <>();
37+ private final PnPecMetricNames pnPecMetricNames ;
4238
4339 /**
4440 * Instantiates a new CloudWatchMetricPublisherConfiguration.
4541 *
4642 * @param cloudWatchAsyncClient the cloud watch async client
43+ * @param pnPecMetricNames the names of the CloudWatch metrics
4744 */
4845 @ Autowired
49- public CloudWatchMetricPublisherConfiguration (CloudWatchAsyncClient cloudWatchAsyncClient ) {
46+ public CloudWatchMetricPublisherConfiguration (CloudWatchAsyncClient cloudWatchAsyncClient , PnPecMetricNames pnPecMetricNames ) {
5047 this .cloudWatchAsyncClient = cloudWatchAsyncClient ;
48+ this .pnPecMetricNames = pnPecMetricNames ;
5149 }
5250
5351 /**
@@ -56,8 +54,8 @@ public CloudWatchMetricPublisherConfiguration(CloudWatchAsyncClient cloudWatchAs
5654 @ PostConstruct
5755 private void init () {
5856 log .debug ("Initializing CloudWatchMetricPublisher configurations." );
59- initCloudWatchMetricPublishers ();
6057 initCloudWatchSdkMetrics ();
58+ initCloudWatchMetricPublishers ();
6159 }
6260
6361 /**
@@ -98,16 +96,18 @@ public SdkMetric<?> getSdkMetricByMetricName(String metricName) {
9896 * If maximumCallsPerUpload and uploadFrequencyMillis fields are null, CloudWatchMetricPublisher class will use its default values.
9997 */
10098 private void initCloudWatchMetricPublishers () {
101- cloudWatchMetricPublishers .put (arubaPecNamespace , new CloudWatchMetricsPublisherWrapper (arubaPecNamespace , maximumCallsPerUpload , Duration .ofMillis (uploadFrequencyMillis ), cloudWatchAsyncClient ));
102- cloudWatchMetricPublishers .put (namirialPecNamespace , new CloudWatchMetricsPublisherWrapper (namirialPecNamespace , maximumCallsPerUpload , Duration .ofMillis (uploadFrequencyMillis ), cloudWatchAsyncClient ));
99+ SdkMetric <String > payloadSizeRangeDimension = (SdkMetric <String >) cloudWatchSdkMetrics .get (pnPecMetricNames .getPayloadSizeRange ());
100+ SdkMetric <String > messageCountRangeDimension = (SdkMetric <String >) cloudWatchSdkMetrics .get (pnPecMetricNames .getMessageCountRange ());
101+ List <SdkMetric <String >> dimensions = List .of (payloadSizeRangeDimension , messageCountRangeDimension );
102+ cloudWatchMetricPublishers .put (arubaPecNamespace , new CloudWatchMetricsPublisherWrapper (arubaPecNamespace , maximumCallsPerUpload , Duration .ofMillis (uploadFrequencyMillis ), cloudWatchAsyncClient , dimensions ));
103+ cloudWatchMetricPublishers .put (namirialPecNamespace , new CloudWatchMetricsPublisherWrapper (namirialPecNamespace , maximumCallsPerUpload , Duration .ofMillis (uploadFrequencyMillis ), cloudWatchAsyncClient , dimensions ));
103104 }
104105
105106 /**
106107 * Init method to initialize SdkMetrics
107108 */
108109 private void initCloudWatchSdkMetrics () {
109- cloudWatchSdkMetrics .put (markMessageAsReadResponseTimeMetric , SdkMetric .create (markMessageAsReadResponseTimeMetric , Long .class , MetricLevel .INFO , MetricCategory .HTTP_CLIENT ));
110- cloudWatchSdkMetrics .put (deleteMessageResponseTimeMetric , SdkMetric .create (deleteMessageResponseTimeMetric , Long .class , MetricLevel .INFO , MetricCategory .HTTP_CLIENT ));
110+ pnPecMetricNames .getAllMetrics ().forEach (metricName -> cloudWatchSdkMetrics .put (metricName , SdkMetric .create (metricName , Long .class , MetricLevel .INFO , MetricCategory .HTTP_CLIENT )));
111111 }
112112
113113}
0 commit comments