Skip to content

Commit 07a8579

Browse files
committed
cardano-node: periodic ledger metrics tracer
ledger metrics 700ms after slot start allow for not running periodic tracers LedgerMetrics with delay, comments and defaults Commented out drepCount and drepMapSize
1 parent 77b69d8 commit 07a8579

File tree

21 files changed

+270
-279
lines changed

21 files changed

+270
-279
lines changed

bench/tx-generator/src/Cardano/Benchmarking/Tracer.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ initialTraceConfig = TraceConfig {
177177
, tcPeerFrequency = Just 2000 -- Every 2 seconds
178178
, tcResourceFrequency = Just 1000 -- Every second
179179
, tcMetricsPrefix = Nothing
180+
, tcLedgerMetricsFrequency = Nothing
180181
}
181182
where
182183
setMaxDetail :: Text -> ([Text], [ConfigOption])

cardano-node/cardano-node.cabal

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ library
115115
Cardano.Node.Tracing.Tracers.Diffusion
116116
Cardano.Node.Tracing.Tracers.ForgingStats
117117
Cardano.Node.Tracing.Tracers.KESInfo
118+
Cardano.Node.Tracing.Tracers.LedgerMetrics
118119
Cardano.Node.Tracing.Tracers.NodeToClient
119120
Cardano.Node.Tracing.Tracers.NodeToNode
120121
Cardano.Node.Tracing.Tracers.NodeVersion
@@ -123,7 +124,6 @@ library
123124
Cardano.Node.Tracing.Tracers.Peer
124125
Cardano.Node.Tracing.Tracers.Resources
125126
Cardano.Node.Tracing.Tracers.Shutdown
126-
Cardano.Node.Tracing.Tracers.StartLeadershipCheck
127127
Cardano.Node.Tracing.Tracers.Startup
128128
Cardano.Node.Types
129129
Cardano.Tracing.Config

