11package tech .ydb .apps ;
22
33import java .sql .SQLException ;
4+ import java .time .Duration ;
45import java .util .Arrays ;
56import java .util .EnumMap ;
67import java .util .Map ;
1314import java .util .function .Function ;
1415
1516import io .micrometer .core .instrument .Counter ;
16- import io .micrometer .core .instrument .DistributionSummary ;
1717import io .micrometer .core .instrument .MeterRegistry ;
18+ import io .micrometer .core .instrument .Timer ;
1819import org .slf4j .Logger ;
1920import org .springframework .retry .RetryCallback ;
2021import org .springframework .retry .RetryContext ;
@@ -35,10 +36,11 @@ public class AppMetrics {
3536 private static final Counter .Builder SDK_OPERATIONS_FAILTURE = Counter .builder ("sdk.operations.failture" );
3637 private static final Counter .Builder SDK_RETRY_ATTEMPS = Counter .builder ("sdk.retry.attempts" );
3738
38- // private static final Timer.Builder SDK_OPERATION_LATENCY = Timer.builder("sdk.operation.latency")
39- private static final DistributionSummary .Builder SDK_OPERATION_LATENCY = DistributionSummary
40- .builder ("sdk.operation.latency" )
41- .serviceLevelObjectives (0.001 , 0.002 , 0.003 , 0.004 , 0.005 , 0.0075 , 0.01 , 0.02 , 0.05 , 0.1 , 0.2 , 0.5 , 1 );
39+ private static final Timer .Builder SDK_OPERATION_LATENCY = Timer .builder ("sdk.operation.latency" )
40+ // .serviceLevelObjectives(Duration.ofMillis(8), Duration.ofMillis(16), Duration.ofMillis(32),
41+ // Duration.ofMillis(64), Duration.ofMillis(128), Duration.ofMillis(256), Duration.ofMillis(512),
42+ // Duration.ofMillis(1024), Duration.ofMillis(2048), Duration.ofMillis(4096))
43+ .publishPercentiles (0.5 , 0.9 , 0.95 , 0.99 );
4244
4345 public class Method {
4446 private final String name ;
@@ -53,10 +55,10 @@ public class Method {
5355 private final Counter successCounter ;
5456 private final Map <StatusCode , Counter > errorsCountersMap = new EnumMap <>(StatusCode .class );
5557 private final Map <StatusCode , Counter > retriesCountersMap = new EnumMap <>(StatusCode .class );
56- private final Map <StatusCode , DistributionSummary > durationTimerMap = new EnumMap <>(StatusCode .class );
58+ private final Map <StatusCode , Timer > durationTimerMap = new EnumMap <>(StatusCode .class );
5759 private final Function <StatusCode , Counter > errorCounter ;
5860 private final Function <StatusCode , Counter > retriesCounter ;
59- private final Function <StatusCode , DistributionSummary > durationTimer ;
61+ private final Function <StatusCode , Timer > durationTimer ;
6062
6163 private volatile long lastPrinted = 0 ;
6264
@@ -104,7 +106,7 @@ public void measure(Runnable run) {
104106 timeMs .add (ms );
105107 totalTimeMs .add (ms );
106108
107- durationTimer .apply (code ).record (0.001 * ms );
109+ durationTimer .apply (code ).record (Duration . ofMillis ( ms ) );
108110 }
109111 }
110112
0 commit comments