Skip to content

Commit 5c1b315

Browse files
committed
feat: added prometheus logs balances
1 parent da08a22 commit 5c1b315

File tree

5 files changed

+38
-26
lines changed

5 files changed

+38
-26
lines changed

src/common/prometheus/prometheus.service.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,24 @@ export class PrometheusService {
3535
labelNames: ENV_KEYS,
3636
});
3737

38-
public validatorsState = this.getOrCreateMetric('Gauge', {
39-
name: METRICS_PREFIX + 'validators_state',
40-
help: 'balances of Lido validators with withdrawable_epoch by frames',
41-
labelNames: ['frame', 'balance'],
38+
public sumValidatorsBalances = this.getOrCreateMetric('Gauge', {
39+
name: METRICS_PREFIX + 'sum_validators_balances',
40+
help: 'sum balances of Lido validators with withdrawable_epoch',
41+
});
42+
43+
public balancesStateUnfinalized = this.getOrCreateMetric('Gauge', {
44+
name: METRICS_PREFIX + 'balances_state_unfinalized',
45+
help: 'Unfinalized ETH balance',
46+
});
47+
48+
public balancesStateBuffer = this.getOrCreateMetric('Gauge', {
49+
name: METRICS_PREFIX + 'balances_state_buffer',
50+
help: 'Buffer ETH balance',
51+
});
52+
53+
public balancesStateVaults = this.getOrCreateMetric('Gauge', {
54+
name: METRICS_PREFIX + 'balances_state_vaults',
55+
help: 'Vaults ETH balance',
4256
});
4357

4458
public clApiRequestDuration = this.getOrCreateMetric('Histogram', {

src/common/utils/to-eth.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { BigNumber } from '@ethersproject/bignumber';
2+
3+
export const toEth = (bigNumberWei: BigNumber) => {
4+
return bigNumberWei.div(BigNumber.from('1000000000000000000'));
5+
};

src/http/request-time/request-time.service.ts

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { Inject, Injectable, LoggerService } from '@nestjs/common';
22

3-
import { BigNumber } from '@ethersproject/bignumber';
43
import { LOGGER_PROVIDER } from '@lido-nestjs/logger';
54
import { parseEther } from '@ethersproject/units';
65

@@ -54,18 +53,8 @@ export class RequestTimeService {
5453
};
5554
}
5655

57-
async getRequestTimeV2({
58-
amount,
59-
cached,
60-
}: {
61-
amount: string;
62-
cached?: {
63-
unfinalized: BigNumber;
64-
buffer: BigNumber;
65-
vaultsBalance: BigNumber;
66-
};
67-
}): Promise<RequestTimeV2Dto | null> {
68-
return await this.waitingTimeService.getWaitingTimeInfo({ amount, cached });
56+
async getRequestTimeV2({ amount }: { amount: string }): Promise<RequestTimeV2Dto | null> {
57+
return await this.waitingTimeService.getWaitingTimeInfo({ amount });
6958
}
7059

7160
async getTimeRequests(requestOptions: RequestsTimeOptionsDto) {

src/jobs/validators/validators.service.ts

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { stringifyFrameBalances } from 'common/validators/strigify-frame-balance
2121
import { getValidatorWithdrawalTimestamp } from './utils/get-validator-withdrawal-timestamp';
2222
import { IndexedValidator, ResponseValidatorsData } from '../../common/consensus-provider/consensus-provider.types';
2323
import { SweepService } from '../../common/sweep';
24+
import { toEth } from '../../common/utils/to-eth';
2425

2526
export class ValidatorsService {
2627
static SERVICE_LOG_NAME = 'validators';
@@ -198,7 +199,6 @@ export class ValidatorsService {
198199
);
199200

200201
for (let j = 0; j < batch.length; j++) {
201-
const validatorId = batch[j];
202202
const stateValidator = stateValidators[j];
203203

204204
const withdrawalTimestamp = getValidatorWithdrawalTimestamp(
@@ -242,13 +242,10 @@ export class ValidatorsService {
242242
currentFrame,
243243
});
244244

245-
Object.keys(frameBalances).forEach((frame) => {
246-
this.prometheusService.validatorsState
247-
.labels({
248-
frame,
249-
balance: frameBalances[frame].toString(),
250-
})
251-
.inc();
252-
});
245+
const sum = Object.keys(frameBalances).reduce((acc, item) => {
246+
return acc.add(frameBalances[item]);
247+
}, BigNumber.from(0));
248+
249+
this.prometheusService.sumValidatorsBalances.set(toEth(sum).toNumber());
253250
}
254251
}

src/waiting-time/waiting-time.service.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
} from 'storage';
1212
import { LOGGER_PROVIDER, LoggerService } from 'common/logger';
1313
import { GenesisTimeService, SECONDS_PER_SLOT, SLOTS_PER_EPOCH } from 'common/genesis-time';
14+
import { PrometheusService } from 'common/prometheus';
1415
import { RewardsService } from 'events/rewards';
1516

1617
import {
@@ -38,6 +39,7 @@ import {
3839
GetWaitingTimeInfoV2Result,
3940
} from './waiting-time.types';
4041
import { SimpleFallbackJsonRpcBatchProvider } from '@lido-nestjs/execution';
42+
import { toEth } from '../common/utils/to-eth';
4143

4244
@Injectable()
4345
export class WaitingTimeService {
@@ -52,6 +54,7 @@ export class WaitingTimeService {
5254
protected readonly rewardsService: RewardsService,
5355
protected readonly queueInfo: QueueInfoStorageService,
5456
protected readonly provider: SimpleFallbackJsonRpcBatchProvider,
57+
protected readonly prometheusService: PrometheusService,
5558
) {}
5659

5760
// preparing all needed number for calculation withdrawal time
@@ -307,6 +310,10 @@ export class WaitingTimeService {
307310
this.rewardsService.getVaultsBalance(blockNumber),
308311
]);
309312

313+
this.prometheusService.balancesStateUnfinalized.set(toEth(unfinalized).toNumber());
314+
this.prometheusService.balancesStateBuffer.set(toEth(buffer).toNumber());
315+
this.prometheusService.balancesStateVaults.set(toEth(vaultsBalance).toNumber());
316+
310317
return Promise.all(
311318
ids.map((requestId) => this.getWaitingTimeInfoById({ requestId, unfinalized, buffer, vaultsBalance })),
312319
);

0 commit comments

Comments
 (0)