cardano-node/src/Cardano/Node/Tracing.hs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ import Cardano.Node.Startup (NodeInfo, NodeStartupInfo, StartupTrace (
1515
import Cardano.Node.Tracing.StateRep (NodeState)
1616
import Cardano.Node.Tracing.Tracers.ConsensusStartupException
1717
(ConsensusStartupException (..))
18-
import Cardano.Node.Tracing.Tracers.Peer (PeerT)
18+
import Cardano.Node.Tracing.Tracers.LedgerMetrics (LedgerMetrics)
1919
import Cardano.Node.Tracing.Tracers.NodeVersion (NodeVersionTrace)
20-
20+
import Cardano.Node.Tracing.Tracers.Peer (PeerT)
2121
import qualified Ouroboros.Consensus.Network.NodeToClient as NodeToClient
2222
import qualified Ouroboros.Consensus.Network.NodeToNode as NodeToNode
2323
import qualified Ouroboros.Consensus.Node.Tracers as Consensus
@@ -57,4 +57,5 @@ data Tracers peer localPeer blk p2p extraState extraDebugState extraFlags extraP
5757
, nodeStateTracer :: !(Tracer IO NodeState)
5858
, resourcesTracer :: !(Tracer IO ResourceStats)
5959
, peersTracer :: !(Tracer IO [PeerT blk])
60+
, ledgerMetricsTracer :: !(Tracer IO LedgerMetrics)
6061
}

cardano-node/src/Cardano/Node/Tracing/API.hs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import Cardano.Node.Tracing
2020
import Cardano.Node.Tracing.DefaultTraceConfig (defaultCardanoConfig)
2121
import Cardano.Node.Tracing.StateRep (NodeState (..))
2222
import Cardano.Node.Tracing.Tracers
23+
import Cardano.Node.Tracing.Tracers.LedgerMetrics
2324
import Cardano.Node.Tracing.Tracers.Peer (startPeerTracer)
2425
import Cardano.Node.Tracing.Tracers.Resources (startResourceTracer)
2526
import Cardano.Node.Types
@@ -86,6 +87,11 @@ initTraceDispatcher nc p networkMagic nodeKernel p2pMode = do
8687
(resourcesTracer tracers)
8788
(fromMaybe 1000 (tcResourceFrequency trConfig))
8889

90+
startLedgerMetricsTracer
91+
(ledgerMetricsTracer tracers)
92+
(fromMaybe 1 (tcLedgerMetricsFrequency trConfig)) -- default is every slot
93+
nodeKernel
94+
8995
startPeerTracer
9096
(peersTracer tracers)
9197
nodeKernel

cardano-node/src/Cardano/Node/Tracing/Consistency.hs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ import Cardano.Node.Tracing.Documentation (docTracersFirstPhase)
2424
import Cardano.Node.Tracing.Formatting ()
2525
import qualified Cardano.Node.Tracing.StateRep as SR
2626
import Cardano.Node.Tracing.Tracers.BlockReplayProgress
27-
import Cardano.Node.Tracing.Tracers.Consensus
2827
import Cardano.Node.Tracing.Tracers.ConsensusStartupException
2928
import Cardano.Node.Tracing.Tracers.Diffusion ()
3029
import Cardano.Node.Tracing.Tracers.KESInfo ()
30+
import Cardano.Node.Tracing.Tracers.LedgerMetrics (LedgerMetrics)
3131
import Cardano.Node.Tracing.Tracers.NodeToClient ()
3232
import Cardano.Node.Tracing.Tracers.NodeToNode ()
3333
import Cardano.Node.Tracing.Tracers.NodeVersion (NodeVersionTrace)
@@ -54,7 +54,8 @@ import Ouroboros.Consensus.MiniProtocol.ChainSync.Client.Jumping as Ju
5454
import Ouroboros.Consensus.MiniProtocol.ChainSync.Server (TraceChainSyncServerEvent)
5555
import Ouroboros.Consensus.MiniProtocol.LocalTxSubmission.Server
5656
(TraceLocalTxSubmissionServerEvent (..))
57-
import Ouroboros.Consensus.Node.GSM (TraceGsmEvent)
57+
import Ouroboros.Consensus.Node.GSM
58+
import Ouroboros.Consensus.Node.Tracers (TraceForgeEvent)
5859
import qualified Ouroboros.Consensus.Protocol.Ledger.HotKey as HotKey
5960
import qualified Ouroboros.Consensus.Storage.ChainDB as ChainDB
6061
import Ouroboros.Network.Block (Point (..), SlotNo, Tip)
@@ -137,6 +138,8 @@ getAllNamespaces =
137138
(allNamespaces :: [Namespace [PeerT blk]])
138139
resourcesNS = map nsGetTuple
139140
(allNamespaces :: [Namespace ResourceStats])
141+
ledgerMetricsNS = map nsGetTuple
142+
(allNamespaces :: [Namespace LedgerMetrics])
140143
startupNS = map (nsGetTuple . nsReplacePrefix ["Startup"])
141144
(allNamespaces :: [Namespace (StartupTrace blk)])
142145
shutdownNS = map (nsGetTuple . nsReplacePrefix ["Shutdown"])
@@ -190,7 +193,7 @@ getAllNamespaces =
190193
mempoolNS = map (nsGetTuple . nsReplacePrefix ["Mempool"])
191194
(allNamespaces :: [Namespace (TraceEventMempool blk)])
192195
forgeNS = map (nsGetTuple . nsReplacePrefix ["Forge", "Loop"])
193-
(allNamespaces :: [Namespace (ForgeTracerType blk)])
196+
(allNamespaces :: [Namespace (TraceForgeEvent blk)])
194197

195198
blockchainTimeNS = map (nsGetTuple . nsReplacePrefix ["BlockchainTime"])
196199
(allNamespaces :: [Namespace (TraceBlockchainTimeEvent RelativeTime)])
@@ -391,6 +394,7 @@ getAllNamespaces =
391394
stateNS
392395
<> peersNS
393396
<> resourcesNS
397+
<> ledgerMetricsNS
394398
<> startupNS
395399
<> shutdownNS
396400
<> nodeVersionNS

cardano-node/src/Cardano/Node/Tracing/Documentation.hs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import Cardano.Node.Tracing.Tracers.ConsensusStartupException
3737
import Cardano.Node.Tracing.Tracers.Diffusion ()
3838
import Cardano.Node.Tracing.Tracers.ForgingStats (ForgingStats)
3939
import Cardano.Node.Tracing.Tracers.KESInfo ()
40+
import Cardano.Node.Tracing.Tracers.LedgerMetrics (LedgerMetrics)
4041
import Cardano.Node.Tracing.Tracers.NodeToClient ()
4142
import Cardano.Node.Tracing.Tracers.NodeToNode ()
4243
import Cardano.Node.Tracing.Tracers.NodeVersion (NodeVersionTrace)
@@ -242,6 +243,10 @@ docTracersFirstPhase condConfigFileName = do
242243
configureTracers configReflection trConfig [resourcesTr]
243244
resourcesTrDoc <- documentTracer (resourcesTr :: Logging.Trace IO ResourceStats)
244245

246+
ledgerMetricsTr <- mkCardanoTracer trBase trForward mbTrEKG []
247+
configureTracers configReflection trConfig [ledgerMetricsTr]
248+
ledgerMetricsTrDoc <- documentTracer (ledgerMetricsTr :: Trace IO LedgerMetrics)
249+
245250
-- Startup tracer
246251
startupTr <- mkCardanoTracer
247252
trBase trForward mbTrEKG
@@ -371,8 +376,7 @@ docTracersFirstPhase condConfigFileName = do
371376
["Forge", "Loop"]
372377
configureTracers configReflection trConfig [forgeTr]
373378
forgeTrDoc <- documentTracer (forgeTr ::
374-
Logging.Trace IO (ForgeTracerType blk))
375-
379+
Logging.Trace IO (Consensus.TraceForgeEvent blk))
376380

