2323import org .apache .iotdb .commons .service .metric .enums .Tag ;
2424import org .apache .iotdb .db .pipe .agent .task .subtask .sink .PipeSinkSubtask ;
2525import org .apache .iotdb .metrics .AbstractMetricService ;
26- import org .apache .iotdb .metrics .impl .DoNothingHistogram ;
2726import org .apache .iotdb .metrics .metricsets .IMetricSet ;
2827import org .apache .iotdb .metrics .type .Histogram ;
2928import org .apache .iotdb .metrics .type .Rate ;
@@ -45,14 +44,6 @@ public class PipeDataRegionSinkMetrics implements IMetricSet {
4544
4645 private static final Logger LOGGER = LoggerFactory .getLogger (PipeDataRegionSinkMetrics .class );
4746
48- public static Histogram tabletBatchSizeHistogram = new DoNothingHistogram ();
49-
50- public static Histogram tsFileBatchSizeHistogram = new DoNothingHistogram ();
51-
52- public static Histogram tabletBatchTimeIntervalHistogram = new DoNothingHistogram ();
53-
54- public static Histogram tsFileBatchTimeIntervalHistogram = new DoNothingHistogram ();
55-
5647 @ SuppressWarnings ("java:S3077" )
5748 private volatile AbstractMetricService metricService ;
5849
@@ -75,28 +66,13 @@ public void bindTo(final AbstractMetricService metricService) {
7566 for (String taskID : taskIDs ) {
7667 createMetrics (taskID );
7768 }
78-
79- tabletBatchSizeHistogram =
80- metricService .getOrCreateHistogram (
81- Metric .PIPE_INSERT_NODE_BATCH_SIZE .toString (), MetricLevel .IMPORTANT );
82-
83- tsFileBatchSizeHistogram =
84- metricService .getOrCreateHistogram (
85- Metric .PIPE_TSFILE_BATCH_SIZE .toString (), MetricLevel .IMPORTANT );
86-
87- tabletBatchTimeIntervalHistogram =
88- metricService .getOrCreateHistogram (
89- Metric .PIPE_INSERT_NODE_BATCH_TIME_COST .toString (), MetricLevel .IMPORTANT );
90-
91- tsFileBatchTimeIntervalHistogram =
92- metricService .getOrCreateHistogram (
93- Metric .PIPE_TSFILE_BATCH_TIME_COST .toString (), MetricLevel .IMPORTANT );
9469 }
9570
9671 private void createMetrics (final String taskID ) {
9772 createAutoGauge (taskID );
9873 createRate (taskID );
9974 createTimer (taskID );
75+ createHistogram (taskID );
10076 }
10177
10278 private void createAutoGauge (final String taskID ) {
@@ -245,6 +221,50 @@ private void createTimer(final String taskID) {
245221 String .valueOf (connector .getCreationTime ())));
246222 }
247223
224+ private void createHistogram (final String taskID ) {
225+ final PipeSinkSubtask connector = connectorMap .get (taskID );
226+
227+ final Histogram tabletBatchSizeHistogram =
228+ metricService .getOrCreateHistogram (
229+ Metric .PIPE_INSERT_NODE_BATCH_SIZE .toString (),
230+ MetricLevel .IMPORTANT ,
231+ Tag .NAME .toString (),
232+ connector .getAttributeSortedString (),
233+ Tag .CREATION_TIME .toString (),
234+ String .valueOf (connector .getCreationTime ()));
235+ connector .setTabletBatchSizeHistogram (tabletBatchSizeHistogram );
236+
237+ final Histogram tsFileBatchSizeHistogram =
238+ metricService .getOrCreateHistogram (
239+ Metric .PIPE_TSFILE_BATCH_SIZE .toString (),
240+ MetricLevel .IMPORTANT ,
241+ Tag .NAME .toString (),
242+ connector .getAttributeSortedString (),
243+ Tag .CREATION_TIME .toString (),
244+ String .valueOf (connector .getCreationTime ()));
245+ connector .setTsFileBatchSizeHistogram (tsFileBatchSizeHistogram );
246+
247+ final Histogram tabletBatchTimeIntervalHistogram =
248+ metricService .getOrCreateHistogram (
249+ Metric .PIPE_INSERT_NODE_BATCH_TIME_COST .toString (),
250+ MetricLevel .IMPORTANT ,
251+ Tag .NAME .toString (),
252+ connector .getAttributeSortedString (),
253+ Tag .CREATION_TIME .toString (),
254+ String .valueOf (connector .getCreationTime ()));
255+ connector .setTabletBatchTimeIntervalHistogram (tabletBatchTimeIntervalHistogram );
256+
257+ final Histogram tsFileBatchTimeIntervalHistogram =
258+ metricService .getOrCreateHistogram (
259+ Metric .PIPE_TSFILE_BATCH_TIME_COST .toString (),
260+ MetricLevel .IMPORTANT ,
261+ Tag .NAME .toString (),
262+ connector .getAttributeSortedString (),
263+ Tag .CREATION_TIME .toString (),
264+ String .valueOf (connector .getCreationTime ()));
265+ connector .setTsFileBatchTimeIntervalHistogram (tsFileBatchTimeIntervalHistogram );
266+ }
267+
248268 @ Override
249269 public void unbindFrom (final AbstractMetricService metricService ) {
250270 final ImmutableSet <String > taskIDs = ImmutableSet .copyOf (connectorMap .keySet ());
@@ -255,20 +275,13 @@ public void unbindFrom(final AbstractMetricService metricService) {
255275 LOGGER .warn (
256276 "Failed to unbind from pipe data region connector metrics, connector map not empty" );
257277 }
258-
259- metricService .remove (MetricType .HISTOGRAM , Metric .PIPE_INSERT_NODE_BATCH_SIZE .toString ());
260-
261- metricService .remove (MetricType .HISTOGRAM , Metric .PIPE_TSFILE_BATCH_SIZE .toString ());
262-
263- metricService .remove (MetricType .HISTOGRAM , Metric .PIPE_INSERT_NODE_BATCH_TIME_COST .toString ());
264-
265- metricService .remove (MetricType .HISTOGRAM , Metric .PIPE_TSFILE_BATCH_TIME_COST .toString ());
266278 }
267279
268280 private void removeMetrics (final String taskID ) {
269281 removeAutoGauge (taskID );
270282 removeRate (taskID );
271283 removeTimer (taskID );
284+ removeHistogram (taskID );
272285 }
273286
274287 private void removeAutoGauge (final String taskID ) {
@@ -397,6 +410,38 @@ private void removeTimer(final String taskID) {
397410 compressionTimerMap .remove (connector .getAttributeSortedString ());
398411 }
399412
413+ private void removeHistogram (final String taskID ) {
414+ final PipeSinkSubtask connector = connectorMap .get (taskID );
415+ metricService .remove (
416+ MetricType .HISTOGRAM ,
417+ Metric .PIPE_INSERT_NODE_BATCH_SIZE .toString (),
418+ Tag .NAME .toString (),
419+ connector .getAttributeSortedString (),
420+ Tag .CREATION_TIME .toString (),
421+ String .valueOf (connector .getCreationTime ()));
422+ metricService .remove (
423+ MetricType .HISTOGRAM ,
424+ Metric .PIPE_TSFILE_BATCH_SIZE .toString (),
425+ Tag .NAME .toString (),
426+ connector .getAttributeSortedString (),
427+ Tag .CREATION_TIME .toString (),
428+ String .valueOf (connector .getCreationTime ()));
429+ metricService .remove (
430+ MetricType .HISTOGRAM ,
431+ Metric .PIPE_INSERT_NODE_BATCH_TIME_COST .toString (),
432+ Tag .NAME .toString (),
433+ connector .getAttributeSortedString (),
434+ Tag .CREATION_TIME .toString (),
435+ String .valueOf (connector .getCreationTime ()));
436+ metricService .remove (
437+ MetricType .HISTOGRAM ,
438+ Metric .PIPE_TSFILE_BATCH_TIME_COST .toString (),
439+ Tag .NAME .toString (),
440+ connector .getAttributeSortedString (),
441+ Tag .CREATION_TIME .toString (),
442+ String .valueOf (connector .getCreationTime ()));
443+ }
444+
400445 //////////////////////////// register & deregister (pipe integration) ////////////////////////////
401446
402447 public void register (@ NonNull final PipeSinkSubtask pipeSinkSubtask ) {
0 commit comments