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.

Attachments

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

Caches

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.

Flows

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

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.

Metering

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.

P2P

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.

Other metrics

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.