377381
forgeTr' <- mkCardanoTracer
378382
trBase trForward mbTrEKG
@@ -754,6 +758,7 @@ docTracersFirstPhase condConfigFileName = do
754758
<> nodeStartupInfoDpDoc
755759
<> stateTrDoc
756760
<> resourcesTrDoc
761+
<> ledgerMetricsTrDoc
757762
<> startupTrDoc
758763
<> shutdownTrDoc
759764
<> nodeVersionDoc

cardano-node/src/Cardano/Node/Tracing/Tracers.hs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import Cardano.Node.Tracing.Tracers.Consensus
3232
import Cardano.Node.Tracing.Tracers.Diffusion ()
3333
import Cardano.Node.Tracing.Tracers.ForgingStats (calcForgeStats)
3434
import Cardano.Node.Tracing.Tracers.KESInfo
35+
import Cardano.Node.Tracing.Tracers.LedgerMetrics ()
3536
import Cardano.Node.Tracing.Tracers.NodeToClient ()
3637
import Cardano.Node.Tracing.Tracers.NodeToNode ()
3738
import Cardano.Node.Tracing.Tracers.NodeVersion (getNodeVersion)
@@ -129,6 +130,9 @@ mkDispatchTracers nodeKernel trBase trForward mbTrEKG trDataPoint trConfig enabl
129130
!resourcesTr <- mkCardanoTracer trBase trForward mbTrEKG []
130131
configureTracers configReflection trConfig [resourcesTr]
131132

133+
!ledgerMetricsTr <- mkCardanoTracer trBase trForward mbTrEKG []
134+
configureTracers configReflection trConfig [ledgerMetricsTr]
135+
132136
!startupTr <- mkCardanoTracer trBase trForward mbTrEKG ["Startup"]
133137
configureTracers configReflection trConfig [startupTr]
134138

@@ -212,6 +216,7 @@ mkDispatchTracers nodeKernel trBase trForward mbTrEKG trDataPoint trConfig enabl
212216
, resourcesTracer = Tracer (traceWith resourcesTr)
213217
, peersTracer = Tracer (traceWith peersTr)
214218
<> Tracer (traceNodePeers nodePeersDP)
219+
, ledgerMetricsTracer = Tracer (traceWith ledgerMetricsTr)
215220
}
216221

217222
mkConsensusTracers :: forall blk.
@@ -230,7 +235,7 @@ mkConsensusTracers :: forall blk.
230235
-> TraceConfig
231236
-> NodeKernelData blk
232237
-> IO (Consensus.Tracers IO (ConnectionId RemoteAddress) (ConnectionId LocalAddress) blk)
233-
mkConsensusTracers configReflection trBase trForward mbTrEKG _trDataPoint trConfig nodeKernel = do
238+
mkConsensusTracers configReflection trBase trForward mbTrEKG _trDataPoint trConfig _nodeKernel = do
234239
!chainSyncClientTr <- mkCardanoTracer
235240
trBase trForward mbTrEKG
236241
["ChainSync", "Client"]
@@ -311,10 +316,9 @@ mkConsensusTracers configReflection trBase trForward mbTrEKG _trDataPoint trConf
311316
["Mempool"]
312317
configureTracers configReflection trConfig [mempoolTr]
313318

