11package io.xh.toolbox.portfolio
22
33import com.hazelcast.replicatedmap.ReplicatedMap
4- import io.micrometer.core.instrument.Gauge
5- import io.micrometer.core.instrument.Timer
64import io.xh.hoist.BaseService
75import io.xh.hoist.cachedvalue.CachedValue
86import io.xh.hoist.exception.DataNotAvailableException
@@ -12,7 +10,6 @@ import java.time.*
1210
1311import static io.xh.toolbox.portfolio.Utils.*
1412import static io.xh.hoist.util.DateTimeUtils.SECONDS
15- import static java.util.concurrent.TimeUnit.MILLISECONDS
1613
1714
1815/**
@@ -26,17 +23,17 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS
2623 */
2724class PortfolioService extends BaseService {
2825
26+ String telemetryPrefix = ' toolbox.portfolio'
27+
28+ MetricsService metricsService
29+
2930 def configService,
3031 orderGenerationService,
3132 historicalPriceGenerationService,
3233 instrumentGenerationService
3334
34- MetricsService metricsService
35-
3635 private CachedValue<Portfolio > _portfolio = createCachedValue(name : ' portfolio' , replicate : true )
3736 private ReplicatedMap<String , MarketPrice > _currentPrices = createReplicatedMap(' currentPrices' )
38- private Timer generationTimer
39- private Gauge positionsGauge
4037
4138 void init () {
4239 initMetrics()
@@ -79,16 +76,24 @@ class PortfolioService extends BaseService {
7976 // Implementation
8077 // ------------------------
8178 private void initMetrics () {
82- def registry = metricsService. registry
79+ metricsService. registerGauge(
80+ name : ' position.count' ,
81+ description : ' Number of portfolio positions' ,
82+ valueFn : { _portfolio. get()?. rawPositions?. size() ?: 0 },
83+ owner : this
84+ )
8385
84- positionsGauge = Gauge . builder(' toolbox.portfolio.positions' , this ) {
85- (_portfolio. get()?. rawPositions?. size() ?: 0 ) as double
86- }. description(' Number of portfolio positions' )
87- .register(registry)
86+ metricsService. configureTimer(
87+ name : ' generation.time' ,
88+ description : ' Time to generate portfolio' ,
89+ owner : this
90+ )
8891
89- generationTimer = Timer . builder(' toolbox.portfolio.generationTime' )
90- .description(' Time to generate portfolio' )
91- .register(registry)
92+ metricsService. configureCounter(
93+ name : ' generation.count' ,
94+ description : ' The number of portfolio generations' ,
95+ owner : this
96+ )
9297 }
9398
9499 private void updateData (boolean force = false ) {
@@ -126,9 +131,10 @@ class PortfolioService extends BaseService {
126131
127132 private Portfolio generatePortfolio () {
128133 observe()
129- .span(name : ' generatePortfolio' )
134+ .span(' generatePortfolio' )
135+ .timer(' generation.time' )
136+ .counter(' generation.count' )
130137 .logInfo(' Generating Portfolio' )
131- .timer(generationTimer)
132138 .run {
133139 def day = LocalDate . now(),
134140 instruments = instrumentGenerationService. generateInstruments(),
@@ -183,8 +189,6 @@ class PortfolioService extends BaseService {
183189 def p = _portfolio. get()
184190 return [
185191 config : configForAdminStats(' portfolioConfigs' ),
186- avgGenerationTime : generationTimer. mean(MILLISECONDS ),
187-
188192 portfolioAvailable : portfolioAvailable,
189193 day : p?. day,
190194 generatedAt : p?. timeCreated,
0 commit comments