Skip to main content

Check and monitor Sequencer Node health

This page describes how to inspect and understand the current status of a Sequencer Node, and how to continuously monitor it using health checks. See also the generic guide on How to check the status of a Node and monitor its health.

Interactively check Node status

Canton console can be used to interactively inspect the state and get information about a running Sequencer Node. Execute the following command against a sequencer reference of interest.
For a Sequencer Node that has never been connected to a Synchronizer, the output looks like this:
For a healthy state expect the Sequencer Node to report a status similar to:
The components status includes sequencer for the Sequencer Node itself, and db-storage. The latter not being Ok() indicates problems with the database storage backend or connectivity to it. The status also shows the Synchronizer members connected to the Sequencer Node. These members have an active subscription to the Sequencer Node. They can send new submissions to, and read ordered transactions from the Synchronizer.

BFT Orderer peer network status

For a BFT (Byzantine Fault Tolerance) Sequencer Node, you can inspect the connection status to the other peers of its BFT peer network.

Health check endpoints

To monitor the health of a Sequencer Node with external tools, use the Canton Node health check endpoints. Enabling the endpoint is described in the generic guide on How to check the status of a Node and monitor its health. A Sequencer Node exposes a pair of health check endpoints: readiness (accepts traffic) and liveness (does not require a restart), to be used respectively for load balancing and orchestration with tools like Kubernetes. The readiness endpoint corresponds to the health of sequencer (including the BFT Orderer), and the liveness endpoint corresponds to the health of db-storage component in the status command output described above. This means that a fatal failure of the database connection causes a restart of the Sequencer Node.

Liveness watchdog

A Sequencer Node can be configured to automatically exit when it becomes unhealthy. The following configuration enables an internal watchdog service that checks the Sequencer Node health every check-interval seconds and kills the process after kill-delay seconds after the liveness reports the Node unhealthy.
Place the above under canton.sequencers.sequencer.parameters in the configuration file of the Sequencer Node.

Check and monitor Mediator Node health

This page describes how to inspect and understand the current status of a Mediator Node, and how to continuously monitor it using health checks. See also the generic guide on How to check the status of a Node and monitor its health.

Interactively check Node status

Canton console can be used to interactively inspect the state and get information about a running Mediator Node. Execute the following command against a mediator reference of interest.
For a Mediator Node that has never been connected to a Synchronizer, the output looks like this:
For a healthy state expect the Mediator Node to report a status similar to:
The components status includes db-storage for the database storage backend, and sequencer-client. The latter not being Ok() indicates problems with the Synchronizer connectivity. The status also shows Active: true or Active: false for the Mediator Node, which in High Availability (HA) configuration indicates whether this Mediator Node is the active HA replica or not.

Health check endpoints

To monitor the health of a Mediator Node with external tools, use the Canton Node health check endpoints. Enabling the endpoint is described in the generic guide on How to check the status of a Node and monitor its health. A Mediator Node exposes a pair of health check endpoints: readiness (accepts traffic) and liveness (does not require a restart), to be used respectively for load balancing and orchestration with tools like Kubernetes. The readiness endpoint corresponds to the health of the storage backend of the Mediator, and the liveness endpoint corresponds to the health of sequencer-client component in the status command output described above. This means that a fatal failure of the Sequencer connection of the Mediator Node requires a restart of the Mediator Node.

Liveness watchdog

A Mediator Node can be configured to automatically exit when it becomes unhealthy. The following configuration enables an internal watchdog service that checks the Mediator Node health every check-interval seconds and kills the process after kill-delay seconds after the liveness reports the Node unhealthy.
Place the above under canton.mediators.mediator.parameters in the configuration file of the Mediator Node.

Mediator inspection

The Mediator inspection provides access to metadata associated with finalized transactions, also known as verdicts, to give insights on the transactions completed on a Synchronizer. This page describes how to obtain the verdicts from the admin console.

Obtain verdicts from the mediator

Use the verdicts admin command to inspect verdicts:
The command requires a starting record time (exclusive) and a maximum number of verdicts to list. CantonTimestamp.MinValue can be used to obtain all verdicts from the beginning. The output is a list of verdicts. Each verdict contains, among others, its result (accepted, rejected, unspecified), a submitting participant, submitting parties, a finalization time, a record time of the corresponding confirmation request, and metadata of transaction views. For more details on the verdicts admin command, check the reference documentation. To learn more about related concepts, see the Mediator overview. Link to participant docs for general troubleshooting guidelines.

Synchronizer Troubleshooting

Sequencer subscriptions fail for newly onboarded sequencers

Newly onboarded Sequencers only serve events more recent than the “onboarding snapshot” taken during the onboarding. In addition, some events may belong to transactions initiated before a Sequencer was onboarded, but the Sequencer is not in a position to sign such events and replaces them with “tombstones”. If a participant (or mediator) connects to a newly onboarded Sequencer too soon and the subscription encounters a tombstone, the Sequencer subscription aborts with a FAILED_PRECONDITION error specifying InvalidCounter or SEQUENCER_TOMBSTONE_ENCOUNTERED. If this occurs, the participant or mediator should connect to another Sequencer with a longer history of sequenced events before switching to the newly onboarded Sequencer.