314-
!forgeTr <- mkCardanoTracer'
319+
!forgeTr <- mkCardanoTracer
315320
trBase trForward mbTrEKG
316321
["Forge", "Loop"]
317-
(forgeTracerTransform nodeKernel)
318322
configureTracers configReflection trConfig [forgeTr]
319323

320324
!forgeStatsTr <- mkCardanoTracer'
@@ -389,9 +393,9 @@ mkConsensusTracers configReflection trBase trForward mbTrEKG _trDataPoint trConf
389393
, Consensus.mempoolTracer = Tracer $
390394
traceWith mempoolTr
391395
, Consensus.forgeTracer =
392-
Tracer (\(Consensus.TraceLabelCreds _ x) -> traceWith (contramap Left forgeTr) x)
396+
Tracer (\(Consensus.TraceLabelCreds _ x) -> traceWith forgeTr x)
393397
<>
394-
Tracer (\(Consensus.TraceLabelCreds _ x) -> traceWith (contramap Left forgeStatsTr) x)
398+
Tracer (\(Consensus.TraceLabelCreds _ x) -> traceWith forgeStatsTr x)
395399
, Consensus.blockchainTimeTracer = Tracer $
396400
traceWith blockchainTimeTr
397401
, Consensus.keepAliveClientTracer = Tracer $

cardano-node/src/Cardano/Node/Tracing/Tracers/ChainDB.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
module Cardano.Node.Tracing.Tracers.ChainDB
1313
( withAddedToCurrentChainEmptyLimited
14+
, fragmentChainDensity
1415
) where
1516

1617
import Cardano.Logging

cardano-node/src/Cardano/Node/Tracing/Tracers/Consensus.hs

Lines changed: 2 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,7 @@
1414

1515
module Cardano.Node.Tracing.Tracers.Consensus
1616
(
17-
TraceStartLeadershipCheckPlus (..)
18-
, ForgeTracerType
19-
, forgeTracerTransform
20-
, initialClientMetrics
17+
initialClientMetrics
2118
, calculateBlockFetchClientMetrics
2219
, servedBlockLatest
2320
, ClientMetrics
@@ -31,7 +28,6 @@ import Cardano.Node.Tracing.Era.Shelley ()
3128
import Cardano.Node.Tracing.Formatting ()
3229
import Cardano.Node.Tracing.Render
3330
import Cardano.Node.Tracing.Tracers.ConsensusStartupException ()
34-
import Cardano.Node.Tracing.Tracers.StartLeadershipCheck
3531
import Cardano.Protocol.TPraos.OCert (KESPeriod (..))
3632
import Cardano.Slotting.Slot (WithOrigin (..))
3733
import Cardano.Tracing.OrphanInstances.Network (Verbose (..))
@@ -73,7 +69,7 @@ import Ouroboros.Network.TxSubmission.Inbound hiding (txId)
7369
import Ouroboros.Network.TxSubmission.Outbound
7470

7571
import Control.Monad (guard)
76-
import Data.Aeson (ToJSON, Value (Number, String), toJSON, (.=))
72+
import Data.Aeson (ToJSON, Value (..), toJSON, (.=))
7773
import qualified Data.Aeson as Aeson
7874
import Data.Foldable (Foldable (toList))
7975
import Data.Int (Int64)
@@ -1432,102 +1428,6 @@ instance MetaTrace (TraceEventMempool blk) where
14321428
, Namespace [] ["LedgerFound"]
14331429
]
14341430

