From 79b327ce906ffd74219927be62b6079eaa2bdfd5 Mon Sep 17 00:00:00 2001 From: jayy04 <103467857+jayy04@users.noreply.github.com> Date: Thu, 19 Oct 2023 15:19:03 -0400 Subject: [PATCH] More telemetry improvements for liquidation and deleveraging (#662) --- protocol/x/clob/keeper/deleveraging.go | 8 ++--- protocol/x/clob/keeper/liquidations.go | 11 ++++--- protocol/x/clob/keeper/process_operations.go | 32 ------------------- .../x/clob/keeper/process_single_match.go | 5 ++- .../x/clob/types/stat_internal_operations.go | 16 +++++----- 5 files changed, 20 insertions(+), 52 deletions(-) diff --git a/protocol/x/clob/keeper/deleveraging.go b/protocol/x/clob/keeper/deleveraging.go index 8209ba5f1d..e3248a6e35 100644 --- a/protocol/x/clob/keeper/deleveraging.go +++ b/protocol/x/clob/keeper/deleveraging.go @@ -283,21 +283,21 @@ func (k Keeper) OffsetSubaccountPerpetualPosition( labels := []gometrics.Label{ metrics.GetLabelForIntValue(metrics.PerpetualId, int(perpetualId)), } - telemetry.SetGaugeWithLabels( + gometrics.AddSampleWithLabels( []string{ types.ModuleName, metrics.Deleveraging, metrics.NumSubaccountsIterated, metrics.Count, }, float32(numSubaccountsIterated), labels, ) - telemetry.SetGaugeWithLabels( + gometrics.AddSampleWithLabels( []string{ types.ModuleName, metrics.Deleveraging, metrics.NonOverlappingBankruptcyPrices, metrics.Count, }, float32(numSubaccountsWithNonOverlappingBankruptcyPrices), labels, ) - telemetry.SetGaugeWithLabels( + gometrics.AddSampleWithLabels( []string{ types.ModuleName, metrics.Deleveraging, metrics.NoOpenPositionOnOppositeSide, metrics.Count, }, @@ -428,7 +428,7 @@ func (k Keeper) ProcessDeleveraging( metrics.GetLabelForBoolValue(metrics.CheckTx, ctx.IsCheckTx()), metrics.GetLabelForBoolValue(metrics.IsLong, deltaQuantums.Sign() == -1), } - telemetry.IncrCounterWithLabels( + gometrics.AddSampleWithLabels( []string{types.ModuleName, metrics.DeleverageSubaccount, metrics.Filled, metrics.QuoteQuantums}, metrics.GetMetricValueFromBigInt(deleveragedQuoteQuantums), labels, diff --git a/protocol/x/clob/keeper/liquidations.go b/protocol/x/clob/keeper/liquidations.go index c9cb1d6257..96cb0c6a6f 100644 --- a/protocol/x/clob/keeper/liquidations.go +++ b/protocol/x/clob/keeper/liquidations.go @@ -28,12 +28,13 @@ func (k Keeper) LiquidateSubaccountsAgainstOrderbook( ) error { lib.AssertCheckTxMode(ctx) - telemetry.ModuleSetGauge( - types.ModuleName, + gometrics.AddSample( + []string{ + metrics.Liquidations, + metrics.LiquidatableSubaccountIds, + metrics.Count, + }, float32(len(subaccountIds)), - metrics.Liquidations, - metrics.LiquidatableSubaccountIds, - metrics.Count, ) // Early return if there are 0 subaccounts to liquidate. diff --git a/protocol/x/clob/keeper/process_operations.go b/protocol/x/clob/keeper/process_operations.go index 40c6d3f83f..37a9d8ca60 100644 --- a/protocol/x/clob/keeper/process_operations.go +++ b/protocol/x/clob/keeper/process_operations.go @@ -7,7 +7,6 @@ import ( errorsmod "cosmossdk.io/errors" - gometrics "github.com/armon/go-metrics" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" indexerevents "github.com/dydxprotocol/v4-chain/protocol/indexer/events" @@ -551,22 +550,6 @@ func (k Keeper) PersistMatchLiquidationToState( return err } - notionalQuoteQuantums, err := k.perpetualsKeeper.GetNetNotional( - ctx, - matchLiquidation.PerpetualId, - new(big.Int).SetUint64(matchLiquidation.TotalSize), - ) - if err != nil { - return err - } - absNotionalQuoteQuantums := new(big.Int).Abs(notionalQuoteQuantums) - - telemetry.IncrCounterWithLabels( - []string{types.ModuleName, metrics.LiquidationOrderNotionalQuoteQuantums, metrics.DeliverTx}, - metrics.GetMetricValueFromBigInt(absNotionalQuoteQuantums), - matchLiquidation.GetMetricLabels(), - ) - for _, fill := range matchLiquidation.GetFills() { // Fetch the maker order from either short term orders or state. makerOrder, err := k.FetchOrderFromOrderId(ctx, fill.MakerOrderId, ordersMap) @@ -696,21 +679,6 @@ func (k Keeper) PersistMatchDeleveragingToState( err, ) } - - if quoteQuantums, err := k.perpetualsKeeper.GetNetNotional( - ctx, - perpetualId, - new(big.Int).SetUint64(fill.FillAmount), - ); err == nil { - labels := []gometrics.Label{ - metrics.GetLabelForIntValue(metrics.PerpetualId, int(perpetualId)), - } - telemetry.IncrCounterWithLabels( - []string{metrics.ProcessOperations, metrics.Deleveraging, metrics.QuoteQuantums}, - metrics.GetMetricValueFromBigInt(quoteQuantums), - labels, - ) - } } return nil diff --git a/protocol/x/clob/keeper/process_single_match.go b/protocol/x/clob/keeper/process_single_match.go index 071ca2ca50..b5a0408fb7 100644 --- a/protocol/x/clob/keeper/process_single_match.go +++ b/protocol/x/clob/keeper/process_single_match.go @@ -9,7 +9,6 @@ import ( errorsmod "cosmossdk.io/errors" gometrics "github.com/armon/go-metrics" - "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/dydxprotocol/v4-chain/protocol/indexer/off_chain_updates" "github.com/dydxprotocol/v4-chain/protocol/lib" @@ -258,13 +257,13 @@ func (k Keeper) ProcessSingleMatch( } // Stat quote quantums liquidated. - telemetry.IncrCounterWithLabels( + gometrics.AddSampleWithLabels( []string{metrics.Liquidations, metrics.PlacePerpetualLiquidation, metrics.Filled, metrics.QuoteQuantums}, metrics.GetMetricValueFromBigInt(notionalLiquidatedQuoteQuantums), labels, ) // Stat insurance fund delta. - telemetry.IncrCounterWithLabels( + gometrics.AddSampleWithLabels( []string{metrics.Liquidations, metrics.InsuranceFundDelta}, metrics.GetMetricValueFromBigInt(new(big.Int).Abs(takerInsuranceFundDelta)), append(labels, metrics.GetLabelForBoolValue(metrics.Positive, takerInsuranceFundDelta.Sign() == 1)), diff --git a/protocol/x/clob/types/stat_internal_operations.go b/protocol/x/clob/types/stat_internal_operations.go index cbab3e8f40..21eac77480 100644 --- a/protocol/x/clob/types/stat_internal_operations.go +++ b/protocol/x/clob/types/stat_internal_operations.go @@ -2,7 +2,6 @@ package types import ( gometrics "github.com/armon/go-metrics" - "github.com/cosmos/cosmos-sdk/telemetry" "github.com/dydxprotocol/v4-chain/protocol/lib/metrics" satypes "github.com/dydxprotocol/v4-chain/protocol/x/subaccounts/types" ) @@ -160,16 +159,17 @@ func (stats *OperationsStats) EmitStats(abciCallback string) { }, } + labels := []gometrics.Label{ + metrics.GetLabelForStringValue( + metrics.Callback, + abciCallback, + ), + } for _, stat := range statsList { - telemetry.SetGaugeWithLabels( + gometrics.AddSampleWithLabels( stat.keys, stat.value, - []gometrics.Label{ - metrics.GetLabelForStringValue( - metrics.Callback, - abciCallback, - ), - }, + labels, ) } }