2020import java .util .List ;
2121import java .util .regex .Pattern ;
2222
23+ import org .apache .kafka .common .MetricNameTemplate ;
2324import org .apache .kafka .common .metrics .JmxReporter ;
2425import org .apache .kafka .common .metrics .KafkaMetricsContext ;
2526import org .apache .kafka .common .metrics .MetricConfig ;
3738import com .google .cloud .ServiceOptions ;
3839import com .google .cloud .http .HttpTransportOptions ;
3940
40- class MetricCollector {
41+ import static io .aiven .kafka .tieredstorage .storage .gcs .MetricRegistry .METRIC_CONTEXT ;
42+ import static io .aiven .kafka .tieredstorage .storage .gcs .MetricRegistry .OBJECT_DELETE ;
43+ import static io .aiven .kafka .tieredstorage .storage .gcs .MetricRegistry .OBJECT_DELETE_RATE_METRIC_NAME ;
44+ import static io .aiven .kafka .tieredstorage .storage .gcs .MetricRegistry .OBJECT_DELETE_TOTAL_METRIC_NAME ;
45+ import static io .aiven .kafka .tieredstorage .storage .gcs .MetricRegistry .OBJECT_GET ;
46+ import static io .aiven .kafka .tieredstorage .storage .gcs .MetricRegistry .OBJECT_GET_RATE_METRIC_NAME ;
47+ import static io .aiven .kafka .tieredstorage .storage .gcs .MetricRegistry .OBJECT_GET_TOTAL_METRIC_NAME ;
48+ import static io .aiven .kafka .tieredstorage .storage .gcs .MetricRegistry .OBJECT_METADATA_GET ;
49+ import static io .aiven .kafka .tieredstorage .storage .gcs .MetricRegistry .OBJECT_METADATA_GET_RATE_METRIC_NAME ;
50+ import static io .aiven .kafka .tieredstorage .storage .gcs .MetricRegistry .OBJECT_METADATA_GET_TOTAL_METRIC_NAME ;
51+ import static io .aiven .kafka .tieredstorage .storage .gcs .MetricRegistry .RESUMABLE_CHUNK_UPLOAD ;
52+ import static io .aiven .kafka .tieredstorage .storage .gcs .MetricRegistry .RESUMABLE_CHUNK_UPLOAD_RATE_METRIC_NAME ;
53+ import static io .aiven .kafka .tieredstorage .storage .gcs .MetricRegistry .RESUMABLE_CHUNK_UPLOAD_TOTAL_METRIC_NAME ;
54+ import static io .aiven .kafka .tieredstorage .storage .gcs .MetricRegistry .RESUMABLE_UPLOAD_INITIATE ;
55+ import static io .aiven .kafka .tieredstorage .storage .gcs .MetricRegistry .RESUMABLE_UPLOAD_INITIATE_RATE_METRIC_NAME ;
56+ import static io .aiven .kafka .tieredstorage .storage .gcs .MetricRegistry .RESUMABLE_UPLOAD_INITIATE_TOTAL_METRIC_NAME ;
57+
58+ public class MetricCollector {
4159 private final org .apache .kafka .common .metrics .Metrics metrics ;
4260
4361 /**
@@ -64,33 +82,55 @@ class MetricCollector {
6482 static final Pattern OBJECT_UPLOAD_PATH_PATTERN =
6583 Pattern .compile ("^/upload/storage/v1/b/([^/]+)/o/?$" );
6684
67- private static final String METRIC_GROUP = "gcs-client-metrics" ;
68-
6985 private final Sensor getObjectMetadataRequests ;
7086 private final Sensor deleteObjectRequests ;
7187 private final Sensor resumableUploadInitiateRequests ;
7288 private final Sensor resumableChunkUploadRequests ;
7389 private final Sensor getObjectRequests ;
7490
75- MetricCollector () {
91+ public MetricCollector () {
7692 final JmxReporter reporter = new JmxReporter ();
7793
7894 metrics = new org .apache .kafka .common .metrics .Metrics (
7995 new MetricConfig (), List .of (reporter ), Time .SYSTEM ,
80- new KafkaMetricsContext ("aiven.kafka.server.tieredstorage.gcs" )
96+ new KafkaMetricsContext (METRIC_CONTEXT )
8197 );
8298
83- getObjectMetadataRequests = createSensor ("object-metadata-get" );
84- getObjectRequests = createSensor ("object-get" );
85- deleteObjectRequests = createSensor ("object-delete" );
86- resumableUploadInitiateRequests = createSensor ("resumable-upload-initiate" );
87- resumableChunkUploadRequests = createSensor ("resumable-chunk-upload" );
99+ getObjectMetadataRequests = createSensor (
100+ OBJECT_METADATA_GET ,
101+ OBJECT_METADATA_GET_RATE_METRIC_NAME ,
102+ OBJECT_METADATA_GET_TOTAL_METRIC_NAME
103+ );
104+ getObjectRequests = createSensor (
105+ OBJECT_GET ,
106+ OBJECT_GET_RATE_METRIC_NAME ,
107+ OBJECT_GET_TOTAL_METRIC_NAME
108+ );
109+ deleteObjectRequests = createSensor (
110+ OBJECT_DELETE ,
111+ OBJECT_DELETE_RATE_METRIC_NAME ,
112+ OBJECT_DELETE_TOTAL_METRIC_NAME
113+ );
114+ resumableUploadInitiateRequests = createSensor (
115+ RESUMABLE_UPLOAD_INITIATE ,
116+ RESUMABLE_UPLOAD_INITIATE_RATE_METRIC_NAME ,
117+ RESUMABLE_UPLOAD_INITIATE_TOTAL_METRIC_NAME
118+ );
119+ resumableChunkUploadRequests = createSensor (
120+ RESUMABLE_CHUNK_UPLOAD ,
121+ RESUMABLE_CHUNK_UPLOAD_RATE_METRIC_NAME ,
122+ RESUMABLE_CHUNK_UPLOAD_TOTAL_METRIC_NAME
123+ );
88124 }
89125
90- private Sensor createSensor (final String name ) {
126+ private Sensor createSensor (
127+ final String name ,
128+ final MetricNameTemplate rateMetricName ,
129+ final MetricNameTemplate totalMetricName
130+ ) {
91131 final Sensor sensor = metrics .sensor (name );
92- sensor .add (metrics .metricName ( name + "-rate" , METRIC_GROUP ), new Rate ());
93- sensor .add (metrics .metricName ( name + "-total" , METRIC_GROUP ), new CumulativeCount ());
132+ sensor .add (metrics .metricInstance ( rateMetricName ), new Rate ());
133+ sensor .add (metrics .metricInstance ( totalMetricName ), new CumulativeCount ());
94134 return sensor ;
95135 }
96136
0 commit comments