Node metrics

A Corda node exports a number of metrics for the purpose of monitoring the health of the node via JMX. These metrics are described below.

For more information on how to monitor a node, see Node administration, Node monitoring and logging, and Node monitoring scenarios.

Metric QueryDescription
net.corda:name=AttachmentsA count of the total number of attachments on the node.

A Corda node maintains a number of caches. For each of the metrics below, the name of the cache must be supplied in the component field to show metrics for that cache.

There are two types of caches: size-based and weight-based. Size-based caches are measured in the number of entries in the cache, while weight-based caches are measured in the bytes of memory occupied by the entries.

Metric QueryDescription
net.corda:type=Caches,component=<cache_name>,name=evictionsThe number of items evicted from the cache.
net.corda:type=Caches,component=<cache_name>,name=evictions-weightThe total weight of items evicted from the cache.
net.corda:type=Caches,component=<cache_name>,name=hitsThe number of cache hits.
net.corda:type=Caches,component=<cache_name>,name=loadsA histogram indicating how long loads into the cache are taking.
net.corda:type=Caches,component=<cache_name>,name=loads-failureThe number of items that could not be loaded into the cache.
net.corda:type=Caches,component=<cache_name>,name=loads-successThe number of items successfully loaded into the cache.
net.corda:type=Caches,component=<cache_name>,name=maximum-sizeThe maximum number of entries in the cache.
net.corda:type=Caches,component=<cache_name>,name=missesThe number of cache misses.
net.corda:type=Caches,component=<cache_name>,name=sizeThe current number of entries in the cache.
net.corda:type=Caches,component=<cache_name>,name=sizePercentThe current size of the cache expressed as a percentage of the maximum.
net.corda:type=Caches,component=<cache_name>,name=maximum-weightThe maximum size of the cache, expressed as a total weight.
net.corda:type=Caches,component=<cache_name>,name=weightThe current weight of the cache.
net.corda:type=Caches,component=<cache_name>,name=weightPercentThe current weight of the cache, expressed as a percentage of the maximum.
Metric QueryDescription
net.corda:type=Flows,name=ActiveThreadsThe total number of threads running flows.
net.corda:type=Flows,name=CheckpointVolumeBytesPerSecondCurrentThe current rate at which checkpoint data is being persisted.
net.corda:type=Flows,name=CheckpointVolumeBytesPerSecondHistA histogram indicating the rate at which bytes are being checkpointed.
net.corda:type=Flows,name=Checkpointing RateThe rate at which checkpoint events are occurring.
net.corda:type=Flows,name=ErrorThe total number of flows failed with an error.
net.corda:type=Flows,name=ErrorPerMinuteThe rate at which flows fail with an error.
net.corda:type=Flows,name=FinishedThe total number of completed flows (both successfully and unsuccessfully).
net.corda:type=Flows,name=InFlightThe number of in-flight flows.
net.corda:type=Flows,name=QueueSizeThe current size of the queue for flows waiting to be executed.
net.corda:type=Flows,name=QueueSizeOnInsertA histogram showing the queue size at the point new flows are added.
net.corda:type=Flows,name=StartedThe total number of flows started.
net.corda:type=Flows,name=StartedPerMinuteThe rate at which flows are started.
net.corda:type=Flows,name=SuccessThe total number of successful flows.
net.corda:type=Flows,name=<action_name>A histogram indicating the time taken to execute a particular action. See the following section for more details.

Actions are reified IO actions to execute as part of state machine transitions. These metrics are only exposed when the relevant action gets executed for the first time.

