Corda 5 Developer Preview 2 is now available.

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 accuracy and performance

Histogram and timer-based metrics use internal data reservoirs to compute percentile-based metric data. By default, the metrics produced by Corda nodes rely on the reservoir implementation provided by the DropWizard metrics library, which is an exponentially decaying reservoir (EDR). These reservoirs sample the data and do not keep a full set of data over time. This can cause outlying data points to be missed if they are not included in the sample set.

Alternatively, a node can be configured to use a time window reservoir by adding the following configuration block to the node.conf file:

enterpriseConfiguration {
    metricsConfiguration {
        reservoirType = TIME_WINDOW // Can also be EDR, but this is the default if this item is absent
        timeWindow = <Duration> // Optional - will default to 5m if not specified

The reservoirType configuration option can be set as either TIME_WINDOW or EDR, and will default to EDR if the configuration block is missing.

Time window data reservoirs record all data points across the specified time window. This ensures that outliers are accurately recorded for metrics calculation, and contain a bias towards more recent results.

Using time window reservoirs increases heap memory usage proportionally to the amount of load on the system.


Metric Query Description
net.corda:name=Attachments A 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 Query Description
net.corda:type=Caches,component=<cache_name>,name=evictions The number of items evicted from the cache.
net.corda:type=Caches,component=<cache_name>,name=evictions-weight The total weight of items evicted from the cache.
net.corda:type=Caches,component=<cache_name>,name=hits The number of cache hits.
net.corda:type=Caches,component=<cache_name>,name=loads A histogram indicating how long loads into the cache are taking.
net.corda:type=Caches,component=<cache_name>,name=loads-failure The number of items that could not be loaded into the cache.
net.corda:type=Caches,component=<cache_name>,name=loads-success The number of items successfully loaded into the cache.
net.corda:type=Caches,component=<cache_name>,name=maximum-size The maximum number of entries in the cache.
net.corda:type=Caches,component=<cache_name>,name=misses The number of cache misses.
net.corda:type=Caches,component=<cache_name>,name=size The current number of entries in the cache.
net.corda:type=Caches,component=<cache_name>,name=sizePercent The current size of the cache expressed as a percentage of the maximum.
net.corda:type=Caches,component=<cache_name>,name=maximum-weight The maximum size of the cache, expressed as a total weight.
net.corda:type=Caches,component=<cache_name>,name=weight The current weight of the cache.
net.corda:type=Caches,component=<cache_name>,name=weightPercent The current weight of the cache, expressed as a percentage of the maximum.


Metric Query Description
net.corda:type=Flows,name=ActiveThreads The total number of threads running flows.
net.corda:type=Flows,name=CheckpointVolumeBytesPerSecondCurrent The current rate at which checkpoint data is being persisted.
net.corda:type=Flows,name=CheckpointVolumeBytesPerSecondHist A histogram indicating the rate at which bytes are being checkpointed.
net.corda:type=Flows,name=Checkpointing Rate The rate at which checkpoint events are occurring.
net.corda:type=Flows,name=Error The total number of flows failed with an error.
net.corda:type=Flows,name=ErrorPerMinute The rate at which flows fail with an error.
net.corda:type=Flows,name=Finished The total number of completed flows (both successfully and unsuccessfully).
net.corda:type=Flows,name=InFlight The number of in-flight flows.
net.corda:type=Flows,name=QueueSize The current size of the queue for flows waiting to be executed.
net.corda:type=Flows,name=QueueSizeOnInsert A histogram showing the queue size at the point new flows are added.
net.corda:type=Flows,name=Started The total number of flows started.
net.corda:type=Flows,name=StartedPerMinute The rate at which flows are started.
net.corda:type=Flows,name=StartupQueueTime This timer measures the time a flow spends queued before it is executed.
net.corda:type=Flows,name=Success The 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 Query Action description
net.corda:type=Flows,name=Actions.AcknowledgeMessages Acknowledge messages
net.corda:type=Flows,name=Actions.AddSessionBinding Create a session binding to allow routing of incoming messages.
net.corda:type=Flows,name=Actions.CancelFlowTimeout Cancel the retry timeout for a flow.
net.corda:type=Flows,name=Actions.CommitTransaction Commit the current database transaction.
net.corda:type=Flows,name=Actions.CreateTransaction Create a new database transaction.
net.corda:type=Flows,name=Actions.ExecuteAsyncOperation Execute the specified operation.
net.corda:type=Flows,name=Actions.PersistCheckpoint Persist a checkpoint.
net.corda:type=Flows,name=Actions.PersistDeduplicationFacts Persist deduplication facts.
net.corda:type=Flows,name=Actions.PropagateErrors Propagate error messages to sessions.
net.corda:type=Flows,name=Actions.ReleaseSoftLocks Release soft locks associated with a given ID.
net.corda:type=Flows,name=Actions.RemoveCheckpoint Remove a checkpoint.
net.corda:type=Flows,name=Actions.RemoveFlow Remove a flow.
net.corda:type=Flows,name=Actions.RemoveSessionBindings Remove session bindings.
net.corda:type=Flows,name=Actions.RetryFlowFromSafePoint Retry 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.RollbackTransaction Roll back the current database transaction.
net.corda:type=Flows,name=Actions.ScheduleEvent Schedule an event.
net.corda:type=Flows,name=Actions.ScheduleFlowTimeout Schedule a flow to be retried if it does not complete within the timeout period specified in the configuration.
net.corda:type=Flows,name=Actions.SendExisting Send a session message to a party with which there has been an established session.
net.corda:type=Flows,name=Actions.SendInitial Send an initial session message to a destination.
net.corda:type=Flows,name=Actions.SendMultiple Send session messages to multiple destinations.
net.corda:type=Flows,name=Actions.SignalFlowHasStarted Signal that a flow is considered as started.
net.corda:type=Flows,name=Actions.SleepUntil Sleep until a given moment in time.
net.corda:type=Flows,name=Actions.TrackTransaction Track a transaction hash and notify the state machine once the corresponding transaction has committed.


Metric Query Description
net.corda:type=Metering,name=commandsPersisted The number of unique sets of commands persisted.
net.corda:type=Metering,name=droppedCounts The number of signing events not persisted.
net.corda:type=Metering,name=eventsProcessed A histogram indicating the number of events processed on every aggregation interval.
net.corda:type=Metering,name=dataQueueSize An instant value of the size of the queue of aggregation events.
net.corda:type=Metering,name=stacksPersisted The number of unique CorDapp stacks persisted.
net.corda:type=Metering,name=totalCounts The total number of signing events persisted.


Metric Query Description
net.corda:type=P2P,name=ReceiveDuration A histogram measuring latency between the node receiving a P2P message and delivering it to the state machine.
net.corda:type=P2P,name=ReceiveInterval A histogram measuring the interval between received P2P messages.
net.corda:type=P2P,name=ReceiveMessageSize A histogram measuring the size of received messages.
net.corda:type=P2P,name=SendLatency A histogram measuring latency when sending P2P messages, between the message sending and the send acknowledgement by Artemis.
net.corda:type=P2P,name=SendMessageSize A histogram measuring the size of sent messages.
net.corda:type=P2P,name=SendQueueSize The size of the in-memory send queue in the state machine for messages waiting to be sent to Artemis.
net.corda:type=P2P,name=SendQueueSizeOnInsert A histogram measuring the size of the in-memory send queue in the state machine when new messages are added.

Other metrics

Metric Query Description
net.corda:type=NetworkParameter,name=UpdateProposed A 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=SignDuration A 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.