1435-
--------------------------------------------------------------------------------
1436-
-- ForgeTracerType
1437-
--------------------------------------------------------------------------------
1438-
1439-
instance ( tx ~ GenTx blk
1440-
, ConvertRawHash blk
1441-
, GetHeader blk
1442-
, HasHeader blk
1443-
, HasKESInfo blk
1444-
, LedgerSupportsProtocol blk
1445-
, LedgerSupportsMempool blk
1446-
, SerialiseNodeToNodeConstraints blk
1447-
, HasTxId (GenTx blk)
1448-
, Show (ForgeStateUpdateError blk)
1449-
, Show (CannotForge blk)
1450-
, LogFormatting (CannotForge blk)
1451-
, LogFormatting (ExtValidationError blk)
1452-
, LogFormatting (ForgeStateUpdateError blk))
1453-
=> LogFormatting (ForgeTracerType blk) where
1454-
forMachine dtal (Left i) = forMachine dtal i
1455-
forMachine dtal (Right i) = forMachine dtal i
1456-
forHuman (Left i) = forHumanOrMachine i
1457-
forHuman (Right i) = forHumanOrMachine i
1458-
asMetrics (Left i) = asMetrics i
1459-
asMetrics (Right i) = asMetrics i
1460-
1461-
instance MetaTrace (ForgeTracerType blk) where
1462-
namespaceFor (Left ev) =
1463-
nsCast (namespaceFor ev)
1464-
namespaceFor (Right _ev) =
1465-
Namespace [] ["StartLeadershipCheckPlus"]
1466-
1467-
severityFor (Namespace _ ["StartLeadershipCheckPlus"]) _ = Just
1468-
Info
1469-
severityFor ns (Just (Left ev')) =
1470-
severityFor (nsCast ns) (Just ev')
1471-
severityFor ns Nothing =
1472-
severityFor (nsCast ns :: Namespace (TraceForgeEvent blk)) Nothing
1473-
severityFor _ _ = Nothing
1474-
1475-
detailsFor (Namespace _ ["StartLeadershipCheckPlus"]) _ = Just
1476-
DNormal
1477-
detailsFor ns (Just (Left ev')) =
1478-
detailsFor (nsCast ns) (Just ev')
1479-
detailsFor ns Nothing =
1480-
detailsFor (nsCast ns :: Namespace (TraceForgeEvent blk)) Nothing
1481-
detailsFor _ _ = Nothing
1482-
1483-
privacyFor (Namespace _ ["StartLeadershipCheckPlus"]) _ = Just
1484-
Public
1485-
privacyFor ns (Just (Left ev')) =
1486-
privacyFor (nsCast ns) (Just ev')
1487-
privacyFor ns Nothing =
1488-
privacyFor (nsCast ns :: Namespace (TraceForgeEvent blk)) Nothing
1489-
privacyFor _ _ = Nothing
1490-
1491-
metricsDocFor (Namespace _ ["StartLeadershipCheckPlus"]) =
1492-
[ ("Forge.UtxoSize", "UTxO set size")
1493-
, ("Forge.DelegMapSize", "Delegation map size")
1494-
]
1495-
metricsDocFor ns =
1496-
metricsDocFor (nsCast ns :: Namespace (TraceForgeEvent blk))
1497-
1498-
documentFor (Namespace _ ["StartLeadershipCheckPlus"]) = Just $ mconcat
1499-
[ "We adopted the block we produced, we also trace the transactions"
1500-
, " that were adopted."
1501-
]
1502-
documentFor ns =
1503-
documentFor (nsCast ns :: Namespace (TraceForgeEvent blk))
1504-
1505-
allNamespaces =
1506-
Namespace [] ["StartLeadershipCheckPlus"]
1507-
: map nsCast (allNamespaces :: [Namespace (TraceForgeEvent blk)])
1508-
1509-
--------------------------------------------------------------------------------
1510-
-- TraceStartLeadershipCheck
1511-
--------------------------------------------------------------------------------
1512-
1513-
instance LogFormatting TraceStartLeadershipCheckPlus where
1514-
forMachine _dtal TraceStartLeadershipCheckPlus {..} =
1515-
mconcat [ "kind" .= String "TraceStartLeadershipCheck"
1516-
, "slot" .= toJSON (unSlotNo tsSlotNo)
1517-
, "utxoSize" .= Number (fromIntegral tsUtxoSize)
1518-
, "delegMapSize" .= Number (fromIntegral tsDelegMapSize)
1519-
, "chainDensity" .= Number (fromRational (toRational tsChainDensity))
1520-
]
1521-
forHuman TraceStartLeadershipCheckPlus {..} =
1522-
"Checking for leadership in slot " <> showT (unSlotNo tsSlotNo)
1523-
<> " utxoSize " <> showT tsUtxoSize
1524-
<> " delegMapSize " <> showT tsDelegMapSize
1525-
<> " chainDensity " <> showT tsChainDensity
1526-
asMetrics TraceStartLeadershipCheckPlus {..} =
1527-
[IntM "utxoSize" (fromIntegral tsUtxoSize),
1528-
IntM "delegMapSize" (fromIntegral tsDelegMapSize)]
1529-
1530-
15311431
--------------------------------------------------------------------------------
15321432
-- ForgeEvent Tracer
15331433
--------------------------------------------------------------------------------

0 commit comments

Comments
 (0)