Metric QueryAction description
net.corda:type=Flows,name=Actions.AcknowledgeMessagesAcknowledge messages
net.corda:type=Flows,name=Actions.AddSessionBindingCreate a session binding to allow routing of incoming messages.
net.corda:type=Flows,name=Actions.CancelFlowTimeoutCancel the retry timeout for a flow.
net.corda:type=Flows,name=Actions.CommitTransactionCommit the current database transaction.
net.corda:type=Flows,name=Actions.CreateTransactionCreate a new database transaction.
net.corda:type=Flows,name=Actions.ExecuteAsyncOperationExecute the specified operation.
net.corda:type=Flows,name=Actions.PersistCheckpointPersist a checkpoint.
net.corda:type=Flows,name=Actions.PersistDeduplicationFactsPersist deduplication facts.
net.corda:type=Flows,name=Actions.PropagateErrorsPropagate error messages to sessions.
net.corda:type=Flows,name=Actions.ReleaseSoftLocksRelease soft locks associated with a given ID.
net.corda:type=Flows,name=Actions.RemoveCheckpointRemove a checkpoint.
net.corda:type=Flows,name=Actions.RemoveFlowRemove a flow.
net.corda:type=Flows,name=Actions.RemoveSessionBindingsRemove session bindings.
net.corda:type=Flows,name=Actions.RetryFlowFromSafePointRetry a flow from the last checkpoint. If there is no checkpoint, restart the flow with the same invocation details.
net.corda:type=Flows,name=Actions.RollbackTransactionRoll back the current database transaction.
net.corda:type=Flows,name=Actions.ScheduleEventSchedule an event.
net.corda:type=Flows,name=Actions.ScheduleFlowTimeoutSchedule a flow to be retried if it does not complete within the timeout period specified in the configuration.
net.corda:type=Flows,name=Actions.SendExistingSend a session message to a party with which there has been an established session.
net.corda:type=Flows,name=Actions.SendInitialSend an initial session message to a destination.
net.corda:type=Flows,name=Actions.SendMultipleSend session messages to multiple destinations.
net.corda:type=Flows,name=Actions.SignalFlowHasStartedSignal that a flow is considered as started.
net.corda:type=Flows,name=Actions.SleepUntilSleep until a given moment in time.
net.corda:type=Flows,name=Actions.TrackTransactionTrack a transaction hash and notify the state machine once the corresponding transaction has committed.
Metric QueryDescription
net.corda:type=Metering,name=commandsPersistedThe number of unique sets of commands persisted.
net.corda:type=Metering,name=droppedCountsThe number of signing events not persisted.
net.corda:type=Metering,name=eventsProcessedA histogram indicating the number of events processed on every aggregation interval.
net.corda:type=Metering,name=dataQueueSizeAn instant value of the size of the queue of aggregation events.
net.corda:type=Metering,name=stacksPersistedThe number of unique CorDapp stacks persisted.
net.corda:type=Metering,name=totalCountsThe total number of signing events persisted.
Metric QueryDescription
net.corda:type=P2P,name=ReceiveDurationA histogram measuring latency between the node receiving a P2P message and delivering it to the state machine.
net.corda:type=P2P,name=ReceiveIntervalA histogram measuring the interval between received P2P messages.
net.corda:type=P2P,name=ReceiveMessageSizeA histogram measuring the size of received messages.
net.corda:type=P2P,name=SendLatencyA histogram measuring latency when sending P2P messages, between the message sending and the send acknowledgement by Artemis.
net.corda:type=P2P,name=SendMessageSizeA histogram measuring the size of sent messages.
net.corda:type=P2P,name=SendQueueSizeThe size of the in-memory send queue in the state machine for messages waiting to be sent to Artemis.
net.corda:type=P2P,name=SendQueueSizeOnInsertA histogram measuring the size of the in-memory send queue in the state machine when new messages are added.
Metric QueryDescription
net.corda:type=NetworkParameter,name=UpdateProposedA gauge with a true / false value to indicate that a network parameter update was proposed but it has not been accepted yet.
net.corda:type=Transaction,name=SignDurationA histogram measuring the time taken to sign a transaction.

Was this page helpful?

Thanks for your feedback!

Chat with us

Chat with us on our #docs channel on slack. You can also join a lot of other slack channels there and have access to 1-on-1 communication with members of the R3 team and the online community.

Propose documentation improvements directly

Help us to improve the docs by contributing directly. It's simple - just fork this repository and raise a PR of your own - R3's Technical Writers will review it and apply the relevant suggestions.

We're sorry this page wasn't helpful. Let us know how we can make it better!

Chat with us

Chat with us on our #docs channel on slack. You can also join a lot of other slack channels there and have access to 1-on-1 communication with members of the R3 team and the online community.

Create an issue

Create a new GitHub issue in this repository - submit technical feedback, draw attention to a potential documentation bug, or share ideas for improvement and general feedback.

Propose documentation improvements directly

Help us to improve the docs by contributing directly. It's simple - just fork this repository and raise a PR of your own - R3's Technical Writers will review it and apply the relevant suggestions.