1717
1818package org .apache .dolphinscheduler .server .worker .metrics ;
1919
20+ import java .util .concurrent .TimeUnit ;
2021import java .util .function .Supplier ;
2122
22- import io .micrometer .core .instrument .Counter ;
23- import io .micrometer .core .instrument .Gauge ;
24- import io .micrometer .core .instrument .Metrics ;
23+ import io .micrometer .core .instrument .*;
2524import lombok .experimental .UtilityClass ;
2625
2726@ UtilityClass
@@ -37,6 +36,36 @@ public class WorkerServerMetrics {
3736 .description ("full worker submit queues count" )
3837 .register (Metrics .globalRegistry );
3938
39+ private static final Counter WORKER_RESOURCE_DOWNLOAD_COUNTER =
40+ Counter .builder ("ds.worker.resource.download.count" )
41+ .description ("worker resource download count" )
42+ .register (Metrics .globalRegistry );
43+
44+ private static final Counter WORKER_RESOURCE_DOWNLOAD_SUCCESS_COUNTER =
45+ Counter .builder ("ds.worker.resource.download.success.count" )
46+ .description ("worker resource download success count" )
47+ .register (Metrics .globalRegistry );
48+
49+ private static final Counter WORKER_RESOURCE_DOWNLOAD_FAILURE_COUNTER =
50+ Counter .builder ("ds.worker.resource.download.failure.count" )
51+ .description ("worker resource download failure count" )
52+ .register (Metrics .globalRegistry );
53+
54+ private static final Timer WORKER_RESOURCE_DOWNLOAD_DURATION_TIMER =
55+ Timer .builder ("ds.worker.resource.download.duration" )
56+ .publishPercentiles (0.5 , 0.75 , 0.95 , 0.99 )
57+ .publishPercentileHistogram ()
58+ .description ("time cost of resource download on workers" )
59+ .register (Metrics .globalRegistry );
60+
61+ private static final DistributionSummary WORKER_RESOURCE_DOWNLOAD_SIZE_DISTRIBUTION =
62+ DistributionSummary .builder ("ds.worker.resource.download.size" )
63+ .baseUnit ("KB" )
64+ .publishPercentiles (0.5 , 0.75 , 0.95 , 0.99 )
65+ .publishPercentileHistogram ()
66+ .description ("size of downloaded resource files on worker" )
67+ .register (Metrics .globalRegistry );
68+
4069 public static void incWorkerOverloadCount () {
4170 WORKER_OVERLOAD_COUNTER .increment ();
4271 }
@@ -45,6 +74,26 @@ public static void incWorkerSubmitQueueIsFullCount() {
4574 WORKER_SUBMIT_QUEUE_IS_FULL_COUNTER .increment ();
4675 }
4776
77+ public static void incWorkerResourceDownloadCount () {
78+ WORKER_SUBMIT_QUEUE_IS_FULL_COUNTER .increment ();
79+ }
80+
81+ public static void incWorkerResourceDownloadSuccessCount () {
82+ WORKER_SUBMIT_QUEUE_IS_FULL_COUNTER .increment ();
83+ }
84+
85+ public static void incWorkerResourceDownloadFailureCount () {
86+ WORKER_SUBMIT_QUEUE_IS_FULL_COUNTER .increment ();
87+ }
88+
89+ public static void recordWorkerResourceDownloadTime (long milliseconds ) {
90+ WORKER_RESOURCE_DOWNLOAD_DURATION_TIMER .record (milliseconds , TimeUnit .MILLISECONDS );
91+ }
92+
93+ public static void recordWorkerResourceDownloadSize (double size ) {
94+ WORKER_RESOURCE_DOWNLOAD_SIZE_DISTRIBUTION .record (size );
95+ }
96+
4897 public static void registerWorkerRunningTaskGauge (Supplier <Number > supplier ) {
4998 Gauge .builder ("ds.task.running" , supplier )
5099 .description ("number of running tasks on workers" )
0 commit comments